This is an automated email from the ASF dual-hosted git repository. sunlan pushed a commit to branch GROOVY-8258 in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 0c7a6fe0c2f7f786a07b04719944a13923144084 Author: Daniel Sun <[email protected]> AuthorDate: Mon Oct 5 04:40:58 2020 +0800 GROOVY-8258: use lambda instead --- src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java | 9 +++++++++ .../groovy/org/apache/groovy/linq/LinqGroovyMethods.groovy | 10 +++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java index 6abbe61..15e4db6 100644 --- a/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java +++ b/src/main/java/org/codehaus/groovy/ast/tools/GeneralUtils.java @@ -43,6 +43,7 @@ import org.codehaus.groovy.ast.expr.ConstructorCallExpression; import org.codehaus.groovy.ast.expr.DeclarationExpression; import org.codehaus.groovy.ast.expr.Expression; import org.codehaus.groovy.ast.expr.FieldExpression; +import org.codehaus.groovy.ast.expr.LambdaExpression; import org.codehaus.groovy.ast.expr.ListExpression; import org.codehaus.groovy.ast.expr.MapEntryExpression; import org.codehaus.groovy.ast.expr.MapExpression; @@ -251,6 +252,14 @@ public class GeneralUtils { return closureX(Parameter.EMPTY_ARRAY, code); } + public static LambdaExpression lambdaX(final Parameter[] params, final Statement code) { + return new LambdaExpression(params, code); + } + + public static LambdaExpression lambdaX(final Statement code) { + return lambdaX(Parameter.EMPTY_ARRAY, code); + } + /** * Builds a binary expression that compares two values. * diff --git a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/LinqGroovyMethods.groovy b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/LinqGroovyMethods.groovy index 71c3fe5..ad132e2 100644 --- a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/LinqGroovyMethods.groovy +++ b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/LinqGroovyMethods.groovy @@ -32,7 +32,7 @@ import org.codehaus.groovy.macro.runtime.Macro import org.codehaus.groovy.macro.runtime.MacroContext import static org.codehaus.groovy.ast.tools.GeneralUtils.callX -import static org.codehaus.groovy.ast.tools.GeneralUtils.closureX +import static org.codehaus.groovy.ast.tools.GeneralUtils.lambdaX import static org.codehaus.groovy.ast.tools.GeneralUtils.param import static org.codehaus.groovy.ast.tools.GeneralUtils.params import static org.codehaus.groovy.ast.tools.GeneralUtils.stmt @@ -93,20 +93,20 @@ class LinqGroovyMethods { selectMethodReceiver = from if (linqContext.whereList.size() > 0) { - MethodCallExpression where = callXWithClosure(from, "where", aliasVariable.name, linqContext.whereList[0]) + MethodCallExpression where = callXWithLambda(from, "where", aliasVariable.name, linqContext.whereList[0]) selectMethodReceiver = where } - MethodCallExpression select = callXWithClosure(selectMethodReceiver, "select", aliasVariable.name, linqContext.selectList[0]) + MethodCallExpression select = callXWithLambda(selectMethodReceiver, "select", aliasVariable.name, linqContext.selectList[0]) return select } - private static callXWithClosure(Expression receiver, String methodName, String closureParamName, Expression closureCode) { + private static callXWithLambda(Expression receiver, String methodName, String closureParamName, Expression closureCode) { callX( receiver, methodName, - closureX( + lambdaX( params(param(ClassHelper.DYNAMIC_TYPE, closureParamName)), stmt(closureCode) )
