// 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