[clang-tools-extra] [clang-tidy] Fix handling --driver-mode= (PR #66553)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 15 20:22:26 PDT 2023
================
@@ -525,8 +527,95 @@ static bool verifyFileExtensions(
return AnyInvalid;
}
+static SmallString<256> makeAbsolute(llvm::StringRef Input) {
+ if (Input.empty())
+ return {};
+ SmallString<256> AbsolutePath(Input);
+ if (std::error_code EC = llvm::sys::fs::make_absolute(AbsolutePath)) {
+ llvm::errs() << "Can't make absolute path from " << Input << ": "
+ << EC.message() << "\n";
+ }
+ return AbsolutePath;
+}
+
+static llvm::IntrusiveRefCntPtr<vfs::OverlayFileSystem> createBaseFS() {
+ llvm::IntrusiveRefCntPtr<vfs::OverlayFileSystem> BaseFS(
+ new vfs::OverlayFileSystem(vfs::getRealFileSystem()));
+
+ if (!VfsOverlay.empty()) {
+ IntrusiveRefCntPtr<vfs::FileSystem> VfsFromFile =
+ getVfsFromFile(VfsOverlay, BaseFS);
+ if (!VfsFromFile)
+ return nullptr;
+ BaseFS->pushOverlay(std::move(VfsFromFile));
+ }
+ return BaseFS;
+}
+
+static llvm::Expected<CommonOptionsParser>
+recreateOptionsParserIfNeeded(llvm::ArrayRef<const char *> Args,
+ llvm::Expected<CommonOptionsParser> OptionsParser,
+ const ClangTidyOptions &EffectiveOptions) {
+
+ auto DoubleDashIt = std::find(Args.begin(), Args.end(), StringRef("--"));
+ if (DoubleDashIt == Args.end() || Args.empty() ||
+ Args.back() == StringRef("--"))
+ return OptionsParser;
+
+ auto IsDriverMode = [](StringRef Argument) {
+ return Argument.startswith("--driver-mode=");
+ };
+
+ if (Args.end() !=
+ std::find_if(std::next(DoubleDashIt), Args.end(), IsDriverMode))
+ return OptionsParser;
+
+ std::vector<std::string> CommandArguments(std::next(DoubleDashIt),
----------------
EugeneZelenko wrote:
Please include `iterator`, `string` and `vector`.
https://github.com/llvm/llvm-project/pull/66553
More information about the cfe-commits
mailing list