• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 %s -Eonly -Wundef -verify=undef
2 // RUN: %clang_cc1 %s -Eonly -Wundef-prefix=A,BC -verify=undef-prefix
3 // RUN: %clang_cc1 %s -Eonly -Wundef -Wundef-prefix=A,BC -verify=both
4 // RUN: %clang_cc1 %s -Eonly -Werror=undef -verify=undef-error
5 // RUN: %clang_cc1 %s -Eonly -Werror=undef-prefix -Wundef-prefix=A,BC -verify=undef-prefix-error
6 // RUN: %clang_cc1 %s -Eonly -Werror=undef -Wundef-prefix=A,BC -verify=both-error
7 
8 extern int x;
9 
10 #if AB // #1
11 #endif
12 // undef-warning@#1 {{'AB' is not defined, evaluates to 0}}
13 // undef-prefix-warning@#1 {{'AB' is not defined, evaluates to 0}}
14 // both-warning@#1 {{'AB' is not defined, evaluates to 0}}
15 // undef-error-error@#1 {{'AB' is not defined, evaluates to 0}}
16 // undef-prefix-error-error@#1 {{'AB' is not defined, evaluates to 0}}
17 // both-error-error@#1 {{'AB' is not defined, evaluates to 0}}
18 
19 #if B // #2
20 #endif
21 // undef-warning@#2 {{'B' is not defined, evaluates to 0}}
22 // no warning for undef-prefix
23 // both-warning@#2 {{'B' is not defined, evaluates to 0}}
24 // undef-error-error@#2 {{'B' is not defined, evaluates to 0}}
25 // no error for undef-prefix
26 // both-error-error@#2 {{'B' is not defined, evaluates to 0}}
27 
28 #define BC 0
29 #if BC // no warning/error
30 #endif
31 
32 #undef BC
33 #if BC // #3
34 #endif
35 // undef-warning@#3 {{'BC' is not defined, evaluates to 0}}
36 // undef-prefix-warning@#3 {{'BC' is not defined, evaluates to 0}}
37 // both-warning@#3 {{'BC' is not defined, evaluates to 0}}
38 // undef-error-error@#3 {{'BC' is not defined, evaluates to 0}}
39 // undef-prefix-error-error@#3 {{'BC' is not defined, evaluates to 0}}
40 // both-error-error@#3 {{'BC' is not defined, evaluates to 0}}
41 
42 // Test that #pragma-enabled 'Wundef' can override 'Wundef-prefix'
43 #pragma clang diagnostic error "-Wundef"
44 
45 #if C // #4
46 #endif
47 // undef-error@#4 {{'C' is not defined, evaluates to 0}}
48 // undef-prefix-error@#4 {{'C' is not defined, evaluates to 0}}
49 // both-error@#4 {{'C' is not defined, evaluates to 0}}
50 // undef-error-error@#4 {{'C' is not defined, evaluates to 0}}
51 // undef-prefix-error-error@#4 {{'C' is not defined, evaluates to 0}}
52 // both-error-error@#4 {{'C' is not defined, evaluates to 0}}
53