Repository: groovy Updated Branches: refs/heads/GROOVY_2_5_X f08026b34 -> 2e487dce9
GROOVY-8245: @Newify(auto=false) not transforming declarations (closes #571) Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/2e487dce Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/2e487dce Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/2e487dce Branch: refs/heads/GROOVY_2_5_X Commit: 2e487dce944a5f323c43d8b91a71b22af40aa080 Parents: 2a16953 Author: John Wagenleitner <[email protected]> Authored: Sat Aug 5 11:15:04 2017 -0700 Committer: John Wagenleitner <[email protected]> Committed: Sat Aug 5 21:04:29 2017 -0700 ---------------------------------------------------------------------- .../transform/NewifyASTTransformation.java | 10 ++++++++- .../groovy/transform/NewifyTransformTest.groovy | 22 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/2e487dce/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java b/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java index 55ae7de..8c31449 100644 --- a/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java +++ b/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java @@ -178,7 +178,7 @@ public class NewifyASTTransformation extends ClassCodeExpressionTransformer impl } } else if (expr instanceof DeclarationExpression) { DeclarationExpression de = (DeclarationExpression) expr; - if (de == candidate || auto) { + if (shouldTransform(de)) { candidate = null; Expression left = de.getLeftExpression(); Expression right = transform(de.getRightExpression()); @@ -191,6 +191,14 @@ public class NewifyASTTransformation extends ClassCodeExpressionTransformer impl return expr.transformExpression(this); } + private boolean shouldTransform(DeclarationExpression exp) { + return exp == candidate || auto || hasClassesToNewify(); + } + + private boolean hasClassesToNewify() { + return classesToNewify != null && !classesToNewify.getExpressions().isEmpty(); + } + private void newifyClass(ClassNode cNode, boolean autoFlag, ListExpression list) { String cName = cNode.getName(); if (cNode.isInterface()) { http://git-wip-us.apache.org/repos/asf/groovy/blob/2e487dce/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy ---------------------------------------------------------------------- diff --git a/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy b/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy index e3e9890..d585c8a 100644 --- a/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy +++ b/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy @@ -189,4 +189,26 @@ class NewifyTransformTest extends GroovyShellTestCase { assert !new Z().foo() ''' } + + // GROOVY-8245 + void testDeclarationWhenAutoIsFalse() { + assertScript ''' + class Foo { + static int answer = 7 + Foo() { + answer = 42 + } + } + @Newify(auto=false, value=Foo) + class Bar { + static { + Foo foo = Foo() + } + static void method() {} + } + assert Foo.answer == 7 + Bar.method() + assert Foo.answer == 42 + ''' + } } \ No newline at end of file
