aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/Frontend/CompilerInvocationTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/Frontend/CompilerInvocationTest.cpp')
-rw-r--r--clang/unittests/Frontend/CompilerInvocationTest.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/clang/unittests/Frontend/CompilerInvocationTest.cpp b/clang/unittests/Frontend/CompilerInvocationTest.cpp
index 8efba9c..268f0d0 100644
--- a/clang/unittests/Frontend/CompilerInvocationTest.cpp
+++ b/clang/unittests/Frontend/CompilerInvocationTest.cpp
@@ -695,4 +695,49 @@ TEST_F(CommandLineTest, DiagnosticOptionPresent) {
ASSERT_THAT(GeneratedArgs, ContainsN(StrEq("-verify=xyz"), 1));
}
+
+// Option default depends on language standard.
+
+TEST_F(CommandLineTest, DigraphsImplied) {
+ const char *Args[] = {""};
+
+ ASSERT_TRUE(CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags));
+ ASSERT_TRUE(Invocation.getLangOpts()->Digraphs);
+
+ Invocation.generateCC1CommandLine(GeneratedArgs, *this);
+ ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fno-digraphs"))));
+ ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fdigraphs"))));
+}
+
+TEST_F(CommandLineTest, DigraphsDisabled) {
+ const char *Args[] = {"-fno-digraphs"};
+
+ ASSERT_TRUE(CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags));
+ ASSERT_FALSE(Invocation.getLangOpts()->Digraphs);
+
+ Invocation.generateCC1CommandLine(GeneratedArgs, *this);
+ ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fno-digraphs")));
+ ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fdigraphs"))));
+}
+
+TEST_F(CommandLineTest, DigraphsNotImplied) {
+ const char *Args[] = {"-std=c89"};
+
+ ASSERT_TRUE(CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags));
+ ASSERT_FALSE(Invocation.getLangOpts()->Digraphs);
+
+ Invocation.generateCC1CommandLine(GeneratedArgs, *this);
+ ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fno-digraphs"))));
+ ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fdigraphs"))));
+}
+
+TEST_F(CommandLineTest, DigraphsEnabled) {
+ const char *Args[] = {"-std=c89", "-fdigraphs"};
+
+ ASSERT_TRUE(CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags));
+ ASSERT_TRUE(Invocation.getLangOpts()->Digraphs);
+
+ Invocation.generateCC1CommandLine(GeneratedArgs, *this);
+ ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fdigraphs")));
+}
} // anonymous namespace