// 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 // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DB // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA -DB // RUN: %clang_cc1 -E %t.pcm -o - | FileCheck %s // RUN: %clang_cc1 -frewrite-imports -E %t.pcm -o - | FileCheck %s // CHECK: # {{.*}}a.h // CHECK: # {{.*}}b.h #ifdef B // expected-no-diagnostics #endif #ifdef A #include "a.h" #endif #ifdef B #include "b.h" #endif #if defined(A) || defined(B) #ifndef A_H #error A_H should be defined #endif #else #ifdef A_H #error A_H should not be defined #endif // expected-error@+3 {{must be imported from}} // expected-note@* {{previous declaration}} #endif void use_a() { a(); } #if defined(B) #ifndef B_H #error B_H should be defined #endif #else #ifdef B_H #error B_H should not be defined #endif // expected-error@+3 {{must be imported from}} // expected-note@* {{previous declaration}} #endif void use_b() { b(); }