xref: /llvm-project/clang/test/Modules/macro-redefinition.cpp (revision 4971ed0fea413c50d1842862a2fc07fc78c97414)
1*4971ed0fSRichard Smith // RUN: %clang_cc1 -fmodules -x c++-module-map %s -fmodule-name=__usr_include -verify
2*4971ed0fSRichard Smith // RUN: %clang_cc1 -fmodules -x c++-module-map %s -fmodule-name=__usr_include -verify -DIMPORT
3*4971ed0fSRichard Smith 
4*4971ed0fSRichard Smith module __usr_include {
5*4971ed0fSRichard Smith   module stddef {}
6*4971ed0fSRichard Smith   module stdlib {}
7*4971ed0fSRichard Smith }
8*4971ed0fSRichard Smith 
9*4971ed0fSRichard Smith #pragma clang module contents
10*4971ed0fSRichard Smith 
11*4971ed0fSRichard Smith // expected-no-diagnostics
12*4971ed0fSRichard Smith 
13*4971ed0fSRichard Smith #pragma clang module begin __usr_include.stddef
14*4971ed0fSRichard Smith   #define NULL 0
15*4971ed0fSRichard Smith #pragma clang module end
16*4971ed0fSRichard Smith 
17*4971ed0fSRichard Smith #pragma clang module begin __usr_include.stdlib
18*4971ed0fSRichard Smith   #ifdef IMPORT
19*4971ed0fSRichard Smith     #pragma clang module import __usr_include.stddef
20*4971ed0fSRichard Smith   #else
21*4971ed0fSRichard Smith     #pragma clang module begin __usr_include.stddef
22*4971ed0fSRichard Smith       #define NULL 0
23*4971ed0fSRichard Smith     #pragma clang module end
24*4971ed0fSRichard Smith   #endif
25*4971ed0fSRichard Smith 
26*4971ed0fSRichard Smith   void *f() { return NULL; } // ok, NULL is visible here
27*4971ed0fSRichard Smith #pragma clang module end
28