diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-24 18:10:50 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-24 18:12:11 +0000 |
| commit | ac32b4030f744f25144ef23d62216a01a68d9b0e (patch) | |
| tree | b3a741a00b2b9862ed802e957e855a723008dfb1 /src/main/java/org/zwobble/couscous/frontends | |
| parent | 5fe2fa7934197d73bc1f6a3e361149923279b35a (diff) | |
Tidy up NodeTransformer
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java index f9cfd85..35ed03e 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -7,6 +7,7 @@ import org.eclipse.jdt.core.dom.*; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.sugar.AnonymousClass; import org.zwobble.couscous.ast.sugar.Lambda; +import org.zwobble.couscous.ast.visitors.NodeTransformer; import org.zwobble.couscous.util.ExtraLists; import java.io.IOException; @@ -117,22 +118,8 @@ public class JavaReader { Map<ExpressionNode, ExpressionNode> replacements = Maps.transformValues( Maps.uniqueIndex(freeVariables, variable -> variable.freeVariable), freeVariable -> captureAccess(className, freeVariable)); - Function<ExpressionNode, ExpressionNode> replaceExpression = new CaptureReplacer(replacements); - return eagerMap(body, statement -> statement.replaceExpressions(replaceExpression)); - } - - private class CaptureReplacer implements Function<ExpressionNode, ExpressionNode> { - private final Map<ExpressionNode, ExpressionNode> replacements; - - public CaptureReplacer(Map<ExpressionNode, ExpressionNode> replacements) { - this.replacements = replacements; - } - - @Override - public ExpressionNode apply(ExpressionNode expression) { - return Optional.ofNullable(replacements.get(expression)) - .orElseGet(() -> expression.replaceExpressions(this)); - } + NodeTransformer transformer = NodeTransformer.replaceExpressions(replacements); + return eagerMap(body, statement -> statement.transform(transformer)); } private ConstructorNode buildConstructor(Scope outerScope, TypeName type, List<CapturedVariable> freeVariables) { |
