@Override public void generateCode(MethodVisitor mv, CodeFlow cf) { generateComparisonCode(mv, cf, IFGE, IF_ICMPGE); }
@Override public boolean isCompilable() { return isCompilableOperatorUsingNumerics(); }
@Override public BooleanTypedValue getValueInternal(ExpressionState state) throws EvaluationException { Object left = getLeftOperand().getValueInternal(state).getValue(); Object right = getRightOperand().getValueInternal(state).getValue();
@Test public void mixingItUp_propertyAccessIndexerOpLtTernaryRootNull() throws Exception { Payload payload = new Payload(); expression = parser.parseExpression("DR[0].three"); Object v = expression.getValue(payload); assertEquals("Lorg/springframework/expression/spel/SpelCompilationCoverageTests$Three", getAst().getExitDescriptor()); Expression expression = parser.parseExpression("DR[0].three.four lt 0.1d?#root:null"); v = expression.getValue(payload); SpelExpression sExpr = (SpelExpression) expression; Ternary ternary = (Ternary) sExpr.getAST(); OpLT oplt = (OpLT) ternary.getChild(0); CompoundExpression cExpr = (CompoundExpression) oplt.getLeftOperand(); String cExprExitDescriptor = cExpr.getExitDescriptor(); assertEquals("D", cExprExitDescriptor); assertEquals("Z", oplt.getExitDescriptor()); assertCanCompile(expression); Object vc = expression.getValue(payload); assertEquals(payload, v); assertEquals(payload,vc); payload.DR[0].three.four = 0.13d; vc = expression.getValue(payload); assertNull(vc); }
return new OpLT(t.startPos, t.endPos, expr, rhExpr);
@Override public BooleanTypedValue getValueInternal(ExpressionState state) throws EvaluationException { Object left = getLeftOperand().getValueInternal(state).getValue(); Object right = getRightOperand().getValueInternal(state).getValue();
return new OpLT(pos, expr, rhExpr);
@Override public BooleanTypedValue getValueInternal(ExpressionState state) throws EvaluationException { Object left = getLeftOperand().getValueInternal(state).getValue(); Object right = getRightOperand().getValueInternal(state).getValue();
@Override public boolean isCompilable() { return isCompilableOperatorUsingNumerics(); }
@Override public void generateCode(MethodVisitor mv, CodeFlow cf) { generateComparisonCode(mv, cf, IFGE, IF_ICMPGE); }
return new OpLT(pos, expr, rhExpr);
@Override public boolean isCompilable() { return isCompilableOperatorUsingNumerics(); }
@Override public void generateCode(MethodVisitor mv, CodeFlow cf) { generateComparisonCode(mv, cf, IFGE, IF_ICMPGE); }