@@ -27,7 +27,7 @@ public enum Operator {
27
27
28
28
private final String name ;
29
29
30
- private Operator (String name ) {
30
+ Operator (String name ) {
31
31
this .name = name ;
32
32
}
33
33
@@ -36,7 +36,8 @@ public String getName() {
36
36
}
37
37
}
38
38
39
- public final Node expr1 , expr2 ;
39
+ public final Node expr1 ;
40
+ public final Node expr2 ;
40
41
public final Operator operation ;
41
42
42
43
public ConditionalExpression (Operator operation , Node expr1 , Node expr2 ) {
@@ -47,25 +48,20 @@ public ConditionalExpression(Operator operation, Node expr1, Node expr2) {
47
48
48
49
@ Override
49
50
public Value eval () {
50
- switch (operation ) {
51
- case AND :
52
- return NumberValue .fromBoolean ((expr1AsInt () != 0 ) && (expr2AsInt () != 0 ));
53
- case OR :
54
- return NumberValue .fromBoolean ((expr1AsInt () != 0 ) || (expr2AsInt () != 0 ));
55
-
56
- case NULL_COALESCE :
57
- return nullCoalesce ();
58
-
59
- default :
60
- return NumberValue .fromBoolean (evalAndCompare ());
61
- }
51
+ return switch (operation ) {
52
+ case AND -> NumberValue .fromBoolean ((expr1AsInt () != 0 ) && (expr2AsInt () != 0 ));
53
+ case OR -> NumberValue .fromBoolean ((expr1AsInt () != 0 ) || (expr2AsInt () != 0 ));
54
+ case NULL_COALESCE -> nullCoalesce ();
55
+ default -> NumberValue .fromBoolean (evalAndCompare ());
56
+ };
62
57
}
63
58
64
59
private boolean evalAndCompare () {
65
60
final Value value1 = expr1 .eval ();
66
61
final Value value2 = expr2 .eval ();
67
62
68
- double number1 , number2 ;
63
+ double number1 ;
64
+ double number2 ;
69
65
if (value1 .type () == Types .NUMBER ) {
70
66
number1 = value1 .asNumber ();
71
67
number2 = value2 .asNumber ();
@@ -74,18 +70,15 @@ private boolean evalAndCompare() {
74
70
number2 = 0 ;
75
71
}
76
72
77
- switch (operation ) {
78
- case EQUALS : return number1 == number2 ;
79
- case NOT_EQUALS : return number1 != number2 ;
80
-
81
- case LT : return number1 < number2 ;
82
- case LTEQ : return number1 <= number2 ;
83
- case GT : return number1 > number2 ;
84
- case GTEQ : return number1 >= number2 ;
85
-
86
- default :
87
- throw new OperationIsNotSupportedException (operation );
88
- }
73
+ return switch (operation ) {
74
+ case EQUALS -> number1 == number2 ;
75
+ case NOT_EQUALS -> number1 != number2 ;
76
+ case LT -> number1 < number2 ;
77
+ case LTEQ -> number1 <= number2 ;
78
+ case GT -> number1 > number2 ;
79
+ case GTEQ -> number1 >= number2 ;
80
+ default -> throw new OperationIsNotSupportedException (operation );
81
+ };
89
82
}
90
83
91
84
private Value nullCoalesce () {
0 commit comments