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