expressions: make assign_expression() take an op argument
[smatch.git] / validation / constexpr-conditional.c
bloba3331b3ef0f535b29d9be31f77817eda7da3e4d1
1 static int a[] = {
2 [0 ? : 0] = 0, // OK
3 [1 ? : 0] = 0, // OK
4 [0 ? 0 : 0] = 0, // OK
5 [1 ? 0 : 0] = 0, // OK
6 [0 ? 0 : __builtin_choose_expr(0, 0, 0)] = 0, // OK
7 [1 ? __builtin_choose_expr(0, 0, 0) : 0] = 0, // OK
8 [0 ? __builtin_choose_expr(0, 0, 0) : 0] = 0, // OK
9 [1 ? 1 : __builtin_choose_expr(0, 0, 0)] = 0, // OK
10 [__builtin_choose_expr(0, 0, 0) ? : 0] = 0, // OK
11 [__builtin_choose_expr(0, 0, 1) ? : 0] = 0, // OK
12 [0. ? : 0] = 0, // KO
13 [0 ? 0. : 0] = 0, // KO
14 [1 ? : 0.] = 0, // KO
15 [__builtin_choose_expr(0, 0., 0) ? : 0] = 0, // OK
16 [__builtin_choose_expr(0, 0, 0.) ? : 0] = 0, // KO
17 [0 ? __builtin_choose_expr(0, 0., 0) : 0] = 0, // OK
18 [0 ? __builtin_choose_expr(0, 0, 0.) : 0] = 0, // KO
19 [1 ? 0 : __builtin_choose_expr(0, 0., 0)] = 0, // OK
20 [1 ? 0 : __builtin_choose_expr(0, 0, 0.)] = 0, // KO
24 * check-name: Expression constness propagation in conditional expressions
26 * check-error-start
27 constexpr-conditional.c:12:13: error: bad constant expression
28 constexpr-conditional.c:13:19: error: bad constant expression
29 constexpr-conditional.c:14:12: error: bad constant expression
30 constexpr-conditional.c:16:42: error: bad constant expression
31 constexpr-conditional.c:18:48: error: bad constant expression
32 constexpr-conditional.c:20:14: error: bad constant expression
33 * check-error-end