You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2017/05/26 01:54:20 UTC
groovy git commit: GROOVY-8203: Add @Newify will cause ?. operator
NPE (closes #550)
Repository: groovy
Updated Branches:
refs/heads/master 6519cbd50 -> 401b3a4c4
GROOVY-8203: Add @Newify will cause ?. operator NPE (closes #550)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/401b3a4c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/401b3a4c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/401b3a4c
Branch: refs/heads/master
Commit: 401b3a4c434083adc84843cfb9abf14f6783c7e7
Parents: 6519cbd
Author: paulk <pa...@asert.com.au>
Authored: Thu May 25 17:26:54 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Fri May 26 11:52:32 2017 +1000
----------------------------------------------------------------------
.../groovy/transform/NewifyASTTransformation.java | 5 ++---
.../groovy/transform/NewifyTransformTest.groovy | 18 ++++++++++++++++--
2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/401b3a4c/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 909b6ec..55ae7de 100644
--- a/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java
+++ b/src/main/org/codehaus/groovy/transform/NewifyASTTransformation.java
@@ -49,9 +49,7 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.classX;
/**
- * Handles generation of code for the @Newify annotation.
- *
- * @author Paul King
+ * Handles generation of code for the {@code @Newify} AST transform.
*/
@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
public class NewifyASTTransformation extends ClassCodeExpressionTransformer implements ASTTransformation {
@@ -167,6 +165,7 @@ public class NewifyASTTransformation extends ClassCodeExpressionTransformer impl
Expression object = transform(mce.getObjectExpression());
MethodCallExpression transformed = callX(object, method, args);
transformed.setImplicitThis(mce.isImplicitThis());
+ transformed.setSafe(mce.isSafe());
transformed.setSourcePosition(mce);
return transformed;
} else if (expr instanceof ClosureExpression) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/401b3a4c/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 b6d0255..e3e9890 100644
--- a/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/NewifyTransformTest.groovy
@@ -19,7 +19,7 @@
package org.codehaus.groovy.transform
/**
- * @author Paul King
+ * Tests for the {@code @Newify} AST transform.
*/
class NewifyTransformTest extends GroovyShellTestCase {
@@ -158,7 +158,6 @@ class NewifyTransformTest extends GroovyShellTestCase {
assert test == 'ABC'
}
-
void testNewifyClosureCompileStatic_Groovy7758() {
assertScript '''
class A {
@@ -175,4 +174,19 @@ class NewifyTransformTest extends GroovyShellTestCase {
assert test(new A()) == 'abc'
'''
}
+
+ void testNewifyTransformPreservesSafeMethodCall_Groovy8203() {
+ assertScript '''
+ @Newify(A)
+ class Z {
+ def foo() {
+ def a
+ a?.get('b')
+ }
+ class A {}
+ }
+
+ assert !new Z().foo()
+ '''
+ }
}
\ No newline at end of file