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