aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-01 17:06:15 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-01 17:06:15 +0000
commita7361e28f7634a8d70d3c1079f8c775d8f50c1ee (patch)
tree90d3ea20bf059425eb0e977e5e2f2374f61fa6af /src/main/java
parent65d04d8faa839c76b3a3841b937b8353da261d19 (diff)
Create Lambda directly from LambdaExpression
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java2
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java25
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) {