diff options
Diffstat (limited to 'lib/Tooling/JSONCompilationDatabase.cpp')
| -rw-r--r-- | lib/Tooling/JSONCompilationDatabase.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/lib/Tooling/JSONCompilationDatabase.cpp b/lib/Tooling/JSONCompilationDatabase.cpp index 2fa5fce279d6..b0feaa229c11 100644 --- a/lib/Tooling/JSONCompilationDatabase.cpp +++ b/lib/Tooling/JSONCompilationDatabase.cpp @@ -157,13 +157,16 @@ std::vector<std::string> unescapeCommandLine(JSONCommandLineSyntax Syntax,    return parser.parse();  } +// This plugin locates a nearby compile_command.json file, and also infers +// compile commands for files not present in the database.  class JSONCompilationDatabasePlugin : public CompilationDatabasePlugin {    std::unique_ptr<CompilationDatabase>    loadFromDirectory(StringRef Directory, std::string &ErrorMessage) override {      SmallString<1024> JSONDatabasePath(Directory);      llvm::sys::path::append(JSONDatabasePath, "compile_commands.json"); -    return JSONCompilationDatabase::loadFromFile( +    auto Base = JSONCompilationDatabase::loadFromFile(          JSONDatabasePath, ErrorMessage, JSONCommandLineSyntax::AutoDetect); +    return Base ? inferMissingCompileCommands(std::move(Base)) : nullptr;    }  }; | 
