From cfca06d7963fa0909f90483b42a6d7d194d01e08 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 26 Jul 2020 19:36:28 +0000 Subject: Vendor import of llvm-project master 2e10b7a39b9, the last commit before the llvmorg-12-init tag, from which release/11.x was branched. --- clang/lib/Tooling/CompilationDatabase.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'clang/lib/Tooling/CompilationDatabase.cpp') diff --git a/clang/lib/Tooling/CompilationDatabase.cpp b/clang/lib/Tooling/CompilationDatabase.cpp index c453e8d7df19..2b4c26dab96f 100644 --- a/clang/lib/Tooling/CompilationDatabase.cpp +++ b/clang/lib/Tooling/CompilationDatabase.cpp @@ -64,16 +64,14 @@ std::unique_ptr CompilationDatabase::loadFromDirectory(StringRef BuildDirectory, std::string &ErrorMessage) { llvm::raw_string_ostream ErrorStream(ErrorMessage); - for (CompilationDatabasePluginRegistry::iterator - It = CompilationDatabasePluginRegistry::begin(), - Ie = CompilationDatabasePluginRegistry::end(); - It != Ie; ++It) { + for (const CompilationDatabasePluginRegistry::entry &Database : + CompilationDatabasePluginRegistry::entries()) { std::string DatabaseErrorMessage; - std::unique_ptr Plugin(It->instantiate()); + std::unique_ptr Plugin(Database.instantiate()); if (std::unique_ptr DB = Plugin->loadFromDirectory(BuildDirectory, DatabaseErrorMessage)) return DB; - ErrorStream << It->getName() << ": " << DatabaseErrorMessage << "\n"; + ErrorStream << Database.getName() << ": " << DatabaseErrorMessage << "\n"; } return nullptr; } @@ -164,7 +162,7 @@ private: case driver::Action::InputClass: if (Collect) { const auto *IA = cast(A); - Inputs.push_back(IA->getInputArg().getSpelling()); + Inputs.push_back(std::string(IA->getInputArg().getSpelling())); } break; @@ -233,7 +231,7 @@ std::string GetClangToolCommand() { SmallString<128> ClangToolPath; ClangToolPath = llvm::sys::path::parent_path(ClangExecutable); llvm::sys::path::append(ClangToolPath, "clang-tool"); - return ClangToolPath.str(); + return std::string(ClangToolPath.str()); } } // namespace @@ -368,8 +366,14 @@ FixedCompilationDatabase::loadFromFile(StringRef Path, std::string &ErrorMsg) { ErrorMsg = "Error while opening fixed database: " + Result.message(); return nullptr; } - std::vector Args{llvm::line_iterator(**File), - llvm::line_iterator()}; + std::vector Args; + for (llvm::StringRef Line : + llvm::make_range(llvm::line_iterator(**File), llvm::line_iterator())) { + // Stray whitespace is almost certainly unintended. + Line = Line.trim(); + if (!Line.empty()) + Args.push_back(Line.str()); + } return std::make_unique( llvm::sys::path::parent_path(Path), std::move(Args)); } @@ -387,8 +391,8 @@ FixedCompilationDatabase(Twine Directory, ArrayRef CommandLine) { std::vector FixedCompilationDatabase::getCompileCommands(StringRef FilePath) const { std::vector Result(CompileCommands); - Result[0].CommandLine.push_back(FilePath); - Result[0].Filename = FilePath; + Result[0].CommandLine.push_back(std::string(FilePath)); + Result[0].Filename = std::string(FilePath); return Result; } -- cgit v1.2.3