From 77878219882ebbf2d0a1b7fa49c6f6e90366e11f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 1 Jan 2016 17:07:53 +0000 Subject: Rename {->Java}ExpressionMethodReferenceReader --- .../java/ExpressionMethodReferenceReader.java | 48 ---------------------- .../java/JavaExpressionMethodReferenceReader.java | 48 ++++++++++++++++++++++ .../couscous/frontends/java/JavaReader.java | 2 +- 3 files changed, 49 insertions(+), 49 deletions(-) delete mode 100644 src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java create mode 100644 src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java b/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java deleted file mode 100644 index 78b2cde..0000000 --- a/src/main/java/org/zwobble/couscous/frontends/java/ExpressionMethodReferenceReader.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.zwobble.couscous.frontends.java; - -import com.google.common.collect.ImmutableList; -import org.eclipse.jdt.core.dom.ExpressionMethodReference; -import org.eclipse.jdt.core.dom.IMethodBinding; -import org.eclipse.jdt.core.dom.ITypeBinding; -import org.zwobble.couscous.ast.FormalArgumentNode; -import org.zwobble.couscous.ast.VariableReferenceNode; -import org.zwobble.couscous.ast.sugar.Lambda; - -import java.util.List; - -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.VariableDeclaration.var; -import static org.zwobble.couscous.ast.sugar.Lambda.lambda; -import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf; -import static org.zwobble.couscous.util.ExtraLists.eagerMap; - -public class ExpressionMethodReferenceReader { - public static Lambda javaExpressionmethodReferenceToLambda(ExpressionMethodReference expression) { - IMethodBinding functionalInterfaceMethod = expression.resolveTypeBinding().getFunctionalInterfaceMethod(); - List formalArguments = formalArguments(functionalInterfaceMethod); - - return lambda( - formalArguments, - ImmutableList.of(returns(JavaExpressionReader.handleBoxing( - typeOf(functionalInterfaceMethod.getReturnType()), - staticMethodCall( - typeOf(expression.resolveMethodBinding().getDeclaringClass()), - expression.getName().getIdentifier(), - eagerMap(formalArguments, VariableReferenceNode::reference), - typeOf(expression.resolveMethodBinding().getReturnType())))))); - } - - private static List formalArguments(IMethodBinding functionalInterfaceMethod) { - ImmutableList.Builder arguments = ImmutableList.builder(); - - ITypeBinding[] parameterTypes = functionalInterfaceMethod.getParameterTypes(); - for (int index = 0; index < parameterTypes.length; index++) { - ITypeBinding parameterType = parameterTypes[index]; - arguments.add(formalArg(var("arg" + index, "arg" + index, typeOf(parameterType)))); - } - - return arguments.build(); - } -} diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java new file mode 100644 index 0000000..ddd5830 --- /dev/null +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java @@ -0,0 +1,48 @@ +package org.zwobble.couscous.frontends.java; + +import com.google.common.collect.ImmutableList; +import org.eclipse.jdt.core.dom.ExpressionMethodReference; +import org.eclipse.jdt.core.dom.IMethodBinding; +import org.eclipse.jdt.core.dom.ITypeBinding; +import org.zwobble.couscous.ast.FormalArgumentNode; +import org.zwobble.couscous.ast.VariableReferenceNode; +import org.zwobble.couscous.ast.sugar.Lambda; + +import java.util.List; + +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.VariableDeclaration.var; +import static org.zwobble.couscous.ast.sugar.Lambda.lambda; +import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf; +import static org.zwobble.couscous.util.ExtraLists.eagerMap; + +public class JavaExpressionMethodReferenceReader { + public static Lambda javaExpressionmethodReferenceToLambda(ExpressionMethodReference expression) { + IMethodBinding functionalInterfaceMethod = expression.resolveTypeBinding().getFunctionalInterfaceMethod(); + List formalArguments = formalArguments(functionalInterfaceMethod); + + return lambda( + formalArguments, + ImmutableList.of(returns(JavaExpressionReader.handleBoxing( + typeOf(functionalInterfaceMethod.getReturnType()), + staticMethodCall( + typeOf(expression.resolveMethodBinding().getDeclaringClass()), + expression.getName().getIdentifier(), + eagerMap(formalArguments, VariableReferenceNode::reference), + typeOf(expression.resolveMethodBinding().getReturnType())))))); + } + + private static List formalArguments(IMethodBinding functionalInterfaceMethod) { + ImmutableList.Builder arguments = ImmutableList.builder(); + + ITypeBinding[] parameterTypes = functionalInterfaceMethod.getParameterTypes(); + for (int index = 0; index < parameterTypes.length; index++) { + ITypeBinding parameterType = parameterTypes[index]; + arguments.add(formalArg(var("arg" + index, "arg" + index, typeOf(parameterType)))); + } + + return arguments.build(); + } +} 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 1e50bfd..b36ece3 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java @@ -31,7 +31,7 @@ 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.javaExpressionmethodReferenceToLambda; +import static org.zwobble.couscous.frontends.java.JavaExpressionMethodReferenceReader.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; -- cgit v1.2.3