================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits