1/*
2 * @test /nodynamiccopyright/
3 * @bug 4092958
4 * @summary The compiler was too permissive in its parsing of conditional
5 *          expressions.
6 * @author turnidge
7 *
8 * @compile/fail/ref=ParseConditional.out -XDrawDiagnostics ParseConditional.java
9 */
10
11public class ParseConditional {
12    public static void main(String[] args) {
13        boolean condition = true;
14        int a = 1;
15        int b = 2;
16        int c = 3;
17        int d = 4;
18        // The following line should give an error because the conditional ?: operator
19        // is higher priority than the final assignment operator, between c and d.
20        // As such, the correct parsing is:
21        //   a = (condition ? b = c : c) = d;
22        // and it is illegal to try and assign to the value of the conditional expression.
23        a = condition ? b = c : c = d;
24    }
25}
26