From bacc781ea755d3771e1c8d09e1fbfd873872f750 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 15 Nov 2015 15:31:09 +0000 Subject: Allow descendants of nodes to be traversed --- .../org/zwobble/couscous/ast/ExpressionNode.java | 51 +++++++++------------- 1 file changed, 21 insertions(+), 30 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/ast/ExpressionNode.java') diff --git a/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java b/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java index 8210ae1..65757ad 100644 --- a/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java +++ b/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java @@ -1,67 +1,58 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; -import org.zwobble.couscous.ast.visitors.NodeVisitor; +import org.zwobble.couscous.ast.visitors.NodeMapper; public interface ExpressionNode extends Node { TypeName getType(); T accept(ExpressionNodeMapper visitor); @Override - default void accept(NodeVisitor visitor) { - accept(new ExpressionNodeMapper() { + default T accept(NodeMapper visitor) { + return accept(new ExpressionNodeMapper() { @Override - public Void visit(LiteralNode literal) { - visitor.visit(literal); - return null; + public T visit(LiteralNode literal) { + return visitor.visit(literal); } @Override - public Void visit(VariableReferenceNode variableReference) { - visitor.visit(variableReference); - return null; + public T visit(VariableReferenceNode variableReference) { + return visitor.visit(variableReference); } @Override - public Void visit(ThisReferenceNode reference) { - visitor.visit(reference); - return null; + public T visit(ThisReferenceNode reference) { + return visitor.visit(reference); } @Override - public Void visit(AssignmentNode assignment) { - visitor.visit(assignment); - return null; + public T visit(AssignmentNode assignment) { + return visitor.visit(assignment); } @Override - public Void visit(TernaryConditionalNode ternaryConditional) { - visitor.visit(ternaryConditional); - return null; + public T visit(TernaryConditionalNode ternaryConditional) { + return visitor.visit(ternaryConditional); } @Override - public Void visit(MethodCallNode methodCall) { - visitor.visit(methodCall); - return null; + public T visit(MethodCallNode methodCall) { + return visitor.visit(methodCall); } @Override - public Void visit(StaticMethodCallNode staticMethodCall) { - visitor.visit(staticMethodCall); - return null; + public T visit(StaticMethodCallNode staticMethodCall) { + return visitor.visit(staticMethodCall); } @Override - public Void visit(ConstructorCallNode call) { - visitor.visit(call); - return null; + public T visit(ConstructorCallNode call) { + return visitor.visit(call); } @Override - public Void visit(FieldAccessNode fieldAccess) { - visitor.visit(fieldAccess); - return null; + public T visit(FieldAccessNode fieldAccess) { + return visitor.visit(fieldAccess); } }); } -- cgit v1.2.3