Mercurial > hg > CbC > CbC_llvm
diff clang/test/Modules/submodule-visibility-pch.c @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang/test/Modules/submodule-visibility-pch.c Fri Aug 18 09:04:13 2023 +0900 @@ -0,0 +1,56 @@ +// Verify that the use of a PCH does not accidentally make modules from the PCH +// visible to submodules when using -fmodules-local-submodule-visibility +// and -fmodule-name to trigger a textual include. + +// RUN: rm -rf %t +// RUN: split-file %s %t + +// First check that it works with a header + +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \ +// RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \ +// RUN: -fmodule-name=Mod \ +// RUN: %t/tu.c -include %t/prefix.h -I %t -verify + +// Now with a PCH + +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \ +// RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \ +// RUN: -x c-header %t/prefix.h -emit-pch -o %t/prefix.pch -I %t + +// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \ +// RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \ +// RUN: -fmodule-name=Mod \ +// RUN: %t/tu.c -include-pch %t/prefix.pch -I %t -verify + +//--- module.modulemap +module ModViaPCH { header "ModViaPCH.h" } +module ModViaInclude { header "ModViaInclude.h" } +module Mod { header "Mod.h" } +module SomeOtherMod { header "SomeOtherMod.h" } + +//--- ModViaPCH.h +#define ModViaPCH 1 + +//--- ModViaInclude.h +#define ModViaInclude 2 + +//--- SomeOtherMod.h +// empty + +//--- Mod.h +#include "SomeOtherMod.h" +#ifdef ModViaPCH +#error "Visibility violation ModViaPCH" +#endif +#ifdef ModViaInclude +#error "Visibility violation ModViaInclude" +#endif + +//--- prefix.h +#include "ModViaPCH.h" + +//--- tu.c +#include "ModViaInclude.h" +#include "Mod.h" +// expected-no-diagnostics