| // RUN: rm -rf %t |
| // |
| // RUN: %clang_cc1 %s \ |
| // RUN: -fmodules-local-submodule-visibility \ |
| // RUN: -fmodule-map-file=%S/Inputs/lsv-private-macro/mod.map \ |
| // RUN: -I%S/Inputs/lsv-private-macro -fmodule-name=self \ |
| // RUN: -verify=expected-lsv |
| // |
| // RUN: %clang_cc1 %s \ |
| // RUN: -fmodules -fmodules-cache-path=%t \ |
| // RUN: -fmodule-map-file=%S/Inputs/lsv-private-macro/mod.map \ |
| // RUN: -I%S/Inputs/lsv-private-macro -fmodule-name=self \ |
| // RUN: -verify=expected-nolsv |
| // |
| // RUN: %clang_cc1 %s \ |
| // RUN: -fmodules -fmodules-cache-path=%t \ |
| // RUN: -fmodules-local-submodule-visibility \ |
| // RUN: -fmodule-map-file=%S/Inputs/lsv-private-macro/mod.map \ |
| // RUN: -I%S/Inputs/lsv-private-macro -fmodule-name=self \ |
| // RUN: -verify=expected-lsv |
| |
| #include "self.h" |
| |
| // With local submodule visibility enabled, private macros don't leak out of |
| // their respective submodules, even within the same top-level module. |
| // expected-lsv-no-diagnostics |
| |
| // expected-nolsv-error@+2 {{SELF_PRIVATE defined}} |
| #ifdef SELF_PRIVATE |
| #error SELF_PRIVATE defined |
| #endif |
| |
| #ifndef SELF_PUBLIC |
| #error SELF_PUBLIC not defined |
| #endif |
| |
| #ifndef SELF_DEFAULT |
| #error SELF_DEFAULT not defined |
| #endif |
| |
| #include "other.h" |
| |
| #ifdef OTHER_PRIVATE |
| #error OTHER_PRIVATE defined |
| #endif |
| |
| #ifndef OTHER_PUBLIC |
| #error OTHER_PUBLIC not defined |
| #endif |
| |
| #ifndef OTHER_DEFAULT |
| #error OTHER_DEFAULT not defined |
| #endif |