From ac32b4030f744f25144ef23d62216a01a68d9b0e Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 24 Jan 2016 18:10:50 +0000 Subject: Tidy up NodeTransformer --- .../zwobble/couscous/frontends/java/JavaReader.java | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/frontends') 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 replacements = Maps.transformValues( Maps.uniqueIndex(freeVariables, variable -> variable.freeVariable), freeVariable -> captureAccess(className, freeVariable)); - Function replaceExpression = new CaptureReplacer(replacements); - return eagerMap(body, statement -> statement.replaceExpressions(replaceExpression)); - } - - private class CaptureReplacer implements Function { - private final Map replacements; - - public CaptureReplacer(Map 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 freeVariables) { -- cgit v1.2.3