Home | History | Annotate | Download | only in Parser
      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