You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/10/06 13:36:36 UTC
[groovy] 11/22: GROOVY-8258: enable STC
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 189c49d56dc83a7dd27b1597739325ae6a3433bc
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Oct 5 04:50:41 2020 +0800
GROOVY-8258: enable STC
---
.../apache/groovy/linq/LinqGroovyMethods.groovy | 26 ++++++++++++++--------
1 file changed, 17 insertions(+), 9 deletions(-)
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 ad132e2..dba4f9d 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
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.linq
+import groovy.transform.CompileDynamic
+import groovy.transform.CompileStatic
import groovy.transform.ToString
import org.codehaus.groovy.ast.ClassHelper
import org.codehaus.groovy.ast.expr.ArgumentListExpression
@@ -37,6 +39,7 @@ 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
+@CompileStatic
class LinqGroovyMethods {
@Macro
static Expression LINQ(MacroContext ctx, final ClosureExpression closureExpression) {
@@ -54,7 +57,7 @@ class LinqGroovyMethods {
break
}
case 'of': {
- MethodCallExpression fromMethodCallExpression = methodCallExpression.getObjectExpression()
+ MethodCallExpression fromMethodCallExpression = (MethodCallExpression) methodCallExpression.getObjectExpression()
VariableExpression aliasVariable = (VariableExpression) ((ArgumentListExpression) fromMethodCallExpression.getArguments()).getExpression(0)
Expression dataSourceExpression = ((ArgumentListExpression) methodCallExpression.getArguments()).getExpression(0)
linqContext.addFrom(aliasVariable, dataSourceExpression)
@@ -79,16 +82,13 @@ class LinqGroovyMethods {
constructLinqMethodCalls(linqContext)
}
- private static constructLinqMethodCalls(LinqContext linqContext) {
+ private static Expression constructLinqMethodCalls(LinqContext linqContext) {
Map.Entry<VariableExpression, Expression> fromEntry = linqContext.fromMap.entrySet().toList().get(0)
VariableExpression aliasVariable = fromEntry.key
Expression selectMethodReceiver = null
- MethodCallExpression from = macro {
- org.apache.groovy.linq.provider.QueryableCollection
- .from($v { fromEntry.value })
- }
+ MethodCallExpression from = constructFromMethodCall(fromEntry)
selectMethodReceiver = from
@@ -102,13 +102,21 @@ class LinqGroovyMethods {
return select
}
- private static callXWithLambda(Expression receiver, String methodName, String closureParamName, Expression closureCode) {
+ @CompileDynamic
+ private static MethodCallExpression constructFromMethodCall(fromEntry) {
+ macro {
+ org.apache.groovy.linq.provider.QueryableCollection
+ .from($v { fromEntry.value })
+ }
+ }
+
+ private static MethodCallExpression callXWithLambda(Expression receiver, String methodName, String lambdaParamName, Expression lambdaCode) {
callX(
receiver,
methodName,
lambdaX(
- params(param(ClassHelper.DYNAMIC_TYPE, closureParamName)),
- stmt(closureCode)
+ params(param(ClassHelper.DYNAMIC_TYPE, lambdaParamName)),
+ stmt(lambdaCode)
)
)
}