From 173a4f43a911175643bda81ee675e8d9269056ea Mon Sep 17 00:00:00 2001 From: dim Date: Mon, 24 Nov 2014 09:15:30 +0000 Subject: Vendor import of clang RELEASE_350/final tag r216957 (effectively, 3.5.0 release): https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_350/final@216957 --- lib/Tooling/JSONCompilationDatabase.cpp | 59 ++++++++++++++++----------------- 1 file changed, 29 insertions(+), 30 deletions(-) (limited to 'lib/Tooling/JSONCompilationDatabase.cpp') diff --git a/lib/Tooling/JSONCompilationDatabase.cpp b/lib/Tooling/JSONCompilationDatabase.cpp index 1e33b41..8b8bd29 100644 --- a/lib/Tooling/JSONCompilationDatabase.cpp +++ b/lib/Tooling/JSONCompilationDatabase.cpp @@ -17,7 +17,7 @@ #include "clang/Tooling/Tooling.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/Path.h" -#include "llvm/Support/system_error.h" +#include namespace clang { namespace tooling { @@ -118,15 +118,15 @@ std::vector unescapeCommandLine( } class JSONCompilationDatabasePlugin : public CompilationDatabasePlugin { - virtual CompilationDatabase *loadFromDirectory( - StringRef Directory, std::string &ErrorMessage) { + CompilationDatabase *loadFromDirectory(StringRef Directory, + std::string &ErrorMessage) override { SmallString<1024> JSONDatabasePath(Directory); llvm::sys::path::append(JSONDatabasePath, "compile_commands.json"); - OwningPtr Database( + std::unique_ptr Database( JSONCompilationDatabase::loadFromFile(JSONDatabasePath, ErrorMessage)); if (!Database) - return NULL; - return Database.take(); + return nullptr; + return Database.release(); } }; @@ -144,37 +144,36 @@ volatile int JSONAnchorSource = 0; JSONCompilationDatabase * JSONCompilationDatabase::loadFromFile(StringRef FilePath, std::string &ErrorMessage) { - OwningPtr DatabaseBuffer; - llvm::error_code Result = - llvm::MemoryBuffer::getFile(FilePath, DatabaseBuffer); - if (Result != 0) { + llvm::ErrorOr> DatabaseBuffer = + llvm::MemoryBuffer::getFile(FilePath); + if (std::error_code Result = DatabaseBuffer.getError()) { ErrorMessage = "Error while opening JSON database: " + Result.message(); - return NULL; + return nullptr; } - OwningPtr Database( - new JSONCompilationDatabase(DatabaseBuffer.take())); + std::unique_ptr Database( + new JSONCompilationDatabase(DatabaseBuffer->release())); if (!Database->parse(ErrorMessage)) - return NULL; - return Database.take(); + return nullptr; + return Database.release(); } JSONCompilationDatabase * JSONCompilationDatabase::loadFromBuffer(StringRef DatabaseString, std::string &ErrorMessage) { - OwningPtr DatabaseBuffer( + std::unique_ptr DatabaseBuffer( llvm::MemoryBuffer::getMemBuffer(DatabaseString)); - OwningPtr Database( - new JSONCompilationDatabase(DatabaseBuffer.take())); + std::unique_ptr Database( + new JSONCompilationDatabase(DatabaseBuffer.release())); if (!Database->parse(ErrorMessage)) - return NULL; - return Database.take(); + return nullptr; + return Database.release(); } std::vector JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const { SmallString<128> NativeFilePath; llvm::sys::path::native(FilePath, NativeFilePath); - std::vector PossibleMatches; + std::string Error; llvm::raw_string_ostream ES(Error); StringRef Match = MatchTrie.findEquivalent(NativeFilePath.str(), ES); @@ -235,12 +234,12 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { return false; } llvm::yaml::Node *Root = I->getRoot(); - if (Root == NULL) { + if (!Root) { ErrorMessage = "Error while parsing YAML."; return false; } llvm::yaml::SequenceNode *Array = dyn_cast(Root); - if (Array == NULL) { + if (!Array) { ErrorMessage = "Expected array."; return false; } @@ -248,30 +247,30 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { AE = Array->end(); AI != AE; ++AI) { llvm::yaml::MappingNode *Object = dyn_cast(&*AI); - if (Object == NULL) { + if (!Object) { ErrorMessage = "Expected object."; return false; } - llvm::yaml::ScalarNode *Directory = NULL; - llvm::yaml::ScalarNode *Command = NULL; - llvm::yaml::ScalarNode *File = NULL; + llvm::yaml::ScalarNode *Directory = nullptr; + llvm::yaml::ScalarNode *Command = nullptr; + llvm::yaml::ScalarNode *File = nullptr; for (llvm::yaml::MappingNode::iterator KVI = Object->begin(), KVE = Object->end(); KVI != KVE; ++KVI) { llvm::yaml::Node *Value = (*KVI).getValue(); - if (Value == NULL) { + if (!Value) { ErrorMessage = "Expected value."; return false; } llvm::yaml::ScalarNode *ValueString = dyn_cast(Value); - if (ValueString == NULL) { + if (!ValueString) { ErrorMessage = "Expected string as value."; return false; } llvm::yaml::ScalarNode *KeyString = dyn_cast((*KVI).getKey()); - if (KeyString == NULL) { + if (!KeyString) { ErrorMessage = "Expected strings as key."; return false; } -- cgit v1.1