@@ -45,12 +45,14 @@ import org.apache.groovy.ginq.provider.collection.runtime.ValueBound
45
45
import org.apache.groovy.ginq.provider.collection.runtime.WindowDefinition
46
46
import org.apache.groovy.util.Maps
47
47
import org.codehaus.groovy.GroovyBugError
48
+ import org.codehaus.groovy.ast.ClassCodeExpressionTransformer
48
49
import org.codehaus.groovy.ast.ClassNode
49
50
import org.codehaus.groovy.ast.CodeVisitorSupport
50
51
import org.codehaus.groovy.ast.Parameter
51
52
import org.codehaus.groovy.ast.expr.ArgumentListExpression
52
53
import org.codehaus.groovy.ast.expr.BinaryExpression
53
54
import org.codehaus.groovy.ast.expr.CastExpression
55
+ import org.codehaus.groovy.ast.expr.ClosureExpression
54
56
import org.codehaus.groovy.ast.expr.ConstantExpression
55
57
import org.codehaus.groovy.ast.expr.ConstructorCallExpression
56
58
import org.codehaus.groovy.ast.expr.DeclarationExpression
@@ -1199,9 +1201,13 @@ class GinqAstWalker implements GinqAstVisitor, SyntaxErrorReportable
1199
1201
// The synthetic lambda parameter `__t` represents the element from the result datasource of joining, e.g. `n1` innerJoin `n2`
1200
1202
// The element from first datasource(`n1`) is referenced via `_t.v1`
1201
1203
// and the element from second datasource(`n2`) is referenced via `_t.v2`
1202
- expr = ((ListExpression ) (new ListExpression (Collections . singletonList(expr)). transformExpression(new ExpressionTransformer () {
1204
+ expr = ((ListExpression ) (new ListExpression (Collections . singletonList(expr)). transformExpression(new ClassCodeExpressionTransformer () {
1203
1205
@Override
1204
1206
Expression transform (Expression expression ) {
1207
+ if (expression instanceof ClosureExpression ) {
1208
+ expression. visit(this )
1209
+ return expression
1210
+ }
1205
1211
Expression transformedExpression = correctVars(dataSourceExpression, lambdaParamName, expression)
1206
1212
if (null == transformedExpression) {
1207
1213
return expression
@@ -1212,6 +1218,11 @@ class GinqAstWalker implements GinqAstVisitor, SyntaxErrorReportable
1212
1218
1213
1219
return expression. transformExpression(this )
1214
1220
}
1221
+
1222
+ @Override
1223
+ SourceUnit getSourceUnit () {
1224
+ return sourceUnit;
1225
+ }
1215
1226
}))). getExpression(0 )
1216
1227
1217
1228
tuple(declarationExpressionList, expr)
0 commit comments