diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-01 17:06:15 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-01 17:06:15 +0000 |
| commit | a7361e28f7634a8d70d3c1079f8c775d8f50c1ee (patch) | |
| tree | 90d3ea20bf059425eb0e977e5e2f2374f61fa6af /src/main | |
| parent | 65d04d8faa839c76b3a3841b937b8353da261d19 (diff) | |
Create Lambda directly from LambdaExpression
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java | 25 |
2 files changed, 8 insertions, 19 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java b/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java index aa6f078..78b2cde 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java @@ -19,7 +19,7 @@ import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf; import static org.zwobble.couscous.util.ExtraLists.eagerMap; public class ExpressionMethodReferenceReader { - public static Lambda toLambda(ExpressionMethodReference expression) { + public static Lambda javaExpressionmethodReferenceToLambda(ExpressionMethodReference expression) { IMethodBinding functionalInterfaceMethod = expression.resolveTypeBinding().getFunctionalInterfaceMethod(); List<FormalArgumentNode> formalArguments = formalArguments(functionalInterfaceMethod); 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 4b84011..1e50bfd 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -27,12 +27,11 @@ import static org.zwobble.couscous.ast.FieldAccessNode.fieldAccess; import static org.zwobble.couscous.ast.FieldDeclarationNode.field; import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.ReturnNode.returns; -import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference; import static org.zwobble.couscous.ast.VariableDeclaration.var; import static org.zwobble.couscous.ast.VariableReferenceNode.reference; import static org.zwobble.couscous.ast.sugar.Lambda.lambda; -import static org.zwobble.couscous.frontends.java.ExpressionMethodReferenceReader.toLambda; +import static org.zwobble.couscous.frontends.java.ExpressionMethodReferenceReader.javaExpressionmethodReferenceToLambda; import static org.zwobble.couscous.frontends.java.FreeVariables.findFreeVariables; import static org.zwobble.couscous.frontends.java.JavaTypes.*; import static org.zwobble.couscous.util.Casts.tryCast; @@ -70,12 +69,10 @@ public class JavaReader { } GeneratedClosure readExpressionMethodReference(ExpressionMethodReference expression) { - IMethodBinding functionalInterfaceMethod = expression.resolveTypeBinding().getFunctionalInterfaceMethod(); - return generateClosure( expression, - functionalInterfaceMethod, - toLambda(expression)); + expression.resolveTypeBinding().getFunctionalInterfaceMethod(), + javaExpressionmethodReferenceToLambda(expression)); } private ITypeBinding findDeclaringClass(ASTNode node) { @@ -86,15 +83,10 @@ public class JavaReader { } GeneratedClosure readLambda(LambdaExpression expression) { - IMethodBinding functionalInterfaceMethod = expression.resolveTypeBinding().getFunctionalInterfaceMethod(); - FunctionDeclaration lambda = functionDeclaration(expression); - return generateClosure( expression, - functionalInterfaceMethod, - lambda( - lambda.getFormalArguments(), - lambda.getBody())); + expression.resolveTypeBinding().getFunctionalInterfaceMethod(), + javaLambdaToLambda(expression)); } GeneratedClosure generateClosure(ASTNode node, IMethodBinding functionalInterfaceMethod, Lambda lambda) { @@ -295,15 +287,12 @@ public class JavaReader { readStatements(statements, returnType)); } - private FunctionDeclaration functionDeclaration(LambdaExpression expression) { + private Lambda javaLambdaToLambda(LambdaExpression expression) { List<FormalArgumentNode> formalArguments = eagerMap( (List<?>)expression.parameters(), this::readLambdaExpressionParameter); - return new FunctionDeclaration( - eagerMap(asList(expression.resolveMethodBinding().getAnnotations()), this::readAnnotation), - formalArguments, - readLambdaExpressionBody(expression)); + return lambda(formalArguments, readLambdaExpressionBody(expression)); } private AnnotationNode readAnnotation(IAnnotationBinding annotationBinding) { |
