xref: /minix3/external/bsd/llvm/dist/clang/test/Modules/macro-reexport/macro-reexport.cpp (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -fsyntax-only -DC1 -I. %s -fmodules-cache-path=%t -verify
3 // RUN: %clang_cc1 -fsyntax-only -DC1 -I. -fmodules %s -fmodules-cache-path=%t -verify
4 // RUN: %clang_cc1 -fsyntax-only -DD1 -I. %s -fmodules-cache-path=%t -verify
5 // RUN: %clang_cc1 -fsyntax-only -DD1 -I. -fmodules %s -fmodules-cache-path=%t -verify
6 // RUN: %clang_cc1 -fsyntax-only -DD2 -I. %s -fmodules-cache-path=%t -verify
7 // RUN: %clang_cc1 -fsyntax-only -DD2 -I. -fmodules %s -fmodules-cache-path=%t -verify
8 // RUN: %clang_cc1 -fsyntax-only -DF1 -I. %s -fmodules-cache-path=%t -verify
9 // RUN: %clang_cc1 -fsyntax-only -DF1 -I. -fmodules %s -fmodules-cache-path=%t -verify
10 
11 #if defined(F1)
12 #include "f1.h"
f()13 void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
14 #include "e2.h" // undefines d1's macro
g()15 void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
16 #elif defined(D1)
17 #include "e1.h" // undefines c1's macro but not d1's macro
18 #include "d1.h"
f()19 void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
20 #include "e2.h" // undefines d1's macro
g()21 void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
22 #elif defined(D2)
23 #include "d2.h"
f()24 void f() { return assert(true); } // expected-error {{undeclared identifier 'b'}}
25 #else
26 // e2 undefines d1's macro, which overrides c1's macro.
27 #include "e2.h"
28 #include "c1.h"
f()29 void f() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
30 #endif
31