1d6509cf2SRichard Smith // RUN: %clang_cc1 -fmodules-ts -fmodule-name=ab -x c++-header %S/Inputs/no-module-map/a.h %S/Inputs/no-module-map/b.h -emit-header-module -o %t.pcm 2d6509cf2SRichard Smith // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify 3d6509cf2SRichard Smith // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA 4d6509cf2SRichard Smith // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DB 5d6509cf2SRichard Smith // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA -DB 6d6509cf2SRichard Smith 78b464f29SRichard Smith // RUN: %clang_cc1 -E %t.pcm -o - | FileCheck %s 88b464f29SRichard Smith // RUN: %clang_cc1 -frewrite-imports -E %t.pcm -o - | FileCheck %s 98b464f29SRichard Smith // CHECK: # {{.*}}a.h 108b464f29SRichard Smith // CHECK: # {{.*}}b.h 118b464f29SRichard Smith 12d6509cf2SRichard Smith #ifdef B 13d6509cf2SRichard Smith // expected-no-diagnostics 14d6509cf2SRichard Smith #endif 15d6509cf2SRichard Smith 16d6509cf2SRichard Smith #ifdef A 17d6509cf2SRichard Smith #include "a.h" 18d6509cf2SRichard Smith #endif 19d6509cf2SRichard Smith 20d6509cf2SRichard Smith #ifdef B 21d6509cf2SRichard Smith #include "b.h" 22d6509cf2SRichard Smith #endif 23d6509cf2SRichard Smith 24d6509cf2SRichard Smith #if defined(A) || defined(B) 25d6509cf2SRichard Smith #ifndef A_H 26d6509cf2SRichard Smith #error A_H should be defined 27d6509cf2SRichard Smith #endif 28d6509cf2SRichard Smith #else 29d6509cf2SRichard Smith #ifdef A_H 30d6509cf2SRichard Smith #error A_H should not be defined 31d6509cf2SRichard Smith #endif 32d6509cf2SRichard Smith // expected-error@+3 {{must be imported from}} 33*0a088eadSRichard Smith // expected-note@* {{declaration}} 34d6509cf2SRichard Smith #endif use_a()35d6509cf2SRichard Smithvoid use_a() { a(); } 36d6509cf2SRichard Smith 37d6509cf2SRichard Smith #if defined(B) 38d6509cf2SRichard Smith #ifndef B_H 39d6509cf2SRichard Smith #error B_H should be defined 40d6509cf2SRichard Smith #endif 41d6509cf2SRichard Smith #else 42d6509cf2SRichard Smith #ifdef B_H 43d6509cf2SRichard Smith #error B_H should not be defined 44d6509cf2SRichard Smith #endif 45d6509cf2SRichard Smith // expected-error@+3 {{must be imported from}} 46*0a088eadSRichard Smith // expected-note@* {{declaration}} 47d6509cf2SRichard Smith #endif use_b()48d6509cf2SRichard Smithvoid use_b() { b(); } 49