aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/visitors
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-24 16:01:06 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-24 16:01:06 +0000
commitf2ed6b591da6149319c149d1c78694bfa9641a73 (patch)
tree65cbe4fe98c28d4e0e4c130936d0dff8098bc489 /src/main/java/org/zwobble/couscous/ast/visitors
parente448dbcfaab619dc85d0d6d7f4b3dfe827646e38 (diff)
Implement visitors on OperationNode instead of desugarring
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/visitors')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/ExpressionNodeMapper.java2
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeMapper.java1
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeMapperWithDefault.java7
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java5
-rw-r--r--src/main/java/org/zwobble/couscous/ast/visitors/NodeVisitor.java1
5 files changed, 15 insertions, 1 deletions
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> {
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> {
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<T> implements NodeMapper<T> {
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
@@ -57,6 +57,11 @@ public class NodeTransformer implements ExpressionNodeMapper<ExpressionNode>, St
}
@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);