From c0c4e25109fba5bb50c8fc647903a1951a63dfce Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 6 Dec 2015 11:22:36 +0000 Subject: Extract common code for capture access --- .../org/zwobble/couscous/frontends/java/JavaReader.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/main/java/org/zwobble') 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 a9531e6..6f5780f 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -82,10 +82,7 @@ public class JavaReader { { Map freeVariablesById = Maps.transformValues( Maps.uniqueIndex(freeVariables, VariableDeclaration::getId), - freeVariable -> fieldAccess( - thisReference(className), - freeVariable.getName(), - freeVariable.getType())); + freeVariable -> captureAccess(className, freeVariable)); Function replaceExpression = new CaptureReplacer(freeVariablesById); return eagerMap(body, statement -> statement.replaceExpressions(replaceExpression)); } @@ -109,11 +106,15 @@ public class JavaReader { // TODO: generate fresh variables for captures List arguments = eagerMap(freeVariables, FormalArgumentNode::formalArg); List body = eagerMap(freeVariables, freeVariable -> assignStatement( - fieldAccess(thisReference(type), freeVariable.getName(), freeVariable.getType()), - reference(freeVariable))); + captureAccess(type, freeVariable), + reference(freeVariable))); return constructor(arguments, body); } + private FieldAccessNode captureAccess(TypeName type, VariableDeclaration freeVariable) { + return fieldAccess(thisReference(type), freeVariable.getName(), freeVariable.getType()); + } + private TypeName generateClassName(LambdaExpression expression) { return generateAnonymousClassName(expression.resolveMethodBinding().getDeclaringClass()); } -- cgit v1.2.3