1 // RUN: %clang_cc1 -verify -fsyntax-only -triple i386-linux %s 2 3 int x(*g); // expected-error {{use of undeclared identifier 'g'}} 4 5 struct Type { 6 int Type; 7 }; 8 9 // rdar://8365458 10 // rdar://9132143 11 typedef char bool; // expected-error {{redeclaration of C++ built-in type 'bool'}} 12 13 // PR4451 - We should recover well from the typo of '::' as ':' in a2. 14 namespace y { 15 struct a { }; 16 typedef int b; 17 } 18 19 y::a a1; 20 y:a a2; // expected-error {{unexpected ':' in nested name specifier}} 21 y::a a3 = a2; 22 23 // Some valid colons: 24 void foo() { 25 y: // label 26 y::a s; 27 28 int a = 4; 29 a = a ? a : a+1; 30 } 31 32 struct b : y::a {}; 33 34 template <typename T> 35 class someclass { 36 37 int bar() { 38 T *P; 39 return 1 ? P->x : P->y; 40 } 41 }; 42 43 class asm_class_test { 44 void foo() __asm__("baz"); 45 }; 46 47 enum { fooenum = 1 }; 48 49 struct a { 50 int Type : fooenum; 51 }; 52 53 void test(struct Type *P) { 54 int Type; 55 Type = 1 ? P->Type : Type; 56 57 Type = (y:b) 4; // expected-error {{unexpected ':' in nested name specifier}} 58 Type = 1 ? ( 59 (y:b) // expected-error {{unexpected ':' in nested name specifier}} 60 4) : 5; 61 } 62 63 struct test4 { 64 int x // expected-error {{expected ';' at end of declaration list}} 65 int y; 66 int z // expected-error {{expected ';' at end of declaration list}} 67 }; 68 69 // Make sure we know these are legitimate commas and not typos for ';'. 70 namespace Commas { 71 struct S { 72 static int a; 73 int c, 74 operator()(); 75 }; 76 77 int global1, 78 __attribute__(()) global2, 79 (global5), 80 *global6, 81 &global7 = global1, 82 &&global8 = static_cast<int&&>(global1), // expected-warning 2{{rvalue reference}} 83 S::a, 84 global9, 85 global10 = 0, 86 global11 == 0, // expected-error {{did you mean '='}} 87 global12 __attribute__(()), 88 global13(0), 89 global14[2], 90 global15; 91 92 void g() { 93 static int a, 94 b __asm__("ebx"), // expected-error {{expected ';' at end of declaration}} 95 Statics:return; 96 } 97 } 98 99 // PR5825 100 struct test5 {}; 101 ::new(static_cast<void*>(0)) test5; // expected-error {{expected unqualified-id}} 102 103 104 // PR6782 105 template<class T> 106 class Class1; 107 108 class Class2 { 109 } // no ; 110 111 typedef Class1<Class2> Type1; // expected-error {{cannot combine with previous 'class' declaration specifier}} 112 113 // rdar : // 8307865 114 struct CodeCompleteConsumer { 115 }; 116 117 void CodeCompleteConsumer::() { // expected-error {{xpected unqualified-id}} 118 } 119 120 ; 121 122 // PR8380 123 extern "" // expected-error {{unknown linkage language}} 124 test6a { ;// expected-error {{C++ requires a type specifier for all declarations}} \ 125 // expected-error {{expected ';' after top level declarator}} 126 127 int test6b; 128 129 130