blob: 4e825a07bd803b2b877702788e23aa58161a93f2 [file] [log] [blame]
Richard Smith999500a2015-01-22 23:07:47 +00001// RUN: rm -rf %t
2// RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +00003// RUN: %clang_cc1 -fsyntax-only -DC1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
Richard Smith999500a2015-01-22 23:07:47 +00004// RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +00005// RUN: %clang_cc1 -fsyntax-only -DD1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
Richard Smith999500a2015-01-22 23:07:47 +00006// RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +00007// RUN: %clang_cc1 -fsyntax-only -DD2 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
Richard Smith999500a2015-01-22 23:07:47 +00008// RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +00009// RUN: %clang_cc1 -fsyntax-only -DF1 -I%S/Inputs/macro-reexport -fmodules -fimplicit-module-maps %s -fmodules-cache-path=%t -verify
Richard Smithee977932015-05-01 21:22:17 +000010//
11// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DC1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +000012// 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
Richard Smithee977932015-05-01 21:22:17 +000013// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +000014// 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
Richard Smithee977932015-05-01 21:22:17 +000015// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DD2 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +000016// 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
Richard Smithee977932015-05-01 21:22:17 +000017// RUN: %clang_cc1 -fmodules-local-submodule-visibility -fsyntax-only -DF1 -I%S/Inputs/macro-reexport %s -fmodules-cache-path=%t -verify
Richard Smith47972af2015-06-16 00:08:24 +000018// 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
Richard Smith999500a2015-01-22 23:07:47 +000019
20#if defined(F1)
21#include "f1.h"
22void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
23#include "e2.h" // undefines d1's macro
24void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
25#elif defined(D1)
26#include "e1.h" // undefines c1's macro but not d1's macro
27#include "d1.h"
28void f() { return assert(true); } // expected-error {{undeclared identifier 'd'}}
29#include "e2.h" // undefines d1's macro
30void g() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
31#elif defined(D2)
32#include "d2.h"
33void f() { return assert(true); } // expected-error {{undeclared identifier 'b'}}
34#else
35// e2 undefines d1's macro, which overrides c1's macro.
36#include "e2.h"
37#include "c1.h"
38void f() { return assert(true); } // expected-error {{undeclared identifier 'assert'}}
39#endif