diff options
Diffstat (limited to 'test/PCH/macro-redef.c')
-rw-r--r-- | test/PCH/macro-redef.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/PCH/macro-redef.c b/test/PCH/macro-redef.c new file mode 100644 index 000000000000..7e25d7f5a2f8 --- /dev/null +++ b/test/PCH/macro-redef.c @@ -0,0 +1,28 @@ +// RUN: %clang_cc1 %s -emit-pch -o %t1.pch -verify +// RUN: %clang_cc1 %s -emit-pch -o %t2.pch -include-pch %t1.pch -verify +// RUN: %clang_cc1 -fsyntax-only %s -include-pch %t2.pch -verify + +// Test that a redefinition inside the PCH won't manifest as an ambiguous macro. +// rdar://13016031 + +#ifndef HEADER1 +#define HEADER1 + +#define M1 0 // expected-note {{previous}} +#define M1 1 // expected-warning {{redefined}} + +#define M2 3 + +#elif !defined(HEADER2) +#define HEADER2 + +#define M2 4 // expected-warning {{redefined}} + // expected-note@-6 {{previous}} + +#else + +// Use the error to verify it was parsed. +int x = M1; // expected-note {{previous}} +int x = M2; // expected-error {{redefinition}} + +#endif |