aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/ExpressionNode.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-15 15:31:09 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-15 15:31:09 +0000
commitbacc781ea755d3771e1c8d09e1fbfd873872f750 (patch)
treec4b4fbfa93fbaa79afaae77bb9978f6ad0ba15bf /src/main/java/org/zwobble/couscous/ast/ExpressionNode.java
parent549099039ef76a04ed524448c070a0c5328c52b2 (diff)
Allow descendants of nodes to be traversed
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/ExpressionNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ExpressionNode.java51
1 files changed, 21 insertions, 30 deletions
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> T accept(ExpressionNodeMapper<T> visitor);
@Override
- default void accept(NodeVisitor visitor) {
- accept(new ExpressionNodeMapper<Void>() {
+ default <T> T accept(NodeMapper<T> visitor) {
+ return accept(new ExpressionNodeMapper<T>() {
@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);
}
});
}