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