This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch GROOVY_3_0_X in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 00f460f7c471df572ba1a1d6fb2d1340486a678c Author: Eric Milles <[email protected]> AuthorDate: Thu May 26 15:17:52 2022 -0500 GROOVY-10637: SC: parameterized return type for getter method --- .../sc/transformers/VariableExpressionTransformer.java | 3 +++ src/test/groovy/transform/stc/ConstructorsSTCTest.groovy | 10 +++++----- src/test/groovy/transform/stc/GenericsSTCTest.groovy | 1 - src/test/groovy/transform/stc/MyBean.java | 13 +++++++------ 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/transform/sc/transformers/VariableExpressionTransformer.java b/src/main/java/org/codehaus/groovy/transform/sc/transformers/VariableExpressionTransformer.java index 95298d3947..cd90269c40 100644 --- a/src/main/java/org/codehaus/groovy/transform/sc/transformers/VariableExpressionTransformer.java +++ b/src/main/java/org/codehaus/groovy/transform/sc/transformers/VariableExpressionTransformer.java @@ -109,6 +109,9 @@ public class VariableExpressionTransformer { MethodCallExpression mce = callThisX(dmct.getName()); mce.getMethod().setSourcePosition(ve); mce.setMethodTarget(dmct); + // GROOVY-10637: return type might be parameterized + mce.putNodeMetaData(StaticTypesMarker.INFERRED_TYPE, + ve.getNodeMetaData(StaticTypesMarker.INFERRED_TYPE)); return mce; } } diff --git a/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy b/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy index c00eaff84e..b8f36a656f 100644 --- a/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy +++ b/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy @@ -346,17 +346,17 @@ class ConstructorsSTCTest extends StaticTypeCheckingTestCase { void testConstructJavaBeanFromMap() { assertScript '''import groovy.transform.stc.MyBean - MyBean bean = new MyBean(name:'Cedric') - assert bean.name == 'Cedric' + MyBean bean = new MyBean<String>(value:'Cedric') + assert bean.value == 'Cedric' ''' } void testConstructJavaBeanFromMapAndSubclass() { assertScript '''import groovy.transform.stc.MyBean - class MyBean2 extends MyBean { + class MyBean2 extends MyBean<String> { int age } - MyBean2 bean = new MyBean2(name:'Cedric', age:33) - assert bean.name == 'Cedric' + MyBean2 bean = new MyBean2(value:'Cedric', age:33) + assert bean.value == 'Cedric' assert bean.age == 33 ''' } diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy index eb308f3b23..8c97b6ed2e 100644 --- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy +++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy @@ -717,7 +717,6 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase { } // GROOVY-10637 - @NotYetImplemented void testReturnTypeInferenceWithMethodGenerics27() { assertScript ''' class Outer extends groovy.transform.stc.MyBean<Inner> { diff --git a/src/test/groovy/transform/stc/MyBean.java b/src/test/groovy/transform/stc/MyBean.java index c50c8e2b65..7471e5b4e2 100644 --- a/src/test/groovy/transform/stc/MyBean.java +++ b/src/test/groovy/transform/stc/MyBean.java @@ -21,14 +21,15 @@ package groovy.transform.stc; /** * A simple Java bean, used by unit test for GROOVY-5578 */ -public class MyBean { - private String name; +public class MyBean<T> { - public String getName() { - return name; + private T value; + + public T getValue() { + return value; } - public void setName(final String name) { - this.name = name; + public void setValue(final T value) { + this.value = value; } }
