diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java index 022e10c0b3..73ad67603e 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java @@ -112,7 +112,13 @@ public class OpEQ extends Operator { } else { getLeftOperand().generateCode(mv, cf); + if (leftPrim) { + CodeFlow.insertBoxIfNecessary(mv, leftDesc.charAt(0)); + } getRightOperand().generateCode(mv, cf); + if (rightPrim) { + CodeFlow.insertBoxIfNecessary(mv, rightDesc.charAt(0)); + } Label leftNotNull = new Label(); mv.visitInsn(DUP_X1); // Dup right on the top of the stack mv.visitJumpInsn(IFNONNULL,leftNotNull); diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java index 53193a479a..022d94157c 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java @@ -1285,7 +1285,20 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { @Test public void opEq() throws Exception { - + String tvar = "35"; + expression = parse("#root == 35"); + Boolean bb = (Boolean)expression.getValue(tvar); + System.out.println(bb); + assertFalse((Boolean)expression.getValue(tvar)); + assertCanCompile(expression); + assertFalse((Boolean)expression.getValue(tvar)); + + expression = parse("35 == #root"); + expression.getValue(tvar); + assertFalse((Boolean)expression.getValue(tvar)); + assertCanCompile(expression); + assertFalse((Boolean)expression.getValue(tvar)); + TestClass7 tc7 = new TestClass7(); expression = parse("property == 'UK'"); assertTrue((Boolean)expression.getValue(tc7));