annotate clang/test/Modules/adl.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -fno-spell-checking %s
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -DONLY_Y %s
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 #pragma clang module build a
anatofuz
parents:
diff changeset
5 module a {
anatofuz
parents:
diff changeset
6 explicit module x {}
anatofuz
parents:
diff changeset
7 explicit module y {}
anatofuz
parents:
diff changeset
8 }
anatofuz
parents:
diff changeset
9 #pragma clang module contents
anatofuz
parents:
diff changeset
10 #pragma clang module begin a.x
anatofuz
parents:
diff changeset
11 namespace N {
anatofuz
parents:
diff changeset
12 template<typename T> extern int f(T) { return 0; }
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14 #pragma clang module end
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 #pragma clang module begin a.y
anatofuz
parents:
diff changeset
17 #pragma clang module import a.x
anatofuz
parents:
diff changeset
18 using N::f;
anatofuz
parents:
diff changeset
19 #pragma clang module end
anatofuz
parents:
diff changeset
20 #pragma clang module endbuild
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 namespace N { struct A {}; }
anatofuz
parents:
diff changeset
23 struct B {};
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 #ifndef ONLY_Y
anatofuz
parents:
diff changeset
26 #pragma clang module import a.x
anatofuz
parents:
diff changeset
27 void test1() {
anatofuz
parents:
diff changeset
28 f(N::A());
anatofuz
parents:
diff changeset
29 f(B()); // expected-error {{use of undeclared identifier 'f'}}
anatofuz
parents:
diff changeset
30 }
anatofuz
parents:
diff changeset
31 #else
anatofuz
parents:
diff changeset
32 // expected-no-diagnostics
anatofuz
parents:
diff changeset
33 #endif
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 #pragma clang module import a.y
anatofuz
parents:
diff changeset
36 void test2() {
anatofuz
parents:
diff changeset
37 // These are OK even if a.x is not imported.
anatofuz
parents:
diff changeset
38 f(N::A());
anatofuz
parents:
diff changeset
39 f(B());
anatofuz
parents:
diff changeset
40 }