You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/09/25 11:00:33 UTC
[groovy] 02/02: GROOVY-10637: SC: parameterized return type for getter method
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 <er...@thomsonreuters.com>
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;
}
}