brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · a8c2e8e Raw
60 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3// Member Test1 hides class Test14class 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}}7  void fn1() {8    Test1 x; // expected-error {{must use 'class' tag to refer to type 'Test1' in this scope}}9  }10  int fn2() {11    return Test1;12  }13};14 15// Member Test2 doesn't hide class Test2 as its declaration is invalid16class 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}}19  void fn1() {20    Test2 x;21  }22  int fn2() {23    return Test2; // expected-error {{'Test2' does not refer to a value}}24  }25};26 27// Test3a::x doesn't hide Test3b::x as its declaration is invalid28namespace Test3a {29  NoSuchType x() { return 0; } // expected-error {{unknown type name 'NoSuchType'}}30}31namespace Test3b {32  class x; // expected-note {{declared here}}33}34using Test3a::x;35using Test3b::x;36int test3_fn() {37  return x; // expected-error {{'x' does not refer to a value}}38}39 40// Function Test4 hides class Test4, whose declaration is invalid41class Test4 : public NoSuchType { // expected-error {{expected class name}}42 43};44int Test4() { return 0; }45 46int test4_fn() {47  return Test4();48}49 50// Function Test5 doesn't hide class Test5 when both are invalid51class Test5 : public NoSuchType { // expected-error {{expected class name}}52 53};54NoSuchType Test5() { return 0; } // expected-error {{unknown type name 'NoSuchType'}}55 56Test5 test5_fn() {57  Test5 x;58  return x;59}60