diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-24 18:14:02 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-24 18:14:02 +0000 |
| commit | c6aabb1b656644fe6cbed271e34adfa829418a31 (patch) | |
| tree | f0bc899b27c195127177203c4b30b2d3d58dfde2 /src/main/java | |
| parent | ac32b4030f744f25144ef23d62216a01a68d9b0e (diff) | |
Add transform to Receiver interface
Diffstat (limited to 'src/main/java')
4 files changed, 5 insertions, 27 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java b/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java index 6a3f42c..cbd4b6e 100644 --- a/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java +++ b/src/main/java/org/zwobble/couscous/ast/InstanceReceiver.java @@ -3,8 +3,6 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.NodeMapper; import org.zwobble.couscous.ast.visitors.NodeTransformer; -import java.util.function.Function; - public class InstanceReceiver implements Receiver { public static Receiver instanceReceiver(ExpressionNode expression) { return new InstanceReceiver(expression); @@ -21,15 +19,11 @@ public class InstanceReceiver implements Receiver { } @Override - public Receiver replaceExpressions(Function<ExpressionNode, ExpressionNode> replace) { - return new InstanceReceiver(replace.apply(expression)); - } - - @Override public <T> T accept(Mapper<T> visitor) { return visitor.visit(expression); } + @Override public Receiver transform(NodeTransformer transformer) { return new InstanceReceiver(transformer.transformExpression(expression)); } diff --git a/src/main/java/org/zwobble/couscous/ast/Receiver.java b/src/main/java/org/zwobble/couscous/ast/Receiver.java index 0e0e077..1afb9b7 100644 --- a/src/main/java/org/zwobble/couscous/ast/Receiver.java +++ b/src/main/java/org/zwobble/couscous/ast/Receiver.java @@ -1,10 +1,10 @@ package org.zwobble.couscous.ast; -import java.util.function.Function; +import org.zwobble.couscous.ast.visitors.NodeTransformer; public interface Receiver extends Node { - Receiver replaceExpressions(Function<ExpressionNode, ExpressionNode> replace); <T> T accept(Mapper<T> mapper); + Receiver transform(NodeTransformer transformer); interface Mapper<T> { T visit(ExpressionNode receiver); diff --git a/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java b/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java index 7814108..84cf266 100644 --- a/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java +++ b/src/main/java/org/zwobble/couscous/ast/StaticReceiver.java @@ -3,8 +3,6 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.ast.visitors.NodeMapper; import org.zwobble.couscous.ast.visitors.NodeTransformer; -import java.util.function.Function; - public class StaticReceiver implements Receiver { public static Receiver staticReceiver(TypeName type) { return new StaticReceiver(type); @@ -21,11 +19,6 @@ public class StaticReceiver implements Receiver { } @Override - public Receiver replaceExpressions(Function<ExpressionNode, ExpressionNode> replace) { - return this; - } - - @Override public <T> T accept(Mapper<T> mapper) { return mapper.visit(type); } @@ -35,6 +28,7 @@ public class StaticReceiver implements Receiver { return visitor.visit(this); } + @Override public Receiver transform(NodeTransformer transformer) { return new StaticReceiver(transformer.transform(type)); } 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 4f7f819..683b3b9 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -191,17 +191,7 @@ public class NodeTransformer { } public Receiver transformReceiver(Receiver receiver) { - return receiver.accept(new Receiver.Mapper<Receiver>() { - @Override - public Receiver visit(ExpressionNode receiver) { - return new InstanceReceiver(receiver.transform(NodeTransformer.this)); - } - - @Override - public Receiver visit(TypeName receiver) { - return new StaticReceiver(transform(receiver)); - } - }); + return receiver.transform(this); } public VariableDeclaration transform(VariableDeclaration declaration) { |
