diff options
author | Eugene Zelenko <eugene.zelenko@gmail.com> | 2018-03-14 21:05:51 +0000 |
---|---|---|
committer | Eugene Zelenko <eugene.zelenko@gmail.com> | 2018-03-14 21:05:51 +0000 |
commit | aace2861ee56dc73aeb3911bd0b4eee432c4e54a (patch) | |
tree | ddfb41d53f1dd91666efc13104632cad2700f7ec /lib/Tooling/JSONCompilationDatabase.cpp | |
parent | bd35f7f0177f8422ceecf6159dac3ec10682da1f (diff) | |
download | clang-aace2861ee56dc73aeb3911bd0b4eee432c4e54a.tar.gz |
[Tooling] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@327573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Tooling/JSONCompilationDatabase.cpp')
-rw-r--r-- | lib/Tooling/JSONCompilationDatabase.cpp | 86 |
1 files changed, 46 insertions, 40 deletions
diff --git a/lib/Tooling/JSONCompilationDatabase.cpp b/lib/Tooling/JSONCompilationDatabase.cpp index f9a230eb63..67c1f5b220 100644 --- a/lib/Tooling/JSONCompilationDatabase.cpp +++ b/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 <cassert> +#include <memory> +#include <string> #include <system_error> +#include <tuple> +#include <utility> +#include <vector> -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<JSONCompilationDatabasePlugin> 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> 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<CompileCommand>(); - llvm::StringMap< std::vector<CompileCommandRef> >::const_iterator - CommandsRefI = IndexByFile.find(Match); + return {}; + const auto CommandsRefI = IndexByFile.find(Match); if (CommandsRefI == IndexByFile.end()) - return std::vector<CompileCommand>(); + return {}; std::vector<CompileCommand> Commands; getCommands(CommandsRefI->getValue(), Commands); return Commands; @@ -214,15 +235,8 @@ JSONCompilationDatabase::getCompileCommands(StringRef FilePath) const { std::vector<std::string> JSONCompilationDatabase::getAllFiles() const { std::vector<std::string> Result; - - llvm::StringMap< std::vector<CompileCommandRef> >::const_iterator - CommandsRefI = IndexByFile.begin(); - const llvm::StringMap< std::vector<CompileCommandRef> >::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<std::string> nodeToCommandLine(JSONCommandLineSyntax Syntax, const std::vector<llvm::yaml::ScalarNode *> &Nodes) { SmallString<1024> Storage; - if (Nodes.size() == 1) { + if (Nodes.size() == 1) return unescapeCommandLine(Syntax, Nodes[0]->getValue(Storage)); - } std::vector<std::string> Arguments; - for (auto *Node : Nodes) { + for (const auto *Node : Nodes) Arguments.push_back(Node->getValue(Storage)); - } return Arguments; } void JSONCompilationDatabase::getCommands( ArrayRef<CompileCommandRef> CommandsRef, std::vector<CompileCommand> &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<llvm::yaml::SequenceNode>(Root); + auto *Array = dyn_cast<llvm::yaml::SequenceNode>(Root); if (!Array) { ErrorMessage = "Expected array."; return false; } - for (auto& NextObject : *Array) { - llvm::yaml::MappingNode *Object = dyn_cast<llvm::yaml::MappingNode>(&NextObject); + for (auto &NextObject : *Array) { + auto *Object = dyn_cast<llvm::yaml::MappingNode>(&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<llvm::yaml::ScalarNode>(NextKeyValue.getKey()); + auto *KeyString = dyn_cast<llvm::yaml::ScalarNode>(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<llvm::yaml::ScalarNode>(Value); - llvm::yaml::SequenceNode *SequenceString = - dyn_cast<llvm::yaml::SequenceNode>(Value); + auto *ValueString = dyn_cast<llvm::yaml::ScalarNode>(Value); + auto *SequenceString = dyn_cast<llvm::yaml::SequenceNode>(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<llvm::yaml::ScalarNode *>(); for (auto &Argument : *SequenceString) { - auto Scalar = dyn_cast<llvm::yaml::ScalarNode>(&Argument); + auto *Scalar = dyn_cast<llvm::yaml::ScalarNode>(&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 |