diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-15 15:31:09 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-15 15:31:09 +0000 |
| commit | bacc781ea755d3771e1c8d09e1fbfd873872f750 (patch) | |
| tree | c4b4fbfa93fbaa79afaae77bb9978f6ad0ba15bf /src/main/java/org/zwobble/couscous/ast/StatementNode.java | |
| parent | 549099039ef76a04ed524448c070a0c5328c52b2 (diff) | |
Allow descendants of nodes to be traversed
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/StatementNode.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/StatementNode.java | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/StatementNode.java b/src/main/java/org/zwobble/couscous/ast/StatementNode.java index 6ba198f..a052917 100644 --- a/src/main/java/org/zwobble/couscous/ast/StatementNode.java +++ b/src/main/java/org/zwobble/couscous/ast/StatementNode.java @@ -1,43 +1,37 @@ package org.zwobble.couscous.ast; -import org.zwobble.couscous.ast.visitors.NodeVisitor; +import org.zwobble.couscous.ast.visitors.NodeMapper; import org.zwobble.couscous.ast.visitors.StatementNodeMapper; public interface StatementNode extends Node { <T> T accept(StatementNodeMapper<T> visitor); @Override - default void accept(NodeVisitor visitor) { - accept(new StatementNodeMapper<Void>() { + default <T> T accept(NodeMapper<T> visitor) { + return accept(new StatementNodeMapper<T>() { @Override - public Void visit(ReturnNode returnNode) { - visitor.visit(returnNode); - return null; + public T visit(ReturnNode returnNode) { + return visitor.visit(returnNode); } @Override - public Void visit(ExpressionStatementNode expressionStatement) { - visitor.visit(expressionStatement); - return null; + public T visit(ExpressionStatementNode expressionStatement) { + return visitor.visit(expressionStatement); } @Override - public Void visit( - LocalVariableDeclarationNode localVariableDeclaration) { - visitor.visit(localVariableDeclaration); - return null; + public T visit(LocalVariableDeclarationNode localVariableDeclaration) { + return visitor.visit(localVariableDeclaration); } @Override - public Void visit(IfStatementNode ifStatement) { - visitor.visit(ifStatement); - return null; + public T visit(IfStatementNode ifStatement) { + return visitor.visit(ifStatement); } @Override - public Void visit(WhileNode whileLoop) { - visitor.visit(whileLoop); - return null; + public T visit(WhileNode whileLoop) { + return visitor.visit(whileLoop); } }); } |
