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 2023/01/18 00:02:46 UTC
[groovy] 04/05: GROOVY-5859, GROOVY-10407: stubgen: write param type arguments (not raw)
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit f9cf0421e1da322a51f953901f2099424262055f
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Sun Dec 12 12:30:03 2021 -0600
GROOVY-5859, GROOVY-10407: stubgen: write param type arguments (not raw)
---
.../groovy/tools/javac/JavaStubGenerator.java | 13 +++++----
.../{Groovy5859Bug.groovy => Groovy10407.groovy} | 33 +++++++++++++---------
.../{Groovy5859Bug.groovy => Groovy5859.groovy} | 30 ++++++++++++--------
3 files changed, 46 insertions(+), 30 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
index 829e8fd63d..03d716af93 100644
--- a/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
+++ b/src/main/java/org/codehaus/groovy/tools/javac/JavaStubGenerator.java
@@ -532,11 +532,14 @@ public class JavaStubGenerator {
Parameter[] normalized = new Parameter[parameters.length];
for (int i = 0, n = parameters.length; i < n; i += 1) {
ClassNode normalizedType = parameters[i].getOriginType();
- // GROOVY-7306: apply type arguments from declaring type to parameter type
- normalizedType = correctToGenericsSpec(superTypeGenerics, normalizedType);
- // workaround for GROOVY-5859: remove generic type info
- normalizedType = normalizedType.getPlainNodeReference();
-
+ if (superType.getGenericsTypes() == null // GROOVY-10407
+ && superType.redirect().getGenericsTypes() != null) {
+ // GROOVY-5859: remove generic type info for raw type
+ normalizedType = normalizedType.getPlainNodeReference();
+ } else {
+ // GROOVY-7306: apply type arguments from declaring type to parameter type
+ normalizedType = correctToGenericsSpec(superTypeGenerics, normalizedType);
+ }
normalized[i] = new Parameter(normalizedType, parameters[i].getName());
}
diff --git a/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy b/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy10407.groovy
similarity index 60%
copy from src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy
copy to src/test/org/codehaus/groovy/tools/stubgenerator/Groovy10407.groovy
index 9d493912fd..e7d32f4565 100644
--- a/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy
+++ b/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy10407.groovy
@@ -18,24 +18,31 @@
*/
package org.codehaus.groovy.tools.stubgenerator
-class Groovy5859Bug extends StringSourcesStubTestCase {
+final class Groovy10407 extends StringSourcesStubTestCase {
+
@Override
Map<String, String> provideSources() {
- ['TaggedsMap.groovy': '''import org.codehaus.groovy.tools.stubgenerator.Groovy5859Support
-
-class TaggedsMap extends Groovy5859Support {
-
- TaggedsMap(SortedMap m) {
- super()
- putAll (m)
- }
-}''',
- 'Blah.java': '''public class Blah { TaggedsMap map; }''']
+ [
+ 'Pogo.groovy': '''
+ class Foo {
+ Foo(Map<String, String> map) {
+ }
+ }
+ class Bar extends Foo {
+ Bar(Map<String, String> map) {
+ super(map)
+ }
+ }
+ ''',
+ 'Main.java': '''
+ public class Main { Foo foo; }
+ ''',
+ ]
}
@Override
void verifyStubs() {
- def stubSource = stubJavaSourceFor('TaggedsMap')
- assert stubSource.contains('super ((java.util.SortedMap)null);')
+ String stub = stubJavaSourceFor('Bar')
+ assert stub.contains('super ((java.util.Map<java.lang.String, java.lang.String>)null);')
}
}
diff --git a/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy b/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859.groovy
similarity index 61%
rename from src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy
rename to src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859.groovy
index 9d493912fd..08d444e6a0 100644
--- a/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859Bug.groovy
+++ b/src/test/org/codehaus/groovy/tools/stubgenerator/Groovy5859.groovy
@@ -18,24 +18,30 @@
*/
package org.codehaus.groovy.tools.stubgenerator
-class Groovy5859Bug extends StringSourcesStubTestCase {
+final class Groovy5859 extends StringSourcesStubTestCase {
+
@Override
Map<String, String> provideSources() {
- ['TaggedsMap.groovy': '''import org.codehaus.groovy.tools.stubgenerator.Groovy5859Support
-
-class TaggedsMap extends Groovy5859Support {
+ [
+ 'Pogo.groovy': """
+ import ${this.class.name}Support
- TaggedsMap(SortedMap m) {
- super()
- putAll (m)
- }
-}''',
- 'Blah.java': '''public class Blah { TaggedsMap map; }''']
+ class Pogo extends ${this.class.simpleName}Support/*no type args*/ {
+ Pogo(SortedMap map) {
+ super(/*null*/)
+ putAll(map)
+ }
+ }
+ """,
+ 'Main.java': '''
+ public class Main { Pogo pogo; }
+ '''
+ ]
}
@Override
void verifyStubs() {
- def stubSource = stubJavaSourceFor('TaggedsMap')
- assert stubSource.contains('super ((java.util.SortedMap)null);')
+ String stub = stubJavaSourceFor('Pogo')
+ assert stub.contains('super ((java.util.SortedMap)null);')
}
}