ArgList = OptTable.ParseArgs(
llvm::makeArrayRef(OriginalArgs).drop_front(), IgnoredCount, IgnoredCount,
/*FlagsToInclude=*/
- IsCLMode ? (driver::options::CLOption | driver::options::CoreOption)
+ IsCLMode ? (driver::options::CLOption | driver::options::CoreOption |
+ driver::options::CLDXCOption)
: /*everything*/ 0,
/*FlagsToExclude=*/driver::options::NoDriverOption |
- (IsCLMode ? 0 : driver::options::CLOption));
+ (IsCLMode
+ ? 0
+ : (driver::options::CLOption | driver::options::CLDXCOption)));
llvm::SmallVector<unsigned, 1> IndicesToDrop;
// Having multiple architecture options (e.g. when building fat binaries)
// Make sure we don't crash.
Mangler.adjust(Args, "foo.cc");
}
+
+TEST(CommandMangler, PathsAsPositional) {
+ const auto Mangler = CommandMangler::forTests();
+ std::vector<std::string> Args = {
+ "clang",
+ "--driver-mode=cl",
+ "-I",
+ "foo",
+ };
+ // Make sure we don't crash.
+ Mangler.adjust(Args, "a.cc");
+ EXPECT_THAT(Args, Contains("foo"));
+}
} // namespace
} // namespace clangd
} // namespace clang
const unsigned OldPos = Pos;
std::unique_ptr<llvm::opt::Arg> Arg(OptTable.ParseOneArg(
ArgList, Pos,
- /* Include */ ClangCLMode ? CoreOption | CLOption : 0,
- /* Exclude */ ClangCLMode ? 0 : CLOption));
+ /* Include */ ClangCLMode ? CoreOption | CLOption | CLDXCOption : 0,
+ /* Exclude */ ClangCLMode ? 0 : CLOption | CLDXCOption));
if (!Arg)
continue;