diff options
author | Stephen Kelly <steveire@gmail.com> | 2018-08-30 23:25:44 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2018-08-30 23:25:44 +0000 |
commit | 7cbfd8bb2fd12d8442c9794bf7a1bb60a3221f18 (patch) | |
tree | 3af10f425fc6af608963ef340746570fc5347364 /clang-tools-extra/clang-query/tool/ClangQuery.cpp | |
parent | 7dfed0b22c27d69be338a89f9a1e5bf1e9653209 (diff) | |
download | bcm5719-llvm-7cbfd8bb2fd12d8442c9794bf7a1bb60a3221f18.tar.gz bcm5719-llvm-7cbfd8bb2fd12d8442c9794bf7a1bb60a3221f18.zip |
Add preload option to clang-query
Summary: This allows loading a file with pre-defined let commands for example.
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D51261
llvm-svn: 341145
Diffstat (limited to 'clang-tools-extra/clang-query/tool/ClangQuery.cpp')
-rw-r--r-- | clang-tools-extra/clang-query/tool/ClangQuery.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-query/tool/ClangQuery.cpp b/clang-tools-extra/clang-query/tool/ClangQuery.cpp index d0a4a80a370..26a2ccf6f62 100644 --- a/clang-tools-extra/clang-query/tool/ClangQuery.cpp +++ b/clang-tools-extra/clang-query/tool/ClangQuery.cpp @@ -58,6 +58,11 @@ static cl::list<std::string> CommandFiles("f", cl::value_desc("file"), cl::cat(ClangQueryCategory)); +static cl::opt<std::string> PreloadFile( + "preload", + cl::desc("Preload commands from file and start interactive mode"), + cl::value_desc("file"), cl::cat(ClangQueryCategory)); + bool runCommandsInFile(const char *ExeName, std::string const &FileName, QuerySession &QS) { std::ifstream Input(FileName.c_str()); @@ -86,6 +91,12 @@ int main(int argc, const char **argv) { return 1; } + if ((!Commands.empty() || !CommandFiles.empty()) && !PreloadFile.empty()) { + llvm::errs() << argv[0] + << ": cannot specify both -c or -f with --preload\n"; + return 1; + } + ClangTool Tool(OptionsParser.getCompilations(), OptionsParser.getSourcePathList()); std::vector<std::unique_ptr<ASTUnit>> ASTs; @@ -106,6 +117,10 @@ int main(int argc, const char **argv) { return 1; } } else { + if (!PreloadFile.empty()) { + if (runCommandsInFile(argv[0], PreloadFile, QS)) + return 1; + } LineEditor LE("clang-query"); LE.setListCompleter([&QS](StringRef Line, size_t Pos) { return QueryParser::complete(Line, Pos, QS); |