1 // RUN: %clang_cc1 -verify %s 2 3 // Some of the diagnostics produce 'did you mean?' suggestions. We don't care 4 // which ones for the purpose of this test. 5 // expected-note@* 0+{{here}} 6 7 struct A *f(); 8 using Test_A = A; 9 10 void f(struct B*); 11 using Test_B = B; 12 13 struct C; 14 using Test_C = C; 15 16 struct X { 17 struct D *f(); 18 void f(struct E*); 19 struct F; 20 friend struct G; 21 }; 22 using Test_D = D; 23 using Test_XD = X::D; // expected-error {{no type named 'D' in 'X'}} 24 using Test_E = E; 25 using Test_XE = X::E; // expected-error {{no type named 'E' in 'X'}} 26 using Test_F = F; // expected-error {{unknown type name 'F'}} 27 using Test_XF = X::F; 28 using Test_G = G; // expected-error {{unknown type name 'G'}} 29 using Test_XG = X::G; // expected-error {{no type named 'G' in 'X'}} 30 31 void g() { 32 { 33 struct X { 34 struct H *f(); 35 void f(struct I*); 36 struct J; 37 friend struct K; 38 }; 39 using Test_H = H; 40 using Test_XH = X::H; // expected-error {{no type named}} 41 using Test_I = I; 42 using Test_XI = X::I; // expected-error {{no type named}} 43 using Test_J = J; // expected-error {{unknown type name}} 44 using Test_XJ = X::J; 45 using Test_K = K; // expected-error {{unknown type name}} 46 using Test_XK = X::K; // expected-error {{no type named}} 47 } 48 using Test_H = H; // expected-error {{unknown type name}} 49 using Test_I = I; // expected-error {{unknown type name}} 50 using Test_J = J; // expected-error {{unknown type name}} 51 using Test_K = K; // expected-error {{unknown type name}} 52 } 53 using Test_H = H; // expected-error {{unknown type name}} 54 using Test_I = I; // expected-error {{unknown type name}} 55 using Test_J = J; // expected-error {{unknown type name}} 56 using Test_K = K; // expected-error {{unknown type name}} 57