57 lines · cpp
1// RUN: %clang_cc1 -verify %s2 3// Some of the diagnostics produce 'did you mean?' suggestions. We don't care4// which ones for the purpose of this test.5// expected-note@* 0+{{here}}6 7struct A *f();8using Test_A = A;9 10void f(struct B*);11using Test_B = B;12 13struct C;14using Test_C = C;15 16struct X {17 struct D *f();18 void f(struct E*);19 struct F;20 friend struct G;21};22using Test_D = D;23using Test_XD = X::D; // expected-error {{no type named 'D' in 'X'}}24using Test_E = E;25using Test_XE = X::E; // expected-error {{no type named 'E' in 'X'}}26using Test_F = F; // expected-error {{unknown type name 'F'}}27using Test_XF = X::F;28using Test_G = G; // expected-error {{unknown type name 'G'}}29using Test_XG = X::G; // expected-error {{no type named 'G' in 'X'}}30 31void 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}53using Test_H = H; // expected-error {{unknown type name}}54using Test_I = I; // expected-error {{unknown type name}}55using Test_J = J; // expected-error {{unknown type name}}56using Test_K = K; // expected-error {{unknown type name}}57