@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); }
private boolean isMethodAccessMember(Call call) { if (!call.getResolvedMethod().getModifiers().contains(STATIC)) { DSLExpression receiver = call.getReceiver(); if (receiver instanceof Variable) { return isVariableAccessMember((Variable) receiver); } else if (receiver instanceof Call) { return isMethodAccessMember((Call) receiver); } return true; } return false; }
public void visitCall(Call call) { List<ExecutableElement> lookupMethods; DSLExpression receiver = call.getReceiver(); if (receiver == null) { lookupMethods = this.methods;
public void visitCall(Call call) { List<ExecutableElement> lookupMethods; DSLExpression receiver = call.getReceiver(); if (receiver == null) { lookupMethods = this.methods;
public void visitCall(Call call) { ExecutableElement method = call.getResolvedMethod(); CodeTree[] parameters = new CodeTree[method.getParameters().size()]; for (int i = 0; i < parameters.length; i++) { parameters[parameters.length - i - 1] = pop(); } CodeTreeBuilder builder = CodeTreeBuilder.createBuilder(); if (call.getResolvedMethod().getKind() == ElementKind.CONSTRUCTOR) { builder.startNew(call.getResolvedType()); } else if (call.getReceiver() == null) { if (isStatic(method)) { builder.startStaticCall(method); } else { if (root != null) { builder.tree(root).string("."); } builder.startCall(method.getSimpleName().toString()); } } else { if (isStatic(method)) { throw new AssertionError("Static calls must not have receivers."); } builder.startCall(pop(), method.getSimpleName().toString()); } for (CodeTree parameter : parameters) { builder.tree(parameter); } builder.end(); push(builder.build()); }
public void visitCall(Call call) { ExecutableElement method = call.getResolvedMethod(); CodeTree[] parameters = new CodeTree[method.getParameters().size()]; for (int i = 0; i < parameters.length; i++) { parameters[parameters.length - i - 1] = pop(); } CodeTreeBuilder builder = CodeTreeBuilder.createBuilder(); if (call.getResolvedMethod().getKind() == ElementKind.CONSTRUCTOR) { builder.startNew(call.getResolvedType()); } else if (call.getReceiver() == null) { if (isStatic(method)) { builder.startStaticCall(method); } else { if (root != null) { builder.tree(root).string("."); } builder.startCall(method.getSimpleName().toString()); } } else { if (isStatic(method)) { throw new AssertionError("Static calls must not have receivers."); } builder.startCall(pop(), method.getSimpleName().toString()); } for (CodeTree parameter : parameters) { builder.tree(parameter); } builder.end(); push(builder.build()); }