[clang][cli] Allow users to specify a conditional to prevent parsing options with MarshallingInfo
Depends on D84189 & D93540. Reviewed By: Bigcheese Differential Revision: https://reviews.llvm.org/D84674
This commit is contained in:
@@ -448,6 +448,68 @@ TEST_F(CommandLineTest, StringVectorMultiple) {
|
||||
ASSERT_EQ(count(GeneratedArgs, StringRef("-fmodule-map-file=b")), 1);
|
||||
}
|
||||
|
||||
// A flag that should be parsed only if a condition is met.
|
||||
|
||||
TEST_F(CommandLineTest, ConditionalParsingIfFalseFlagNotPresent) {
|
||||
const char *Args[] = {""};
|
||||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
ASSERT_FALSE(Invocation.getLangOpts()->SYCL);
|
||||
ASSERT_EQ(Invocation.getLangOpts()->getSYCLVersion(), LangOptions::SYCL_None);
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fsycl"))));
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(HasSubstr("-sycl-std="))));
|
||||
}
|
||||
|
||||
TEST_F(CommandLineTest, ConditionalParsingIfFalseFlagPresent) {
|
||||
const char *Args[] = {"-sycl-std=2017"};
|
||||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
ASSERT_FALSE(Invocation.getLangOpts()->SYCL);
|
||||
ASSERT_EQ(Invocation.getLangOpts()->getSYCLVersion(), LangOptions::SYCL_None);
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fsycl"))));
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(HasSubstr("-sycl-std="))));
|
||||
}
|
||||
|
||||
TEST_F(CommandLineTest, ConditionalParsingIfTrueFlagNotPresent) {
|
||||
const char *Args[] = {"-fsycl"};
|
||||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
ASSERT_TRUE(Invocation.getLangOpts()->SYCL);
|
||||
ASSERT_EQ(Invocation.getLangOpts()->getSYCLVersion(), LangOptions::SYCL_None);
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fsycl")));
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(HasSubstr("-sycl-std="))));
|
||||
}
|
||||
|
||||
TEST_F(CommandLineTest, ConditionalParsingIfTrueFlagPresent) {
|
||||
const char *Args[] = {"-fsycl", "-sycl-std=2017"};
|
||||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
ASSERT_TRUE(Invocation.getLangOpts()->SYCL);
|
||||
ASSERT_EQ(Invocation.getLangOpts()->getSYCLVersion(), LangOptions::SYCL_2017);
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fsycl")));
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq("-sycl-std=2017")));
|
||||
}
|
||||
|
||||
// Wide integer option.
|
||||
|
||||
TEST_F(CommandLineTest, WideIntegerHighValue) {
|
||||
|
||||
Reference in New Issue
Block a user