@Override public Boolean visit(final NameExpr n1, final Node arg) { final NameExpr n2 = (NameExpr) arg; if (!objEquals(n1.getName(), n2.getName())) { return Boolean.FALSE; } return Boolean.TRUE; }
@Override public Node visit(MethodCallExpr call, List<Statement> preStates) { // Look for a call to a machine property getter final Expression scope = call.getScope(); if (!(scope instanceof NameExpr)) { return super.visit(call, preStates); } final NameExpr nameExpr = (NameExpr) scope; if (!nameExpr.getName().equals(VariableToGetter.SCOPE.getName())) { return super.visit(call, preStates); } // Create variable declaration in pre with the init value set to the call we found final String callName = call.getName(); final int argCount = call.getArgs() == null ? 0 : call.getArgs().size(); final String varName = methodToVarName(callName); final VariableDeclarationExpr preState = new VariableDeclarationExpr( ModifierSet.FINAL, getReturnType(callName, argCount), Collections.singletonList( new VariableDeclarator(new VariableDeclaratorId(varName), call))); preStates.add(new ExpressionStmt(preState)); // Replace the call by a reference to the variable return new NameExpr(varName); }
@Override public Node visit(NameExpr name, Object arg) { return new MethodCallExpr(SCOPE, "get" + capitalize(name.getName())); }