// RUN: %clang_cc1 -verify -fsyntax-only %s int x(*g); // expected-error {{use of undeclared identifier 'g'}} struct Type { int Type; }; // PR4451 - We should recover well from the typo of '::' as ':' in a2. namespace y { struct a { }; typedef int b; } y::a a1; y:a a2; // expected-error {{unexpected ':' in nested name specifier}} y::a a3 = a2; // Some valid colons: void foo() { y: // label y::a s; int a = 4; a = a ? a : a+1; } struct b : y::a {}; template class someclass { int bar() { T *P; return 1 ? P->x : P->y; } }; enum { fooenum = 1 }; struct a { int Type : fooenum; }; void test(struct Type *P) { int Type; Type = 1 ? P->Type : Type; Type = (y:b) 4; // expected-error {{unexpected ':' in nested name specifier}} Type = 1 ? ( (y:b) // expected-error {{unexpected ':' in nested name specifier}} 4) : 5; } struct test4 { int x // expected-error {{expected ';' at end of declaration list}} int y; int z // expected-error {{expected ';' at end of declaration list}} }; // PR5825 struct test5 {}; ::new(static_cast(0)) test5; // expected-error {{expected unqualified-id}} // PR6782 template class Class1; class Class2 { } // no ; typedef Class1 Type1; // expected-error {{cannot combine with previous 'class' declaration specifier}}