xref: /aosp_15_r20/external/clang/test/Modules/macro-reexport.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: rm -rf %t
2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
3*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
4*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
5*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
6*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
7*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
8*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
9*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
10*67e74705SXin Li //
11*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
12*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DC1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
13*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
14*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
15*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
16*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD2 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
17*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
18*67e74705SXin Li // RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DF1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
19*67e74705SXin Li 
20*67e74705SXin Li #if defined(F1)
21*67e74705SXin Li #include "f1.h"
f()22*67e74705SXin Li void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
23*67e74705SXin Li #include "e2.h" // undefines d1's macro
g()24*67e74705SXin Li void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
25*67e74705SXin Li #elif defined(D1)
26*67e74705SXin Li #include "e1.h" // undefines c1's macro but not d1's macro
27*67e74705SXin Li #include "d1.h"
f()28*67e74705SXin Li void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
29*67e74705SXin Li #include "e2.h" // undefines d1's macro
g()30*67e74705SXin Li void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
31*67e74705SXin Li #elif defined(D2)
32*67e74705SXin Li #include "d2.h"
f()33*67e74705SXin Li void f() { return assert(true); } // expected-error {{undeclared identifier 'b'}}
34*67e74705SXin Li #else
35*67e74705SXin Li // e2 undefines d1's macro, which overrides c1's macro.
36*67e74705SXin Li #include "e2.h"
37*67e74705SXin Li #include "c1.h"
f()38*67e74705SXin Li void f() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
39*67e74705SXin Li #endif
40