| // RUN: rm -rf %t |
| // RUN: split-file %s %t |
| |
| // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \ |
| // RUN: -emit-module %t/module.modulemap -fmodule-name=B -o %t/cache/B.pcm \ |
| // RUN: -fmodules-single-module-parse-mode 2>&1 | FileCheck %s |
| |
| // Modules are not imported. |
| // CHECK-NOT: A.h:1:2: error: unreachable |
| |
| // Headers belonging to this module are included. |
| // CHECK: B2.h:2:2: warning: success |
| |
| // Non-modular headers are included. |
| // CHECK: T.h:2:2: warning: success |
| |
| // No branches are entered for #if UNDEFINED. |
| // CHECK-NOT: B1.h:6:2: error: unreachable |
| // CHECK-NOT: B1.h:8:2: error: unreachable |
| // CHECK-NOT: B1.h:10:2: error: unreachable |
| |
| // No branches are entered for #ifdef UNDEFINED. |
| // CHECK-NOT: B1.h:14:2: error: unreachable |
| // CHECK-NOT: B1.h:16:2: error: unreachable |
| |
| // No branches are entered for #ifndef UNDEFINED. |
| // CHECK-NOT: B1.h:20:2: error: unreachable |
| // CHECK-NOT: B1.h:22:2: error: unreachable |
| |
| // No error messages are emitted for UNDEFINED_FUNCTION_LIKE(). |
| // CHECK-NOT: B1.h:25:2: error: unreachable |
| |
| // The correct branch is entered for #if DEFINED. |
| // CHECK: B1.h:32:3: warning: success |
| // CHECK-NOT: B1.h:34:3: error: unreachable |
| // CHECK-NOT: B1.h:36:3: error: unreachable |
| |
| // Headers belonging to this module are included. |
| // CHECK: B2.h:2:2: warning: success |
| |
| //--- module.modulemap |
| module A { header "A.h" } |
| module B { |
| header "B1.h" |
| header "B2.h" |
| } |
| //--- A.h |
| #error unreachable |
| //--- B1.h |
| #include "A.h" |
| #include "B2.h" |
| #include "T.h" |
| |
| #if UNDEFINED |
| # error unreachable |
| #elif UNDEFINED2 |
| # error unreachable |
| #else |
| # error unreachable |
| #endif |
| |
| #ifdef UNDEFINED |
| # error unreachable |
| #else |
| # error unreachable |
| #endif |
| |
| #ifndef UNDEFINED |
| # error unreachable |
| #else |
| # error unreachable |
| #endif |
| |
| #if UNDEFINED_FUNCTION_LIKE() |
| #endif |
| |
| #define DEFINED_1 1 |
| #define DEFINED_2 1 |
| |
| #if DEFINED_1 |
| # warning success |
| #elif DEFINED_2 |
| # error unreachable |
| #else |
| # error unreachable |
| #endif |
| //--- B2.h |
| // Headers belonging to this module are included. |
| #warning success |
| //--- T.h |
| // Non-modular headers are included. |
| #warning success |