From f2ed6b591da6149319c149d1c78694bfa9641a73 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 24 Jan 2016 16:01:06 +0000 Subject: Implement visitors on OperationNode instead of desugarring --- .../org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java | 2 ++ src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java | 1 + .../org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java | 7 ++++++- .../java/org/zwobble/couscous/ast/visitors/NodeTransformer.java | 5 +++++ src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/main/java/org/zwobble/couscous/ast/visitors') diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java b/src/main/java/org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java index c296a30..2836a22 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java @@ -10,7 +10,9 @@ public interface ExpressionNodeMapper { T visit(TernaryConditionalNode ternaryConditional); T visit(MethodCallNode methodCall); T visit(ConstructorCallNode call); + T visit(OperationNode operation); T visit(FieldAccessNode fieldAccess); T visit(TypeCoercionNode typeCoercion); T visit(CastNode cast); + } diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java index fb8da13..e0e16a8 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java @@ -10,6 +10,7 @@ public interface NodeMapper { T visit(TernaryConditionalNode ternaryConditional); T visit(MethodCallNode methodCall); T visit(ConstructorCallNode call); + T visit(OperationNode operation); T visit(FieldAccessNode fieldAccess); T visit(TypeCoercionNode typeCoercion); T visit(CastNode cast); diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java index 178442d..fb0b93a 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java @@ -43,7 +43,12 @@ public class NodeMapperWithDefault implements NodeMapper { public T visit(ConstructorCallNode call) { return defaultValue; } - + + @Override + public T visit(OperationNode operation) { + return defaultValue; + } + @Override public T visit(FieldAccessNode fieldAccess) { return defaultValue; diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java index 158b3ce..79a409c 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -56,6 +56,11 @@ public class NodeTransformer implements ExpressionNodeMapper, St return defaultTransformExpression(call); } + @Override + public ExpressionNode visit(OperationNode operationNode) { + return defaultTransformExpression(operationNode); + } + @Override public ExpressionNode visit(FieldAccessNode fieldAccess) { return defaultTransformExpression(fieldAccess); diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java index bf6240b..4a80008 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java @@ -10,6 +10,7 @@ public interface NodeVisitor { void visit(TernaryConditionalNode ternaryConditional); void visit(MethodCallNode methodCall); void visit(ConstructorCallNode call); + void visit(OperationNode operation); void visit(FieldAccessNode fieldAccess); void visit(TypeCoercionNode typeCoercion); void visit(CastNode cast); -- cgit v1.2.3