@Override public DSLExpression visitCall(Call binary) { ExecutableElement method = binary.getResolvedMethod(); if (!method.getSimpleName().toString().equals("equals")) { return binary; } if (method.getModifiers().contains(Modifier.STATIC)) { return binary; } if (!ElementUtils.typeEquals(method.getReturnType(), context.getType(boolean.class))) { return binary; } if (method.getParameters().size() != 1) { return binary; } // signature: receiver.equals(receiver) can be folded to true DSLExpression receiver = binary.getReceiver(); DSLExpression firstArg = binary.getParameters().get(0); if (receiver instanceof Variable && firstArg instanceof Variable) { if (receiver.equals(firstArg)) { return new BooleanLiteral(true); } } return super.visitCall(binary); }
if (parameters.size() != call.getParameters().size()) { continue outer; for (DSLExpression expression : call.getParameters()) { TypeMirror sourceType = expression.getResolvedType(); TypeMirror targetType = parameters.get(parameterIndex).asType(); StringBuilder arguments = new StringBuilder(); String sep = ""; for (DSLExpression expression : call.getParameters()) { arguments.append(sep).append(ElementUtils.getSimpleName(expression.getResolvedType())); sep = ", ";
if (parameters.size() != call.getParameters().size()) { continue outer; for (DSLExpression expression : call.getParameters()) { TypeMirror sourceType = expression.getResolvedType(); TypeMirror targetType = parameters.get(parameterIndex).asType(); StringBuilder arguments = new StringBuilder(); String sep = ""; for (DSLExpression expression : call.getParameters()) { arguments.append(sep).append(ElementUtils.getSimpleName(expression.getResolvedType())); sep = ", ";
@Override public DSLExpression reduce(DSLExpressionReducer reducer) { DSLExpression newReceiver = null; if (receiver != null) { newReceiver = receiver.reduceImpl(reducer); } boolean parameterChanged = false; List<DSLExpression> newParameters = new ArrayList<>(); for (DSLExpression param : getParameters()) { DSLExpression newParam = param.reduceImpl(reducer); if (newParam != param) { parameterChanged = true; newParameters.add(newParam); } else { newParameters.add(param); } } Call c = this; if (newReceiver != receiver || parameterChanged) { c = new Call(newReceiver, getName(), newParameters); c.setResolvedMethod(getResolvedMethod()); c.setResolvedTargetType(getResolvedTargetType()); } return reducer.visitCall(c); }
@Override public void accept(DSLExpressionVisitor visitor) { if (receiver != null) { receiver.accept(visitor); } for (DSLExpression parameter : getParameters()) { parameter.accept(visitor); } visitor.visitCall(this); }
@Override public void accept(DSLExpressionVisitor visitor) { if (receiver != null) { receiver.accept(visitor); } for (DSLExpression parameter : getParameters()) { parameter.accept(visitor); } visitor.visitCall(this); }