1 /*
2 TEST_OUTPUT:
3 ---
4 fail_compilation/fail14089.d(41): Error: `long` has no effect in expression `1`
5 fail_compilation/fail14089.d(41): Error: `long` has no effect in expression `1`
6 fail_compilation/fail14089.d(42): Error: `long` has no effect in expression `1`
7 fail_compilation/fail14089.d(42): Error: `var` has no effect in expression `n`
8 fail_compilation/fail14089.d(43): Error: `long` has no effect in expression `1`
9 fail_compilation/fail14089.d(43): Error: `dotvar` has no effect in expression `s.val`
10 fail_compilation/fail14089.d(44): Error: `var` has no effect in expression `n`
11 fail_compilation/fail14089.d(44): Error: `long` has no effect in expression `1`
12 fail_compilation/fail14089.d(45): Error: `dotvar` has no effect in expression `s.val`
13 fail_compilation/fail14089.d(45): Error: `long` has no effect in expression `1`
14 ---
15 */
16 
17 bool cond;
18 
main()19 void main()
20 {
21     int foo() { return 0; }
22     int n;
23     struct S { int val; }
24     S s;
25 
26     // The whole of each CondExps has side effects, So no error.
27     cond ? foo() : n;
28     cond ? foo() : s.val;
29     cond ? 1     : foo();
30     cond ? n     : foo();
31     cond ? s.val : foo();
32 
33     cond ? (n = 1) : 1;
34     cond ? (n = 1) : n;
35     cond ? (n = 1) : s.val;
36     cond ? 1       : (n = 1);
37     cond ? n       : (n = 1);
38     cond ? s.val   : (n = 1);
39 
40     // errors
41     cond ? 1     : 1;
42     cond ? 1     : n;
43     cond ? 1     : s.val;
44     cond ? n     : 1;
45     cond ? s.val : 1;
46 }
47