| // RUN: %clang_cc1 %s -Eonly -Wundef -verify=undef |
| // RUN: %clang_cc1 %s -Eonly -Wundef-prefix=A,BC -verify=undef-prefix |
| // RUN: %clang_cc1 %s -Eonly -Wundef -Wundef-prefix=A,BC -verify=both |
| // RUN: %clang_cc1 %s -Eonly -Werror=undef -verify=undef-error |
| // RUN: %clang_cc1 %s -Eonly -Werror=undef-prefix -Wundef-prefix=A,BC -verify=undef-prefix-error |
| // RUN: %clang_cc1 %s -Eonly -Werror=undef -Wundef-prefix=A,BC -verify=both-error |
| |
| extern int x; |
| |
| #if AB // #1 |
| #endif |
| // undef-warning@#1 {{'AB' is not defined, evaluates to 0}} |
| // undef-prefix-warning@#1 {{'AB' is not defined, evaluates to 0}} |
| // both-warning@#1 {{'AB' is not defined, evaluates to 0}} |
| // undef-error-error@#1 {{'AB' is not defined, evaluates to 0}} |
| // undef-prefix-error-error@#1 {{'AB' is not defined, evaluates to 0}} |
| // both-error-error@#1 {{'AB' is not defined, evaluates to 0}} |
| |
| #if B // #2 |
| #endif |
| // undef-warning@#2 {{'B' is not defined, evaluates to 0}} |
| // no warning for undef-prefix |
| // both-warning@#2 {{'B' is not defined, evaluates to 0}} |
| // undef-error-error@#2 {{'B' is not defined, evaluates to 0}} |
| // no error for undef-prefix |
| // both-error-error@#2 {{'B' is not defined, evaluates to 0}} |
| |
| #define BC 0 |
| #if BC // no warning/error |
| #endif |
| |
| #undef BC |
| #if BC // #3 |
| #endif |
| // undef-warning@#3 {{'BC' is not defined, evaluates to 0}} |
| // undef-prefix-warning@#3 {{'BC' is not defined, evaluates to 0}} |
| // both-warning@#3 {{'BC' is not defined, evaluates to 0}} |
| // undef-error-error@#3 {{'BC' is not defined, evaluates to 0}} |
| // undef-prefix-error-error@#3 {{'BC' is not defined, evaluates to 0}} |
| // both-error-error@#3 {{'BC' is not defined, evaluates to 0}} |
| |
| // Test that #pragma-enabled 'Wundef' can override 'Wundef-prefix' |
| #pragma clang diagnostic error "-Wundef" |
| |
| #if C // #4 |
| #endif |
| // undef-error@#4 {{'C' is not defined, evaluates to 0}} |
| // undef-prefix-error@#4 {{'C' is not defined, evaluates to 0}} |
| // both-error@#4 {{'C' is not defined, evaluates to 0}} |
| // undef-error-error@#4 {{'C' is not defined, evaluates to 0}} |
| // undef-prefix-error-error@#4 {{'C' is not defined, evaluates to 0}} |
| // both-error-error@#4 {{'C' is not defined, evaluates to 0}} |