diff options
| author | Kadir Cetinkaya <kadircet@google.com> | 2019-01-18 09:00:31 +0000 |
|---|---|---|
| committer | Kadir Cetinkaya <kadircet@google.com> | 2019-01-18 09:00:31 +0000 |
| commit | 2eff821bbdd598a4b51684a16846ca14e295fa6a (patch) | |
| tree | 6fca4847d2db321bddae01bb5d33ac17790efa79 /clang/lib | |
| parent | cec38094258c69be4421fae42fdecce97fd4c9da (diff) | |
| download | bcm5719-llvm-2eff821bbdd598a4b51684a16846ca14e295fa6a.tar.gz bcm5719-llvm-2eff821bbdd598a4b51684a16846ca14e295fa6a.zip | |
[tooling] Add a new argument adjuster for deleting plugin related command line args
Summary:
Currently both clangd and clang-tidy makes use of this mechanism so
putting it into tooling so that all tools can make use of it.
Reviewers: ilya-biryukov, sammccall
Subscribers: ioeric, cfe-commits
Differential Revision: https://reviews.llvm.org/D56856
llvm-svn: 351531
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Tooling/ArgumentsAdjusters.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/lib/Tooling/ArgumentsAdjusters.cpp b/clang/lib/Tooling/ArgumentsAdjusters.cpp index c8e9c167422..f5040b8a09d 100644 --- a/clang/lib/Tooling/ArgumentsAdjusters.cpp +++ b/clang/lib/Tooling/ArgumentsAdjusters.cpp @@ -108,5 +108,27 @@ ArgumentsAdjuster combineAdjusters(ArgumentsAdjuster First, }; } +ArgumentsAdjuster getStripPluginsAdjuster() { + return [](const CommandLineArguments &Args, StringRef /*unused*/) { + CommandLineArguments AdjustedArgs; + for (size_t I = 0, E = Args.size(); I != E; I++) { + // According to https://clang.llvm.org/docs/ClangPlugins.html + // plugin arguments are in the form: + // -Xclang {-load, -plugin, -plugin-arg-<plugin-name>, -add-plugin} + // -Xclang <arbitrary-argument> + if (I + 4 < E && Args[I] == "-Xclang" && + (Args[I + 1] == "-load" || Args[I + 1] == "-plugin" || + llvm::StringRef(Args[I + 1]).startswith("-plugin-arg-") || + Args[I + 1] == "-add-plugin") && + Args[I + 2] == "-Xclang") { + I += 3; + continue; + } + AdjustedArgs.push_back(Args[I]); + } + return AdjustedArgs; + }; +} + } // end namespace tooling } // end namespace clang |

