Strip -showIncludes in getClangStripDependencyFileAdjuster()

Summary:
Follow-up to https://reviews.llvm.org/D78836.

Also consolidate some test cases.

Reviewers: thakis

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D78939
This commit is contained in:
Arthur Eubanks 2020-04-27 09:14:11 -07:00
parent 76f74d15fe
commit dab1326a5a
2 changed files with 8 additions and 30 deletions

View File

@ -98,7 +98,8 @@ ArgumentsAdjuster getClangStripDependencyFileAdjuster() {
StringRef Arg = Args[i];
// All dependency-file options begin with -M. These include -MM,
// -MF, -MG, -MP, -MT, -MQ, -MD, and -MMD.
if (!Arg.startswith("-M") && !Arg.startswith("/showIncludes")) {
if (!Arg.startswith("-M") && !Arg.startswith("/showIncludes") &&
!Arg.startswith("-showIncludes")) {
AdjustedArgs.push_back(Args[i]);
continue;
}

View File

@ -530,9 +530,11 @@ TEST(ClangToolTest, StripDependencyFileAdjuster) {
EXPECT_TRUE(HasFlag("-w"));
}
// Check getClangStripDependencyFileAdjuster strips /showIncludes
// Check getClangStripDependencyFileAdjuster strips /showIncludes and variants
TEST(ClangToolTest, StripDependencyFileAdjusterShowIncludes) {
FixedCompilationDatabase Compilations("/", {"/showIncludes", "-c"});
FixedCompilationDatabase Compilations(
"/", {"/showIncludes", "/showIncludes:user", "-showIncludes",
"-showIncludes:user", "-c"});
ClangTool Tool(Compilations, std::vector<std::string>(1, "/a.cc"));
Tool.mapVirtualFile("/a.cc", "void a() {}");
@ -555,34 +557,9 @@ TEST(ClangToolTest, StripDependencyFileAdjusterShowIncludes) {
return llvm::find(FinalArgs, Flag) != FinalArgs.end();
};
EXPECT_FALSE(HasFlag("/showIncludes"));
EXPECT_TRUE(HasFlag("-c"));
}
// Check getClangStripDependencyFileAdjuster strips /showIncludes:user
TEST(ClangToolTest, StripDependencyFileAdjusterShowIncludesUser) {
FixedCompilationDatabase Compilations("/", {"/showIncludes:user", "-c"});
ClangTool Tool(Compilations, std::vector<std::string>(1, "/a.cc"));
Tool.mapVirtualFile("/a.cc", "void a() {}");
std::unique_ptr<FrontendActionFactory> Action(
newFrontendActionFactory<SyntaxOnlyAction>());
CommandLineArguments FinalArgs;
ArgumentsAdjuster CheckFlagsAdjuster =
[&FinalArgs](const CommandLineArguments &Args, StringRef /*unused*/) {
FinalArgs = Args;
return Args;
};
Tool.clearArgumentsAdjusters();
Tool.appendArgumentsAdjuster(getClangStripDependencyFileAdjuster());
Tool.appendArgumentsAdjuster(CheckFlagsAdjuster);
Tool.run(Action.get());
auto HasFlag = [&FinalArgs](const std::string &Flag) {
return llvm::find(FinalArgs, Flag) != FinalArgs.end();
};
EXPECT_FALSE(HasFlag("/showIncludes:user"));
EXPECT_FALSE(HasFlag("-showIncludes"));
EXPECT_FALSE(HasFlag("-showIncludes:user"));
EXPECT_TRUE(HasFlag("-c"));
}