85 lines · cpp
1// RUN: rm -rf %t2// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -DEARLY_IMPORT3// RUN: %clang_cc1 -x objective-c++ -std=c++11 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -I %S/Inputs %s -verify -UEARLY_IMPORT4// 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-visibility5// 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-visibility6 7#ifdef EARLY_IMPORT8@import using_decl.a;9namespace UsingDecl {10 using ::merged;11}12int k = UsingDecl::merged;13#endif14 15namespace 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 26using Y::conflicting_hidden_using_decl;27int conflicting_hidden_using_decl_fn();28int conflicting_hidden_using_decl_var;29struct conflicting_hidden_using_decl_struct {};30using Y::conflicting_hidden_using_decl_fn_2;31using Y::conflicting_hidden_using_decl_var_2;32using Y::conflicting_hidden_using_decl_struct_2;33 34struct conflicting_hidden_using_decl_mixed_1 {};35int conflicting_hidden_using_decl_mixed_2;36int conflicting_hidden_using_decl_mixed_3();37using Y::conflicting_hidden_using_decl_mixed_4;38using Y::conflicting_hidden_using_decl_mixed_5;39using Y::conflicting_hidden_using_decl_mixed_6;40 41template<typename T> int use(T);42void 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_IMPORT57@import using_decl.a;58#endif59 60UsingDecl::using_decl_type x = UsingDecl::using_decl_var;61UsingDecl::inner y = x;62 63@import using_decl.b;64 65void 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 hidden72 use(conflicting_hidden_using_decl_mixed_2); // expected-error {{ambiguous}}73 use(conflicting_hidden_using_decl_mixed_3); // ok, struct hidden74 use(conflicting_hidden_using_decl_mixed_4); // ok, struct hidden75 use(conflicting_hidden_using_decl_mixed_5); // expected-error {{ambiguous}}76 use(conflicting_hidden_using_decl_mixed_6); // ok, struct hidden77 // 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}85