@Override public Void visitConditionalExpression(final ConditionalExpression node, final Void data) { super.visitConditionalExpression(node, data); final Expression condition = node.getCondition(); final ResolveResult conditionResult = _resolver.apply(condition); if (conditionResult != null && TypeUtilities.isArithmetic(conditionResult.getType())) { convertNumericToBoolean(condition, conditionResult.getType()); } return null; }
@Override public Void visitConditionalExpression(final ConditionalExpression node, final Void data) { super.visitConditionalExpression(node, data); final Expression condition = node.getCondition(); final ResolveResult conditionResult = _resolver.apply(condition); if (conditionResult != null && TypeUtilities.isArithmetic(conditionResult.getType())) { convertNumericToBoolean(condition, conditionResult.getType()); } return null; }
@Override public Void visitConditionalExpression(final ConditionalExpression node, final Void data) { super.visitConditionalExpression(node, data); final Expression condition = node.getCondition(); final ResolveResult conditionResult = _resolver.apply(condition); if (conditionResult != null && TypeUtilities.isArithmetic(conditionResult.getType())) { convertNumericToBoolean(condition, conditionResult.getType()); } return null; }
@Override public Void visitConditionalExpression(final ConditionalExpression node, final Void data) { super.visitConditionalExpression(node, data); final Match m = PATTERN.match(node); if (m.success()) { final InvocationExpression call = firstOrDefault(m.<InvocationExpression>get("methodCall")); final MemberReference method = call != null ? call.getUserData(Keys.MEMBER_REFERENCE) : null; if (method == null || !method.isEquivalentTo(_method)) { return null; } final PrimitiveExpression className = firstOrDefault(m.<PrimitiveExpression>get("class")); if (className != null && className.getValue() instanceof String) { final AstBuilder builder = context.getUserData(Keys.AST_BUILDER); final String dottedName = (String) className.getValue(); final TypeReference classType = _parser.parseTypeDescriptor(dottedName.replace('.', '/')); final ClassOfExpression replacement = new ClassOfExpression( call.getOffset(), builder.convertType(classType) ); node.replaceWith(replacement); } } return null; }
@Override public AstNode visitConditionalExpression(final ConditionalExpression node, final Void data) { final Expression condition = node.getCondition(); final Expression trueExpression = node.getTrueExpression(); final Expression falseExpression = node.getFalseExpression(); if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); node.replaceWith(condition); return condition.acceptVisitor(this, data); } else if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); final Expression negatedCondition = new UnaryOperatorExpression(UnaryOperatorType.NOT, condition); node.replaceWith(negatedCondition); return negatedCondition.acceptVisitor(this, data); } return super.visitConditionalExpression(node, data); }
@Override public AstNode visitConditionalExpression(final ConditionalExpression node, final Void data) { final Expression condition = node.getCondition(); final Expression trueExpression = node.getTrueExpression(); final Expression falseExpression = node.getFalseExpression(); if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); node.replaceWith(condition); return condition.acceptVisitor(this, data); } else if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); final Expression negatedCondition = new UnaryOperatorExpression(UnaryOperatorType.NOT, condition); node.replaceWith(negatedCondition); return negatedCondition.acceptVisitor(this, data); } return super.visitConditionalExpression(node, data); }
@Override public AstNode visitConditionalExpression(final ConditionalExpression node, final Void data) { final Expression condition = node.getCondition(); final Expression trueExpression = node.getTrueExpression(); final Expression falseExpression = node.getFalseExpression(); if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); node.replaceWith(condition); return condition.acceptVisitor(this, data); } else if (TRUE_CONSTANT.matches(trueExpression) && FALSE_CONSTANT.matches(falseExpression)) { condition.remove(); trueExpression.remove(); falseExpression.remove(); final Expression negatedCondition = new UnaryOperatorExpression(UnaryOperatorType.NOT, condition); node.replaceWith(negatedCondition); return negatedCondition.acceptVisitor(this, data); } return super.visitConditionalExpression(node, data); }