Skip to content

Commit 52515f8

Browse files
committed
Adding a test case.
1 parent 0093c2f commit 52515f8

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed

clang/test/ClangScanDeps/export.c

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
// Test correctly reporting what a module exports during dependency scanning.
2+
// Module A depends on modules B, C and D, but only exports B and C.
3+
// Module E depends on modules B, C and D, and exports all of them.
4+
5+
// RUN: rm -rf %t
6+
// RUN: split-file %s %t
7+
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.template > %t/cdb.json
8+
// RUN: clang-scan-deps -compilation-database \
9+
// RUN: %t/cdb.json -format experimental-full > %t/deps.db
10+
// RUN: cat %t/deps.db | sed 's:\\\\\?:/:g' | FileCheck %s
11+
12+
//--- cdb.json.template
13+
[
14+
{
15+
"directory": "DIR",
16+
"command": "clang -c DIR/test.c -I DIR/AH -I DIR/BH -I DIR/CH -I DIR/DH -I DIR/EH -fmodules -fmodules-cache-path=DIR/cache",
17+
"file": "DIR/test.c"
18+
},
19+
]
20+
21+
//--- AH/A.h
22+
#include "B.h"
23+
#include "C.h"
24+
#include "D.h"
25+
26+
int funcA();
27+
28+
//--- AH/module.modulemap
29+
module A {
30+
header "A.h"
31+
32+
export B
33+
export C
34+
}
35+
36+
//--- BH/B.h
37+
//--- BH/module.modulemap
38+
module B {
39+
header "B.h"
40+
}
41+
42+
//--- CH/C.h
43+
//--- CH/module.modulemap
44+
module C {
45+
header "C.h"
46+
}
47+
48+
//--- DH/D.h
49+
//--- DH/module.modulemap
50+
module D {
51+
header "D.h"
52+
}
53+
54+
//--- EH/E.h
55+
#include "B.h"
56+
#include "C.h"
57+
#include "D.h"
58+
59+
//--- EH/module.modulemap
60+
module E {
61+
header "E.h"
62+
export *
63+
}
64+
65+
//--- test.c
66+
#include "A.h"
67+
#include "E.h"
68+
69+
int test1() {
70+
return funcA();
71+
}
72+
73+
// CHECK: {
74+
// CHECK-NEXT: "modules": [
75+
// CHECK-NEXT: {
76+
// CHECK-NEXT: "clang-module-deps": [
77+
// CHECK-NEXT: {
78+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_B:.*]]",
79+
// CHECK-NEXT: "module-name": "B"
80+
// CHECK-NEXT: },
81+
// CHECK-NEXT: {
82+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_C:.*]]",
83+
// CHECK-NEXT: "module-name": "C"
84+
// CHECK-NEXT: },
85+
// CHECK-NEXT: {
86+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_D:.*]]",
87+
// CHECK-NEXT: "module-name": "D"
88+
// CHECK-NEXT: }
89+
// CHECK-NEXT: ],
90+
// CHECK-NEXT: "clang-modulemap-file":{{.*}},
91+
// CHECK-NEXT: "command-line": [
92+
// CHECK: ],
93+
// CHECK-NEXT: "context-hash":{{.*}}
94+
// CHECK-NEXT: "file-deps": [
95+
// CHECK: ],
96+
// CHECK-NEXT: "link-libraries": [],
97+
// CHECK-NEXT: "clang-modules-exported": [
98+
// CHECK-NEXT: {
99+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_B]]",
100+
// CHECK-NEXT: "module-name": "B"
101+
// CHECK-NEXT: },
102+
// CHECK-NEXT: {
103+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_C]]",
104+
// CHECK-NEXT: "module-name": "C"
105+
// CHECK-NEXT: }
106+
// CHECK-NOT: {
107+
// CHECK-NOT: "context-hash": "[[HASH_MOD_D]]",
108+
// CHECK-NOT: "module-name": "D"
109+
// CHECK-NOT: }
110+
// CHECK-NEXT: ],
111+
// CHECK-NEXT: "name": "A"
112+
// CHECK-NEXT: }
113+
// CHECK: {
114+
// CHECK: "name": "B"
115+
// CHECK: }
116+
// CHECK: {
117+
// CHECK: "name": "C"
118+
// CHECK: }
119+
// CHECK: {
120+
// CHECK: "name": "D"
121+
// CHECK: }
122+
// CHECK: {
123+
// CHECK-NEXT: "clang-module-deps": [
124+
// CHECK-NEXT: {
125+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_B]]",
126+
// CHECK-NEXT: "module-name": "B"
127+
// CHECK-NEXT: },
128+
// CHECK-NEXT: {
129+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_C]]",
130+
// CHECK-NEXT: "module-name": "C"
131+
// CHECK-NEXT: },
132+
// CHECK-NEXT: {
133+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_D]]",
134+
// CHECK-NEXT: "module-name": "D"
135+
// CHECK-NEXT: }
136+
// CHECK-NEXT: ],
137+
// CHECK-NEXT: "clang-modulemap-file":{{.*}},
138+
// CHECK-NEXT: "command-line": [
139+
// CHECK: ],
140+
// CHECK-NEXT: "context-hash":{{.*}}
141+
// CHECK-NEXT: "file-deps": [
142+
// CHECK: ],
143+
// CHECK-NEXT: "link-libraries": [],
144+
// CHECK-NEXT: "clang-modules-exported": [
145+
// CHECK-NEXT: {
146+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_B]]",
147+
// CHECK-NEXT: "module-name": "B"
148+
// CHECK-NEXT: },
149+
// CHECK-NEXT: {
150+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_C]]",
151+
// CHECK-NEXT: "module-name": "C"
152+
// CHECK-NEXT: }
153+
// CHECK-NEXT: {
154+
// CHECK-NEXT: "context-hash": "[[HASH_MOD_D]]",
155+
// CHECK-NEXT: "module-name": "D"
156+
// CHECK-NEXT: }
157+
// CHECK-NEXT: ],
158+
// CHECK-NEXT: "name": "E"
159+
// CHECK-NEXT: }
160+
// CHECK: ]
161+
// CHECK: }
162+
163+
164+

0 commit comments

Comments
 (0)