This is an automated email from the ASF dual-hosted git repository. paulk pushed a commit to branch GROOVY_4_0_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 923238f7313f950922babb870ba7f70a882c796d Author: Yih Tsern <[email protected]> AuthorDate: Fri Aug 12 01:34:54 2022 +0800 GROOVY-10713 Document ClassCodeExpressionTransformer limitation when dealing with Closure. --- .../groovy/ast/ClassCodeExpressionTransformer.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java index 4e17a10384..7f04f80bda 100644 --- a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java +++ b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java @@ -42,6 +42,29 @@ import java.util.Map; */ public abstract class ClassCodeExpressionTransformer extends ClassCodeVisitorSupport implements ExpressionTransformer { + /** + * <strong>GOTCHA</strong>: This method does not visit Expressions within Closures, for historical + * reason. If you want those Expressions to be visited, you can do this: + * <pre> + * {@code + * public class YourTransformer extends ClassCodeExpressionTransformer { + * ... + * + * @Override + * public Expression transform(final Expression expr) { + * if (expr instanceof ClosureExpression) { + * expr.visit(this); + * + * return expr; + * } + * + * // ... your custom instanceof + expression transformation + * // ... + * } + * } + * } + * </pre> + */ @Override public Expression transform(Expression expr) { if (expr == null) return null;
