1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li class C { }; 3*67e74705SXin Li 4*67e74705SXin Li C c; 5*67e74705SXin Li 6*67e74705SXin Li void D(int); 7*67e74705SXin Li 8*67e74705SXin Li class D {}; 9*67e74705SXin Li foo()10*67e74705SXin Livoid foo() 11*67e74705SXin Li { 12*67e74705SXin Li D(5); 13*67e74705SXin Li class D d; 14*67e74705SXin Li } 15*67e74705SXin Li 16*67e74705SXin Li class D; // expected-note {{previous use is here}} 17*67e74705SXin Li 18*67e74705SXin Li enum D; // expected-error {{use of 'D' with tag type that does not match previous declaration}} 19*67e74705SXin Li 20*67e74705SXin Li class A * A; 21*67e74705SXin Li 22*67e74705SXin Li class A * a2; 23*67e74705SXin Li bar()24*67e74705SXin Livoid bar() 25*67e74705SXin Li { 26*67e74705SXin Li A = 0; 27*67e74705SXin Li } 28*67e74705SXin Li 29*67e74705SXin Li void C(int); 30*67e74705SXin Li bar2()31*67e74705SXin Livoid bar2() 32*67e74705SXin Li { 33*67e74705SXin Li C(17); 34*67e74705SXin Li } 35*67e74705SXin Li 36*67e74705SXin Li extern int B; 37*67e74705SXin Li class B; 38*67e74705SXin Li class B {}; 39*67e74705SXin Li int B; 40*67e74705SXin Li 41*67e74705SXin Li enum E { e1_val }; 42*67e74705SXin Li E e1; 43*67e74705SXin Li 44*67e74705SXin Li void E(int); 45*67e74705SXin Li bar3()46*67e74705SXin Livoid bar3() { 47*67e74705SXin Li E(17); 48*67e74705SXin Li } 49*67e74705SXin Li 50*67e74705SXin Li enum E e2; 51*67e74705SXin Li 52*67e74705SXin Li enum E2 { E2 }; 53