Mercurial > hg > CbC > CbC_llvm
comparison clang/test/Modules/using-decl.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: rm -rf %t | |
2 // RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -DEARLY_IMPORT | |
3 // RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT | |
4 // RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -DEARLY_IMPORT -fmodules-local-submodule-visibility | |
5 // RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT -fmodules-local-submodule-visibility | |
6 | |
7 #ifdef EARLY_IMPORT | |
8 @import using_decl.a; | |
9 namespace UsingDecl { | |
10 using ::merged; | |
11 } | |
12 int k = UsingDecl::merged; | |
13 #endif | |
14 | |
15 namespace Y { | |
16 int conflicting_hidden_using_decl; | |
17 int conflicting_hidden_using_decl_fn_2(); | |
18 int conflicting_hidden_using_decl_var_2; | |
19 struct conflicting_hidden_using_decl_struct_2; | |
20 | |
21 struct conflicting_hidden_using_decl_mixed_4 {}; | |
22 int conflicting_hidden_using_decl_mixed_5; | |
23 int conflicting_hidden_using_decl_mixed_6(); | |
24 } | |
25 | |
26 using Y::conflicting_hidden_using_decl; | |
27 int conflicting_hidden_using_decl_fn(); | |
28 int conflicting_hidden_using_decl_var; | |
29 struct conflicting_hidden_using_decl_struct {}; | |
30 using Y::conflicting_hidden_using_decl_fn_2; | |
31 using Y::conflicting_hidden_using_decl_var_2; | |
32 using Y::conflicting_hidden_using_decl_struct_2; | |
33 | |
34 struct conflicting_hidden_using_decl_mixed_1 {}; | |
35 int conflicting_hidden_using_decl_mixed_2; | |
36 int conflicting_hidden_using_decl_mixed_3(); | |
37 using Y::conflicting_hidden_using_decl_mixed_4; | |
38 using Y::conflicting_hidden_using_decl_mixed_5; | |
39 using Y::conflicting_hidden_using_decl_mixed_6; | |
40 | |
41 template<typename T> int use(T); | |
42 void test_conflicting() { | |
43 use(conflicting_hidden_using_decl); | |
44 use(conflicting_hidden_using_decl_fn()); | |
45 use(conflicting_hidden_using_decl_var); | |
46 use(conflicting_hidden_using_decl_fn_2()); | |
47 use(conflicting_hidden_using_decl_var_2); | |
48 use(conflicting_hidden_using_decl_mixed_1()); | |
49 use(conflicting_hidden_using_decl_mixed_2); | |
50 use(conflicting_hidden_using_decl_mixed_3()); | |
51 use(conflicting_hidden_using_decl_mixed_4()); | |
52 use(conflicting_hidden_using_decl_mixed_5); | |
53 use(conflicting_hidden_using_decl_mixed_6()); | |
54 } | |
55 | |
56 #ifndef EARLY_IMPORT | |
57 @import using_decl.a; | |
58 #endif | |
59 | |
60 UsingDecl::using_decl_type x = UsingDecl::using_decl_var; | |
61 UsingDecl::inner y = x; | |
62 | |
63 @import using_decl.b; | |
64 | |
65 void test_conflicting_2() { | |
66 use(conflicting_hidden_using_decl); // expected-error {{ambiguous}} | |
67 use(conflicting_hidden_using_decl_fn()); // expected-error {{ambiguous}} | |
68 use(conflicting_hidden_using_decl_var); // expected-error {{ambiguous}} | |
69 use(conflicting_hidden_using_decl_fn_2()); // expected-error {{ambiguous}} | |
70 use(conflicting_hidden_using_decl_var_2); // expected-error {{ambiguous}} | |
71 use(conflicting_hidden_using_decl_mixed_1); // ok, struct hidden | |
72 use(conflicting_hidden_using_decl_mixed_2); // expected-error {{ambiguous}} | |
73 use(conflicting_hidden_using_decl_mixed_3); // ok, struct hidden | |
74 use(conflicting_hidden_using_decl_mixed_4); // ok, struct hidden | |
75 use(conflicting_hidden_using_decl_mixed_5); // expected-error {{ambiguous}} | |
76 use(conflicting_hidden_using_decl_mixed_6); // ok, struct hidden | |
77 // expected-note@using-decl.cpp:* 7{{candidate}} | |
78 // expected-note@using-decl-b.h:* 7{{candidate}} | |
79 | |
80 int conflicting_hidden_using_decl_mixed_1::*p1; | |
81 int conflicting_hidden_using_decl_mixed_3::*p3; | |
82 int conflicting_hidden_using_decl_mixed_4::*p4; | |
83 int conflicting_hidden_using_decl_mixed_6::*p6; | |
84 } |