brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · b24593b Raw
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