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
12 int k
= UsingDecl::merged
;
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
;
21 struct conflicting_hidden_using_decl_mixed_4
{};
22 int conflicting_hidden_using_decl_mixed_5
;
23 int conflicting_hidden_using_decl_mixed_6();
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
;
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
;
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());
60 UsingDecl::using_decl_type x
= UsingDecl::using_decl_var
;
61 UsingDecl::inner y
= x
;
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}}
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
;