1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 // Member Test1 hides class Test1
5 static int Test1
; // expected-error {{member 'Test1' has the same name as its class}}
6 // expected-note@-1 {{class 'Test1' is hidden by a non-type declaration of 'Test1' here}}
8 Test1 x
; // expected-error {{must use 'class' tag to refer to type 'Test1' in this scope}}
15 // Member Test2 doesn't hide class Test2 as its declaration is invalid
16 class Test2
{ // expected-note {{declared here}}
17 static NoSuchType Test2
; // expected-error {{unknown type name 'NoSuchType'}}
18 // expected-error@-1 {{member 'Test2' has the same name as its class}}
23 return Test2
; // expected-error {{'Test2' does not refer to a value}}
27 // Test3a::x doesn't hide Test3b::x as its declaration is invalid
29 NoSuchType
x() { return 0; } // expected-error {{unknown type name 'NoSuchType'}}
32 class x
; // expected-note {{declared here}}
37 return x
; // expected-error {{'x' does not refer to a value}}
40 // Function Test4 hides class Test4, whose declaration is invalid
41 class Test4
: public NoSuchType
{ // expected-error {{expected class name}}
44 int Test4() { return 0; }
50 // Function Test5 doesn't hide class Test5 when both are invalid
51 class Test5
: public NoSuchType
{ // expected-error {{expected class name}}
54 NoSuchType
Test5() { return 0; } // expected-error {{unknown type name 'NoSuchType'}}