Richard Smith | d6509cf | 2018-09-15 01:21:15 +0000 | [diff] [blame] | 1 | // 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 |
| 2 | // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify |
| 3 | // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA |
| 4 | // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DB |
| 5 | // RUN: %clang_cc1 -fmodules-ts -fmodule-file=%t.pcm %s -I%S/Inputs/no-module-map -verify -DA -DB |
| 6 | |
Richard Smith | 8b464f2 | 2018-09-15 01:21:18 +0000 | [diff] [blame^] | 7 | // RUN: %clang_cc1 -E %t.pcm -o - | FileCheck %s |
| 8 | // RUN: %clang_cc1 -frewrite-imports -E %t.pcm -o - | FileCheck %s |
| 9 | // CHECK: # {{.*}}a.h |
| 10 | // CHECK: # {{.*}}b.h |
| 11 | |
Richard Smith | d6509cf | 2018-09-15 01:21:15 +0000 | [diff] [blame] | 12 | #ifdef B |
| 13 | // expected-no-diagnostics |
| 14 | #endif |
| 15 | |
| 16 | #ifdef A |
| 17 | #include "a.h" |
| 18 | #endif |
| 19 | |
| 20 | #ifdef B |
| 21 | #include "b.h" |
| 22 | #endif |
| 23 | |
| 24 | #if defined(A) || defined(B) |
| 25 | #ifndef A_H |
| 26 | #error A_H should be defined |
| 27 | #endif |
| 28 | #else |
| 29 | #ifdef A_H |
| 30 | #error A_H should not be defined |
| 31 | #endif |
| 32 | // expected-error@+3 {{must be imported from}} |
| 33 | // expected-note@* {{previous declaration}} |
| 34 | #endif |
| 35 | void use_a() { a(); } |
| 36 | |
| 37 | #if defined(B) |
| 38 | #ifndef B_H |
| 39 | #error B_H should be defined |
| 40 | #endif |
| 41 | #else |
| 42 | #ifdef B_H |
| 43 | #error B_H should not be defined |
| 44 | #endif |
| 45 | // expected-error@+3 {{must be imported from}} |
| 46 | // expected-note@* {{previous declaration}} |
| 47 | #endif |
| 48 | void use_b() { b(); } |