comparison 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
comparison
equal deleted inserted replaced
237:c80f45b162ad 252:1f2b6ac9f198
1 // Verify that the use of a PCH does not accidentally make modules from the PCH
2 // visible to submodules when using -fmodules-local-submodule-visibility
3 // and -fmodule-name to trigger a textual include.
4
5 // RUN: rm -rf %t
6 // RUN: split-file %s %t
7
8 // First check that it works with a header
9
10 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \
11 // RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \
12 // RUN: -fmodule-name=Mod \
13 // RUN: %t/tu.c -include %t/prefix.h -I %t -verify
14
15 // Now with a PCH
16
17 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \
18 // RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \
19 // RUN: -x c-header %t/prefix.h -emit-pch -o %t/prefix.pch -I %t
20
21 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t/cache \
22 // RUN: -fmodules-local-submodule-visibility -fimplicit-module-maps \
23 // RUN: -fmodule-name=Mod \
24 // RUN: %t/tu.c -include-pch %t/prefix.pch -I %t -verify
25
26 //--- module.modulemap
27 module ModViaPCH { header "ModViaPCH.h" }
28 module ModViaInclude { header "ModViaInclude.h" }
29 module Mod { header "Mod.h" }
30 module SomeOtherMod { header "SomeOtherMod.h" }
31
32 //--- ModViaPCH.h
33 #define ModViaPCH 1
34
35 //--- ModViaInclude.h
36 #define ModViaInclude 2
37
38 //--- SomeOtherMod.h
39 // empty
40
41 //--- Mod.h
42 #include "SomeOtherMod.h"
43 #ifdef ModViaPCH
44 #error "Visibility violation ModViaPCH"
45 #endif
46 #ifdef ModViaInclude
47 #error "Visibility violation ModViaInclude"
48 #endif
49
50 //--- prefix.h
51 #include "ModViaPCH.h"
52
53 //--- tu.c
54 #include "ModViaInclude.h"
55 #include "Mod.h"
56 // expected-no-diagnostics