@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } ModelASTTreeStep that = (ModelASTTreeStep) o; return getChildren() != null ? getChildren().equals(that.getChildren()) : that.getChildren() == null; }
@Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (getChildren() != null ? getChildren().hashCode() : 0); return result; } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } if (!super.equals(o)) { return false; } ModelASTTreeStep that = (ModelASTTreeStep) o; return getChildren() != null ? getChildren().equals(that.getChildren()) : that.getChildren() == null; }
@Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (getChildren() != null ? getChildren().hashCode() : 0); return result; } }
/** * Call {@link #transformStep(ModelASTStep, MethodCallExpression)} if appropriate, after handling any nested steps as well. */ @Nonnull public final MethodCallExpression handleStep(@Nonnull ModelASTStep step, @Nonnull MethodCallExpression methodCall) { // No transformation inside script blocks. if (step instanceof AbstractModelASTCodeBlock) { return methodCall; } TupleExpression originalArgs = (TupleExpression) methodCall.getArguments(); if (step instanceof ModelASTTreeStep && originalArgs.getExpressions().size() > 0) { ArgumentListExpression newArgs = new ArgumentListExpression(); // Technically we can't get here if there 0 expressions, so the loop below is safe. for (int i = 0; i < originalArgs.getExpressions().size() - 1; i++) { newArgs.addExpression(originalArgs.getExpression(i)); } ClosureExpression originalClosure = (ClosureExpression) originalArgs.getExpression(originalArgs.getExpressions().size() - 1); BlockStatement newBlock = block(); for (ModelASTStep nested : ((ModelASTTreeStep) step).getChildren()) { ExpressionStatement es = (ExpressionStatement) nested.getSourceLocation(); newBlock.addStatement(stmt(handleStep(nested, (MethodCallExpression)es.getExpression()))); } originalClosure.setCode(newBlock); newArgs.addExpression(originalClosure); methodCall.setArguments(newArgs); } return transformStep(step, methodCall); }
assertEquals(1, treeStep.getChildren().size()); assertEquals("echo", treeStep.getChildren().get(0).getName()); assertNull(treeStep.getChildren().get(0).getSourceLocation());