|
1 |
| -// RUN: %clang_cc1 -fsyntax-only -verify %s |
| 1 | +// RUN: %clang_cc1 -fsyntax-only -verify=c11 -std=c11 -pedantic %s |
| 2 | +// RUN: %clang_cc1 -fsyntax-only -verify=c23 -std=c23 -Wpre-c23-compat %s |
2 | 3 |
|
3 | 4 | // Check C99 6.8.5p3
|
4 | 5 | void b1 (void) { for (void (*f) (void);;); }
|
5 |
| -void b2 (void) { for (void f (void);;); } // expected-error {{non-variable declaration in 'for' loop}} |
6 |
| -void b3 (void) { for (static int f;;); } // expected-error {{declaration of non-local variable}} |
7 |
| -void b4 (void) { for (typedef int f;;); } // expected-error {{non-variable declaration in 'for' loop}} |
| 6 | +void b2 (void) { for (void f (void);;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}} |
| 7 | + c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */ |
| 8 | +void b3 (void) { for (static int f;;); } /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}} |
| 9 | + c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */ |
| 10 | + |
| 11 | +void b4 (void) { for (typedef int f;;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}} |
| 12 | + c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */ |
8 | 13 | void b5 (void) { for (struct { int i; } s;;); }
|
9 | 14 | void b6 (void) { for (enum { zero, ten = 10 } i;;); }
|
10 |
| -void b7 (void) { for (struct s { int i; };;); } // expected-error {{non-variable declaration in 'for' loop}} |
11 |
| -void b8 (void) { for (static struct { int i; } s;;); } // expected-error {{declaration of non-local variable}} |
| 15 | +void b7 (void) { for (struct s { int i; };;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}} |
| 16 | + c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */ |
| 17 | +void b8 (void) { for (static struct { int i; } s;;); } /* c11-warning {{declaration of non-local variable in 'for' loop is a C23 extension}} |
| 18 | + c23-warning {{declaration of non-local variable in 'for' loop is incompatible with C standards before C23}} */ |
12 | 19 | void b9 (void) { for (struct { int i; } (*s)(struct { int j; } o) = 0;;); }
|
13 |
| -void b10(void) { for (typedef struct { int i; } (*s)(struct { int j; });;); } // expected-error {{non-variable declaration in 'for' loop}} |
| 20 | +void b10(void) { for (typedef struct { int i; } (*s)(struct { int j; });;); } /* c11-warning {{non-variable declaration in 'for' loop is a C23 extension}} |
| 21 | + c23-warning {{non-variable declaration in 'for' loop is incompatible with C standards before C23}} */ |
0 commit comments