xref: /llvm-project/clang/test/Parser/recovery.c (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1 // RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fblocks %s
2 
3 // PR2241
4 float test2241[2] = {
5   1e,            // expected-error {{exponent}}
6   1ee0           // expected-error {{exponent}}
7 };
8 
9 
10 // Testcase derived from PR2692
f(char * (* g)(char **,int),char ** p,...)11 static void f (char * (*g) (char **, int), char **p, ...) {
12   char *s;
13   va_list v;                              // expected-error {{identifier}}
14   s = g (p, __builtin_va_arg(v, int));    // expected-error {{identifier}}
15 }
16 
17 
18 // PR3172
19 } // expected-error {{extraneous closing brace ('}')}}
20 
21 
22 void test(int a) {
23   struct { int i; } x;
24 
25   if (x.hello)   // expected-error {{no member named 'hello'}}
26     test(0);
27   else
28     ;
29 
30   if (x.hello == 0)   // expected-error {{no member named 'hello'}}
31     test(0);
32   else
33     ;
34 
35   if ((x.hello == 0))   // expected-error {{no member named 'hello'}}
36     test(0);
37   else
38     ;
39 
40   // PR12595
41   if (x.i == 0))   // expected-error {{extraneous ')' after condition, expected a statement}}
42     test(0);
43   else
44     ;
45 }
46 
47 
48 
49 char ((((                       /* expected-note {{to match this '('}} */
50          *X x ] ))));                    /* expected-error {{expected ')'}} */
51 
52 ;   // expected-warning {{extra ';' outside of a function}}
53 
54 
55 
56 
57 struct S { void *X, *Y; };
58 
59 struct S A = {
60 &BADIDENT, 0     /* expected-error {{use of undeclared identifier}} */
61 };
62 
63 void test6248081(void) {
64   [10]  // expected-error {{expected expression}}
65 }
66 
67 struct forward; // expected-note{{forward declaration of 'struct forward'}}
68 void x(struct forward* x) {switch(x->a) {}} // expected-error {{incomplete definition of type}}
69 
70 // PR3410
71 void foo(void) {
72   int X;
73   X = 4 // expected-error{{expected ';' after expression}}
74 }
75 
76 void test9045701(int x) {
77 #define VALUE 0
78   x = VALUE // expected-error{{expected ';' after expression}}
79 }
80 
81 typedef int intptr_t;  // expected-note {{'intptr_t' declared here}}
82 void bar(intptr y);     // expected-error {{unknown type name 'intptr'; did you mean 'intptr_t'?}}
83 
84 void test1(void) {
85   int x = 2: // expected-error {{expected ';' at end of declaration}}
86   int y = x;
87   int z = y;
88 }
89 
90 void test2(int x) {
91 #define VALUE2 VALUE+VALUE
92 #define VALUE3 VALUE+0
93 #define VALUE4(x) x+0
94   x = VALUE2 // expected-error{{expected ';' after expression}}
95   x = VALUE3 // expected-error{{expected ';' after expression}}
96   x = VALUE4(0) // expected-error{{expected ';' after expression}}
97 }
98