comparison clang/test/Modules/adl.cpp @ 150:1d019706d866

LLVM10
author anatofuz
date Thu, 13 Feb 2020 15:10:13 +0900
parents
children
comparison
equal deleted inserted replaced
147:c2174574ed3a 150:1d019706d866
1 // RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -fno-spell-checking %s
2 // RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -DONLY_Y %s
3
4 #pragma clang module build a
5 module a {
6 explicit module x {}
7 explicit module y {}
8 }
9 #pragma clang module contents
10 #pragma clang module begin a.x
11 namespace N {
12 template<typename T> extern int f(T) { return 0; }
13 }
14 #pragma clang module end
15
16 #pragma clang module begin a.y
17 #pragma clang module import a.x
18 using N::f;
19 #pragma clang module end
20 #pragma clang module endbuild
21
22 namespace N { struct A {}; }
23 struct B {};
24
25 #ifndef ONLY_Y
26 #pragma clang module import a.x
27 void test1() {
28 f(N::A());
29 f(B()); // expected-error {{use of undeclared identifier 'f'}}
30 }
31 #else
32 // expected-no-diagnostics
33 #endif
34
35 #pragma clang module import a.y
36 void test2() {
37 // These are OK even if a.x is not imported.
38 f(N::A());
39 f(B());
40 }