111
|
1 /* Test for constraints on constant expressions. In C90 it is clear that
|
|
2 certain constructs are not permitted in unevaluated parts of an
|
|
3 expression (except in sizeof); in C99 it might fall within implementation
|
|
4 latitude.
|
|
5 */
|
|
6 /* Origin: Joseph Myers <jsm28@cam.ac.uk>; inspired by
|
|
7 http://deja.com/getdoc.xp?AN=524271595&fmt=text by Peter Seebach.
|
|
8 */
|
|
9 /* { dg-do compile } */
|
|
10 /* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
|
|
11
|
|
12 extern int bar (void);
|
|
13
|
|
14 void
|
|
15 foo (void)
|
|
16 {
|
|
17 int i;
|
|
18 static int j = (1 ? 0 : (i = 2)); /* { dg-error "initial" "assignment" } */
|
|
19 static int k = (1 ? 0 : ++i); /* { dg-error "initial" "increment" } */
|
|
20 static int l = (1 ? 0 : --i); /* { dg-error "initial" "decrement" } */
|
|
21 static int m = (1 ? 0 : bar ()); /* { dg-error "initial" "function call" } */
|
|
22 static int n = (1 ? 0 : (2, 3)); /* { dg-error "initial" "comma" } */
|
|
23 }
|