1176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// RUN: rm -rf %t
20e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
387d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
40e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
587d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
60e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
787d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
80e2c34f92f00628d48968dfea096d36381f494cbStephen Hines// RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
987d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
10b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar//
11b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
1287d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// 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
13b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
1487d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// 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
15b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
1687d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// 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
17b6d6993e6e6d3daf4d9876794254d20a134e37c2Pirama Arumuga Nainar// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
1887d948ecccffea9e9e37d0d053b246e2d6d6c47bPirama Arumuga Nainar// 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
19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#if defined(F1)
21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "f1.h"
22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
23176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "e2.h" // undefines d1's macro
24176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
25176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#elif defined(D1)
26176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "e1.h" // undefines c1's macro but not d1's macro
27176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "d1.h"
28176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
29176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "e2.h" // undefines d1's macro
30176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#elif defined(D2)
32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "d2.h"
33176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid f() { return assert(true); } // expected-error {{undeclared identifier 'b'}}
34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#else
35176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// e2 undefines d1's macro, which overrides c1's macro.
36176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "e2.h"
37176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "c1.h"
38176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid f() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
39176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
40