From 6366efeddc60fc245e29c82b00b119d64eb72eea Mon Sep 17 00:00:00 2001 From: Eugene Zelenko Date: Wed, 14 Mar 2018 21:05:51 +0000 Subject: [Tooling] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). llvm-svn: 327573 --- clang/lib/Tooling/JSONCompilationDatabase.cpp | 86 ++++++++++++++------------- 1 file changed, 46 insertions(+), 40 deletions(-) (limited to 'clang/lib/Tooling/JSONCompilationDatabase.cpp') diff --git a/clang/lib/Tooling/JSONCompilationDatabase.cpp b/clang/lib/Tooling/JSONCompilationDatabase.cpp index f9a230e..67c1f5b 100644 --- a/clang/lib/Tooling/JSONCompilationDatabase.cpp +++ b/clang/lib/Tooling/JSONCompilationDatabase.cpp @@ -1,4 +1,4 @@ -//===--- JSONCompilationDatabase.cpp - ------------------------------------===// +//===- JSONCompilationDatabase.cpp ----------------------------------------===// // // The LLVM Compiler Infrastructure // @@ -12,18 +12,34 @@ //===----------------------------------------------------------------------===// #include "clang/Tooling/JSONCompilationDatabase.h" +#include "clang/Basic/LLVM.h" #include "clang/Tooling/CompilationDatabase.h" #include "clang/Tooling/CompilationDatabasePluginRegistry.h" -#include "clang/Tooling/Tooling.h" +#include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Triple.h" #include "llvm/Support/Allocator.h" +#include "llvm/Support/Casting.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ErrorOr.h" +#include "llvm/Support/Host.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/StringSaver.h" +#include "llvm/Support/YAMLParser.h" +#include "llvm/Support/raw_ostream.h" +#include +#include +#include #include +#include +#include +#include -namespace clang { -namespace tooling { +using namespace clang; +using namespace tooling; namespace { @@ -151,17 +167,23 @@ class JSONCompilationDatabasePlugin : public CompilationDatabasePlugin { } }; -} // end namespace +} // namespace // Register the JSONCompilationDatabasePlugin with the // CompilationDatabasePluginRegistry using this statically initialized variable. static CompilationDatabasePluginRegistry::Add X("json-compilation-database", "Reads JSON formatted compilation databases"); +namespace clang { +namespace tooling { + // This anchor is used to force the linker to link in the generated object file // and thus register the JSONCompilationDatabasePlugin. volatile int JSONAnchorSource = 0; +} // namespace tooling +} // namespace clang + std::unique_ptr JSONCompilationDatabase::loadFromFile(StringRef FilePath, std::string &ErrorMessage, @@ -201,11 +223,10 @@ JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const { llvm::raw_string_ostream ES(Error); StringRef Match = MatchTrie.findEquivalent(NativeFilePath, ES); if (Match.empty()) - return std::vector(); - llvm::StringMap< std::vector >::const_iterator - CommandsRefI = IndexByFile.find(Match); + return {}; + const auto CommandsRefI = IndexByFile.find(Match); if (CommandsRefI == IndexByFile.end()) - return std::vector(); + return {}; std::vector Commands; getCommands(CommandsRefI->getValue(), Commands); return Commands; @@ -214,15 +235,8 @@ JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const { std::vector JSONCompilationDatabase::getAllFiles() const { std::vector Result; - - llvm::StringMap< std::vector >::const_iterator - CommandsRefI = IndexByFile.begin(); - const llvm::StringMap< std::vector >::const_iterator - CommandsRefEnd = IndexByFile.end(); - for (; CommandsRefI != CommandsRefEnd; ++CommandsRefI) { - Result.push_back(CommandsRefI->first().str()); - } - + for (const auto &CommandRef : IndexByFile) + Result.push_back(CommandRef.first().str()); return Result; } @@ -237,28 +251,26 @@ static std::vector nodeToCommandLine(JSONCommandLineSyntax Syntax, const std::vector &Nodes) { SmallString<1024> Storage; - if (Nodes.size() == 1) { + if (Nodes.size() == 1) return unescapeCommandLine(Syntax, Nodes[0]->getValue(Storage)); - } std::vector Arguments; - for (auto *Node : Nodes) { + for (const auto *Node : Nodes) Arguments.push_back(Node->getValue(Storage)); - } return Arguments; } void JSONCompilationDatabase::getCommands( ArrayRef CommandsRef, std::vector &Commands) const { - for (int I = 0, E = CommandsRef.size(); I != E; ++I) { + for (const auto &CommandRef : CommandsRef) { SmallString<8> DirectoryStorage; SmallString<32> FilenameStorage; SmallString<32> OutputStorage; - auto Output = std::get<3>(CommandsRef[I]); + auto Output = std::get<3>(CommandRef); Commands.emplace_back( - std::get<0>(CommandsRef[I])->getValue(DirectoryStorage), - std::get<1>(CommandsRef[I])->getValue(FilenameStorage), - nodeToCommandLine(Syntax, std::get<2>(CommandsRef[I])), + std::get<0>(CommandRef)->getValue(DirectoryStorage), + std::get<1>(CommandRef)->getValue(FilenameStorage), + nodeToCommandLine(Syntax, std::get<2>(CommandRef)), Output ? Output->getValue(OutputStorage) : ""); } } @@ -274,13 +286,13 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { ErrorMessage = "Error while parsing YAML."; return false; } - llvm::yaml::SequenceNode *Array = dyn_cast(Root); + auto *Array = dyn_cast(Root); if (!Array) { ErrorMessage = "Expected array."; return false; } - for (auto& NextObject : *Array) { - llvm::yaml::MappingNode *Object = dyn_cast(&NextObject); + for (auto &NextObject : *Array) { + auto *Object = dyn_cast(&NextObject); if (!Object) { ErrorMessage = "Expected object."; return false; @@ -290,8 +302,7 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { llvm::yaml::ScalarNode *File = nullptr; llvm::yaml::ScalarNode *Output = nullptr; for (auto& NextKeyValue : *Object) { - llvm::yaml::ScalarNode *KeyString = - dyn_cast(NextKeyValue.getKey()); + auto *KeyString = dyn_cast(NextKeyValue.getKey()); if (!KeyString) { ErrorMessage = "Expected strings as key."; return false; @@ -303,10 +314,8 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { ErrorMessage = "Expected value."; return false; } - llvm::yaml::ScalarNode *ValueString = - dyn_cast(Value); - llvm::yaml::SequenceNode *SequenceString = - dyn_cast(Value); + auto *ValueString = dyn_cast(Value); + auto *SequenceString = dyn_cast(Value); if (KeyValue == "arguments" && !SequenceString) { ErrorMessage = "Expected sequence as value."; return false; @@ -319,7 +328,7 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { } else if (KeyValue == "arguments") { Command = std::vector(); for (auto &Argument : *SequenceString) { - auto Scalar = dyn_cast(&Argument); + auto *Scalar = dyn_cast(&Argument); if (!Scalar) { ErrorMessage = "Only strings are allowed in 'arguments'."; return false; @@ -370,6 +379,3 @@ bool JSONCompilationDatabase::parse(std::string &ErrorMessage) { } return true; } - -} // end namespace tooling -} // end namespace clang -- cgit v1.1