This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new cb9b2e8 GROOVY-9800: ClassNode#toString includes generics of type
arguments
cb9b2e8 is described below
commit cb9b2e8e85b1717933914b01f6152e061a4b5f3e
Author: Eric Milles <[email protected]>
AuthorDate: Sat Apr 17 16:22:13 2021 -0500
GROOVY-9800: ClassNode#toString includes generics of type arguments
---
.../java/org/codehaus/groovy/ast/ClassNode.java | 37 ++++-----------------
src/test/groovy/bugs/Groovy6938.groovy | 2 +-
src/test/groovy/bugs/Groovy8310.groovy | 4 +--
src/test/groovy/bugs/Groovy8609Bug.groovy | 18 +++++-----
src/test/groovy/bugs/Groovy9338.groovy | 4 +--
.../stc/ArraysAndCollectionsSTCTest.groovy | 34 +++++++++----------
src/test/groovy/transform/stc/BugsSTCTest.groovy | 2 +-
.../stc/ClosureParamTypeInferenceSTCTest.groovy | 2 +-
.../transform/stc/ConstructorsSTCTest.groovy | 2 +-
.../stc/FieldsAndPropertiesSTCTest.groovy | 6 ++--
.../groovy/transform/stc/GenericsSTCTest.groovy | 38 +++++++++++-----------
src/test/groovy/transform/stc/LambdaTest.groovy | 2 +-
.../groovy/transform/stc/MethodCallsSTCTest.groovy | 4 +--
.../groovy/transform/stc/STCAssignmentTest.groovy | 2 +-
.../groovy/ast/tools/GenericsUtilsTest.groovy | 2 +-
.../InheritConstructorsTransformTest.groovy | 4 +--
16 files changed, 70 insertions(+), 93 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 4ab7f62..017504e 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -49,7 +49,6 @@ import java.util.Set;
import java.util.stream.Collectors;
import static java.util.Arrays.stream;
-import static java.util.stream.Collectors.joining;
import static org.apache.groovy.ast.tools.MethodNodeUtils.getCodeAsBlock;
import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
import static org.objectweb.asm.Opcodes.ACC_ANNOTATION;
@@ -1208,7 +1207,7 @@ public class ClassNode extends AnnotatedNode {
return toString(true);
}
- public String toString(boolean showRedirect) {
+ public String toString(final boolean showRedirect) {
if (isArray()) {
return getComponentType().toString(showRedirect) + "[]";
}
@@ -1216,9 +1215,12 @@ public class ClassNode extends AnnotatedNode {
StringBuilder ret = new StringBuilder(!placeholder ? getName() :
getUnresolvedName());
GenericsType[] genericsTypes = getGenericsTypes();
if (!placeholder && genericsTypes != null && genericsTypes.length > 0)
{
- ret.append(" <");
-
ret.append(stream(genericsTypes).map(this::genericTypeAsString).collect(joining(",
")));
- ret.append(">");
+ ret.append('<');
+ for (int i = 0, n = genericsTypes.length; i < n; i += 1) {
+ if (i != 0) ret.append(", ");
+ ret.append(genericsTypes[i]);
+ }
+ ret.append('>');
}
if (showRedirect && redirect != null) {
ret.append(" -> ").append(redirect.toString());
@@ -1227,31 +1229,6 @@ public class ClassNode extends AnnotatedNode {
}
/**
- * Avoids a recursive definition of toString. The default {@code toString}
- * in {@link GenericsType} calls {@code ClassNode.toString()}, which would
- * call {@code GenericsType.toString()} without this method.
- */
- private String genericTypeAsString(GenericsType genericsType) {
- String name = genericsType.getName();
- if (genericsType.getUpperBounds() != null) {
- return name + " extends " + stream(genericsType.getUpperBounds())
- .map(this::toStringTerminal).collect(joining(" & "));
- } else if (genericsType.getLowerBound() != null) {
- return name + " super " +
toStringTerminal(genericsType.getLowerBound());
- } else {
- return name;
- }
- }
-
- private String toStringTerminal(ClassNode classNode) {
- if (classNode.equals(this)) {
- return classNode.getName();
- } else {
- return classNode.toString(false);
- }
- }
-
- /**
* Determines if the type has a possibly-matching instance method with the
given name and arguments.
*
* @param name the name of the method of interest
diff --git a/src/test/groovy/bugs/Groovy6938.groovy
b/src/test/groovy/bugs/Groovy6938.groovy
index ae4f9b6..de928c5 100644
--- a/src/test/groovy/bugs/Groovy6938.groovy
+++ b/src/test/groovy/bugs/Groovy6938.groovy
@@ -55,7 +55,7 @@ final class Groovy6938 {
assert expr.objectExpression.text == 'super'
def type =
expr.objectExpression.getNodeMetaData(INFERRED_TYPE)
- assert type.toString(false) == 'J <Integer>' //
was "J<T>"
+ assert type.toString(false) ==
'J<java.lang.Integer>' // was "J<T>"
type =
node.leftExpression.getNodeMetaData(INFERRED_TYPE)
assert type.toString(false) == 'java.lang.Integer'
diff --git a/src/test/groovy/bugs/Groovy8310.groovy
b/src/test/groovy/bugs/Groovy8310.groovy
index 838566f..95d1c96 100644
--- a/src/test/groovy/bugs/Groovy8310.groovy
+++ b/src/test/groovy/bugs/Groovy8310.groovy
@@ -42,7 +42,7 @@ final class Groovy8310 {
}
'''
- assert err =~ /Cannot find matching method
\w+#bar\(groovy.lang.Closure <java.util.List>\)/
+ assert err =~ /Cannot find matching method
\w+#bar\(groovy.lang.Closure<java.util.List<java.lang.Integer>>\)/
}
@Test
@@ -60,7 +60,7 @@ final class Groovy8310 {
}
'''
- assert err =~ /Cannot find matching method
\w+#bar\(groovy.lang.Closure <java.util.List>\)/
+ assert err =~ /Cannot find matching method
\w+#bar\(groovy.lang.Closure<java.util.List<java.lang.Integer>>\)/
}
@Test
diff --git a/src/test/groovy/bugs/Groovy8609Bug.groovy
b/src/test/groovy/bugs/Groovy8609Bug.groovy
index a6ed105..0872090 100644
--- a/src/test/groovy/bugs/Groovy8609Bug.groovy
+++ b/src/test/groovy/bugs/Groovy8609Bug.groovy
@@ -31,7 +31,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0)
}
-
+
static void main(args) {
def list = new ArrayList<HashMap<String, Integer>>()
def record = new HashMap<String, Integer>()
@@ -50,7 +50,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0);
}
-
+
static void main(args) {
def list = new ArrayList<HashMap<String, Integer>>()
def record = new HashMap<String, Integer>()
@@ -69,7 +69,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0);
}
-
+
static void main(args) {
def list = new ArrayList<HashMap<String, Integer>>()
def record = new HashMap<String, Integer>()
@@ -88,7 +88,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0)
}
-
+
static void main(args) {
def list = new ArrayList<TreeMap<String, Integer>>()
def record = new TreeMap<String, Integer>()
@@ -99,7 +99,7 @@ final class Groovy8609Bug extends GroovyTestCase {
}
'''
- assert errMsg.contains('[Static type checking] - Cannot find matching
method A#getFirstRecord(java.util.ArrayList <TreeMap>)')
+ assert errMsg.contains('[Static type checking] - Cannot find matching
method A#getFirstRecord(java.util.ArrayList<java.util.TreeMap<java.lang.String,
java.lang.Integer>>)')
}
void testUpperBoundWithGenericsThroughWrongType2() {
@@ -109,7 +109,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0)
}
-
+
static void main(args) {
def list = new ArrayList<HashMap<String, Long>>()
def record = new HashMap<String, Long>()
@@ -120,7 +120,7 @@ final class Groovy8609Bug extends GroovyTestCase {
}
'''
- assert errMsg.contains('[Static type checking] - Cannot find matching
method A#getFirstRecord(java.util.ArrayList <HashMap>)')
+ assert errMsg.contains('[Static type checking] - Cannot find matching
method A#getFirstRecord(java.util.ArrayList<java.util.HashMap<java.lang.String,
java.lang.Long>>)')
}
void testUpperBoundWithGenericsThroughWrongType3() {
@@ -130,7 +130,7 @@ final class Groovy8609Bug extends GroovyTestCase {
E getFirstRecord(T recordList) {
return recordList.get(0)
}
-
+
static void main(args) {
def list = new ArrayList<HashMap<StringBuffer, Integer>>()
def record = new HashMap<StringBuffer, Integer>()
@@ -141,6 +141,6 @@ final class Groovy8609Bug extends GroovyTestCase {
}
'''
- assert errMsg.contains('[Static type checking] - Cannot find matching
method A#getFirstRecord(java.util.ArrayList <HashMap>)')
+ assert errMsg.contains('[Static type checking] - Cannot find matching
method
A#getFirstRecord(java.util.ArrayList<java.util.HashMap<java.lang.StringBuffer,
java.lang.Integer>>)')
}
}
diff --git a/src/test/groovy/bugs/Groovy9338.groovy
b/src/test/groovy/bugs/Groovy9338.groovy
index 34813f8..0ccbfff 100644
--- a/src/test/groovy/bugs/Groovy9338.groovy
+++ b/src/test/groovy/bugs/Groovy9338.groovy
@@ -39,7 +39,7 @@ final class Groovy9338 {
}
test()
'''
- assert err =~ /Cannot call \w+#meth\(java.lang.Class <\? extends
java.lang.CharSequence>\) with arguments \[java.lang.Class <\?>\]/
+ assert err =~ /Cannot call \w+#meth\(java.lang.Class<\? extends
java.lang.CharSequence>\) with arguments \[java.lang.Class<\?>\]/
}
@Test
@@ -55,6 +55,6 @@ final class Groovy9338 {
}
test()
'''
- assert err =~ /Cannot call \w+#meth\(java.lang.Class <\? super
java.lang.CharSequence>\) with arguments \[java.lang.Class <\?>\]/
+ assert err =~ /Cannot call \w+#meth\(java.lang.Class<\? super
java.lang.CharSequence>\) with arguments \[java.lang.Class<\?>\]/
}
}
diff --git a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
index 8e745b4..69d7e89 100644
--- a/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/ArraysAndCollectionsSTCTest.groovy
@@ -330,35 +330,35 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
shouldFailWithMessages '''
List<String> m() { }
Number[] array = m()
- ''', 'Cannot assign value of type java.util.List <String> to variable
of type java.lang.Number[]'
+ ''', 'Cannot assign value of type java.util.List<java.lang.String> to
variable of type java.lang.Number[]'
shouldFailWithMessages '''
void test(Set<String> set) {
Number[] array = set
}
- ''', 'Cannot assign value of type java.util.Set <String> to variable
of type java.lang.Number[]'
+ ''', 'Cannot assign value of type java.util.Set<java.lang.String> to
variable of type java.lang.Number[]'
shouldFailWithMessages '''
List<? super CharSequence> m() { }
CharSequence[] array = m()
- ''', 'Cannot assign value of type java.util.List <? super
java.lang.CharSequence> to variable of type java.lang.CharSequence[]'
+ ''', 'Cannot assign value of type java.util.List<? super
java.lang.CharSequence> to variable of type java.lang.CharSequence[]'
shouldFailWithMessages '''
void test(Set<? super CharSequence> set) {
CharSequence[] array = set
}
- ''', 'Cannot assign value of type java.util.Set <? super
java.lang.CharSequence> to variable of type java.lang.CharSequence[]'
+ ''', 'Cannot assign value of type java.util.Set<? super
java.lang.CharSequence> to variable of type java.lang.CharSequence[]'
shouldFailWithMessages '''
List<? super Runnable> m() { }
Runnable[] array = m()
- ''', 'Cannot assign value of type java.util.List <? super
java.lang.Runnable> to variable of type java.lang.Runnable[]'
+ ''', 'Cannot assign value of type java.util.List<? super
java.lang.Runnable> to variable of type java.lang.Runnable[]'
shouldFailWithMessages '''
void test(List<? super Runnable> list) {
Runnable[] array = list
}
- ''', 'Cannot assign value of type java.util.List <? super
java.lang.Runnable> to variable of type java.lang.Runnable[]'
+ ''', 'Cannot assign value of type java.util.List<? super
java.lang.Runnable> to variable of type java.lang.Runnable[]'
}
// GROOVY-8983
@@ -720,7 +720,7 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
A(int n) {}
}
A a = [1]
- ''', 'Cannot assign value of type java.util.List <java.lang.Integer>
to variable of type A'
+ ''', 'Cannot assign value of type java.util.List<java.lang.Integer> to
variable of type A'
}
// GROOVY-6912
@@ -744,7 +744,7 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
shouldFailWithMessages '''
ArrayList<String> strings = [1,2,3]
- ''', 'Incompatible generic argument types. Cannot assign
java.util.ArrayList <java.lang.Integer> to: java.util.ArrayList <String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.ArrayList<java.lang.Integer> to:
java.util.ArrayList<java.lang.String>'
}
// GROOVY-6912
@@ -774,7 +774,7 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
shouldFailWithMessages '''
LinkedHashSet<String> strings = [1,2,3]
- ''', 'Incompatible generic argument types. Cannot assign
java.util.LinkedHashSet <java.lang.Integer> to: java.util.LinkedHashSet
<String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.LinkedHashSet<java.lang.Integer> to:
java.util.LinkedHashSet<java.lang.String>'
}
void testCollectionTypesInitializedByListLiteral1() {
@@ -816,31 +816,31 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
void testCollectionTypesInitializedByListLiteral3() {
shouldFailWithMessages '''
Set<String> set = [1,2,3]
- ''', 'Cannot assign java.util.LinkedHashSet <java.lang.Integer> to:
java.util.Set <String>'
+ ''', 'Cannot assign java.util.LinkedHashSet<java.lang.Integer> to:
java.util.Set<java.lang.String>'
shouldFailWithMessages '''
List<String> list = ['a','b',3]
- ''', 'Cannot assign java.util.ArrayList <java.io.Serializable> to:
java.util.List <String>'
+ ''', 'Cannot assign java.util.ArrayList<java.io.Serializable<? extends
java.lang.Object>> to: java.util.List<java.lang.String>'
shouldFailWithMessages '''
Iterable<String> iter = [1,2,3]
- ''', 'Cannot assign java.util.ArrayList <java.lang.Integer> to:
java.lang.Iterable <String>'
+ ''', 'Cannot assign java.util.ArrayList<java.lang.Integer> to:
java.lang.Iterable<java.lang.String>'
shouldFailWithMessages '''
Collection<String> coll = [1,2,3]
- ''', 'Cannot assign java.util.ArrayList <java.lang.Integer> to:
java.util.Collection <String>'
+ ''', 'Cannot assign java.util.ArrayList<java.lang.Integer> to:
java.util.Collection<java.lang.String>'
shouldFailWithMessages '''
Deque<String> deque = [""]
- ''', 'Cannot assign value of type java.util.List <java.lang.String> to
variable of type java.util.Deque <String>'
+ ''', 'Cannot assign value of type java.util.List<java.lang.String> to
variable of type java.util.Deque<java.lang.String>'
shouldFailWithMessages '''
Deque<String> deque = []
- ''', 'Cannot assign value of type java.util.List <java.lang.String> to
variable of type java.util.Deque <String>'
+ ''', 'Cannot assign value of type java.util.List<java.lang.String> to
variable of type java.util.Deque<java.lang.String>'
shouldFailWithMessages '''
Queue<String> queue = []
- ''', 'Cannot assign value of type java.util.List <java.lang.String> to
variable of type java.util.Queue <String>'
+ ''', 'Cannot assign value of type java.util.List<java.lang.String> to
variable of type java.util.Queue<java.lang.String>'
}
// GROOVY-7128
@@ -887,6 +887,6 @@ class ArraysAndCollectionsSTCTest extends
StaticTypeCheckingTestCase {
shouldFailWithMessages '''
Map<String,Integer> map = [1:2]
- ''', 'Cannot assign java.util.LinkedHashMap <java.lang.Integer,
java.lang.Integer> to: java.util.Map <String, Integer>'
+ ''', 'Cannot assign java.util.LinkedHashMap<java.lang.Integer,
java.lang.Integer> to: java.util.Map<java.lang.String, java.lang.Integer>'
}
}
diff --git a/src/test/groovy/transform/stc/BugsSTCTest.groovy
b/src/test/groovy/transform/stc/BugsSTCTest.groovy
index ea1c787..9a6412a 100644
--- a/src/test/groovy/transform/stc/BugsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/BugsSTCTest.groovy
@@ -171,7 +171,7 @@ class BugsSTCTest extends StaticTypeCheckingTestCase {
L<String> items = ['foo', 'bar'] as L<String>
items.removeIf({a, b -> 1} as Comparator<?>)
assert items
- ''', 'Cannot call L#removeIf(java.util.Comparator <? super
java.lang.String>) with arguments [java.util.Comparator <?>]'
+ ''', 'Cannot call L#removeIf(java.util.Comparator<? super
java.lang.String>) with arguments [java.util.Comparator<?>]'
}
void testGroovy5482ListsAndFlowTyping() {
diff --git
a/src/test/groovy/transform/stc/ClosureParamTypeInferenceSTCTest.groovy
b/src/test/groovy/transform/stc/ClosureParamTypeInferenceSTCTest.groovy
index bc0ac8a..efb8dba 100644
--- a/src/test/groovy/transform/stc/ClosureParamTypeInferenceSTCTest.groovy
+++ b/src/test/groovy/transform/stc/ClosureParamTypeInferenceSTCTest.groovy
@@ -275,7 +275,7 @@ import groovy.transform.stc.ClosureParams
void
foo(@ClosureParams(value=FromString,options="java.util.List<java.lang.String>")
Closure cl) { cl.call(['foo']) }
foo { List<Date> d -> d.each { println it } }
-''', 'Expected parameter of type java.util.List <java.lang.String> but got
java.util.List <Date>'
+''', 'Expected parameter of type java.util.List<java.lang.String> but got
java.util.List<java.util.Date>'
}
void testFromStringWithDirectGenericPlaceholder() {
diff --git a/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy
b/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy
index ac7c141..4db3119 100644
--- a/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/ConstructorsSTCTest.groovy
@@ -93,7 +93,7 @@ class ConstructorsSTCTest extends StaticTypeCheckingTestCase {
import java.awt.Dimension
List args = [100,200]
Dimension d = args // not supported
- ''', 'Cannot assign value of type java.util.ArrayList
<java.lang.Integer> to variable of type java.awt.Dimension'
+ ''', 'Cannot assign value of type
java.util.ArrayList<java.lang.Integer> to variable of type java.awt.Dimension'
}
void testConstructFromMap() {
diff --git a/src/test/groovy/transform/stc/FieldsAndPropertiesSTCTest.groovy
b/src/test/groovy/transform/stc/FieldsAndPropertiesSTCTest.groovy
index c34ed6b..99ea5df 100644
--- a/src/test/groovy/transform/stc/FieldsAndPropertiesSTCTest.groovy
+++ b/src/test/groovy/transform/stc/FieldsAndPropertiesSTCTest.groovy
@@ -329,7 +329,7 @@ class FieldsAndPropertiesSTCTest extends
StaticTypeCheckingTestCase {
Closure<List> bar = { Date date -> date.getTime() }
}
new Foo()
- ''', 'Incompatible generic argument types. Cannot assign
groovy.lang.Closure <java.lang.Long> to: groovy.lang.Closure <List>'
+ ''', 'Incompatible generic argument types. Cannot assign
groovy.lang.Closure<java.lang.Long> to: groovy.lang.Closure<java.util.List>'
}
void testFieldInitShouldNotPassBecauseOfIncompatibleTypesWithClosure2() {
@@ -338,7 +338,7 @@ class FieldsAndPropertiesSTCTest extends
StaticTypeCheckingTestCase {
java.util.function.Supplier<String> bar = { 123 }
}
new Foo()
- ''', 'Incompatible generic argument types. Cannot assign
java.util.function.Supplier <java.lang.Integer> to: java.util.function.Supplier
<String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.function.Supplier<java.lang.Integer> to:
java.util.function.Supplier<java.lang.String>'
}
// GROOVY-9882
@@ -857,7 +857,7 @@ new FooWorker().doSomething()'''
new FooWorker().doSomething()
''',
- 'Incompatible generic argument types. Cannot assign
java.util.ArrayList <Integer> to: java.util.List <String>'
+ 'Incompatible generic argument types. Cannot assign
java.util.ArrayList<java.lang.Integer> to: java.util.List<java.lang.String>'
}
void testAICAsStaticProperty() {
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index a542b59..39460f0 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -41,14 +41,14 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
void testDeclaration3() {
shouldFailWithMessages '''
Map<String,String> obj = new HashMap<String,Integer>()
- ''', 'Incompatible generic argument types. Cannot assign
java.util.HashMap <String, Integer> to: java.util.Map <String, String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.HashMap<java.lang.String, java.lang.Integer> to:
java.util.Map<java.lang.String, java.lang.String>'
}
void testDeclaration4() {
// no generics checked after first wildcard
shouldFailWithMessages '''
Map<? extends CharSequence,String> obj = new
HashMap<String,Integer>()
- ''', 'Incompatible generic argument types. Cannot assign
java.util.HashMap <String, Integer> to: java.util.Map <? extends
java.lang.CharSequence, String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.HashMap<java.lang.String, java.lang.Integer> to: java.util.Map<?
extends java.lang.CharSequence, java.lang.String>'
}
void testAddOnList() {
@@ -412,11 +412,11 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
class D implements I { }
A<String> ax = new C<>(new D())
- ''', 'Incompatible generic argument types. Cannot assign C <D> to: A
<String>'
+ ''', 'Incompatible generic argument types. Cannot assign C<D> to:
A<java.lang.String>'
shouldFailWithMessages '''
Set<List<String>> strings = new HashSet<>([new
ArrayList<Number>()])
- ''', 'Incompatible generic argument types. Cannot assign
java.util.HashSet <java.util.ArrayList> to: java.util.Set <List>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.HashSet<java.util.ArrayList<java.lang.Number>> to:
java.util.Set<java.util.List<java.lang.String>>'
}
// GROOVY-9972
@@ -506,7 +506,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
def foo = { flag, C<D> cd = (flag ? new C<>(new D()) : new C<>(new
Object())) ->
cd.p.f.toLowerCase()
}
- ''', 'Incompatible generic argument types. Cannot assign C <? extends
java.lang.Object> to: C <D>'
+ ''', 'Incompatible generic argument types. Cannot assign C<? extends
java.lang.Object> to: C<D>'
}
// GROOVY-9963
@@ -574,7 +574,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
void testLinkedListWithListArgumentAndWrongElementTypes() {
shouldFailWithMessages '''
List<String> list = new LinkedList<String>([1,2,3])
- ''', 'Cannot call java.util.LinkedList#<init>(java.util.Collection <?
extends java.lang.String>) with arguments [java.util.List <java.lang.Integer>]'
+ ''', 'Cannot call java.util.LinkedList#<init>(java.util.Collection<?
extends java.lang.String>) with arguments [java.util.List<java.lang.Integer>]'
}
void testGenericAssignmentWithSubClass() {
@@ -620,7 +620,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
def list = ['foo','bar','baz']
@ASTTest(phase=INSTRUCTION_SELECTION, value={
def type = node.getNodeMetaData(INFERRED_TYPE)
- assert type.toString(false) == 'java.util.Map <String, Object>'
+ assert type.toString(false) ==
'java.util.Map<java.lang.String, java.lang.Object>'
})
def map = list.<String,Object,String>collectEntries {
[(it): it.hashCode()]
@@ -872,7 +872,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
A<String, Integer> a = new B()
a.test()
- ''', 'Cannot call A#<init>(java.lang.Class <String>, java.lang.Class
<Integer>) with arguments [java.lang.Class <java.lang.Integer>, java.lang.Class
<java.lang.String>]'
+ ''', 'Cannot call A#<init>(java.lang.Class<java.lang.String>,
java.lang.Class<java.lang.Integer>) with arguments
[java.lang.Class<java.lang.Integer>, java.lang.Class<java.lang.String>]'
}
// GROOVY-9460
@@ -1004,7 +1004,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
}
}
new ClassB()
- ''', 'Cannot call <X>
groovy.transform.stc.GenericsSTCTest$ClassA#bar(java.lang.Class <Long>) with
arguments [java.lang.Class <? extends java.lang.Object>]'
+ ''', 'Cannot call <X>
groovy.transform.stc.GenericsSTCTest$ClassA#bar(java.lang.Class<java.lang.Long>)
with arguments [java.lang.Class<? extends java.lang.Object>]'
}
// GROOVY-8961, GROOVY-9915
@@ -1041,7 +1041,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
void test() {
m = Collections.<Integer>emptyList()
}
- """, 'Incompatible generic argument types. Cannot assign
java.util.List <Integer> to: java.util.List <String>'
+ """, 'Incompatible generic argument types. Cannot assign
java.util.List<java.lang.Integer> to: java.util.List<java.lang.String>'
}
}
@@ -1199,7 +1199,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
List<String> list = ['a','b','c']
Collection<Integer> numbers = (Collection<Integer>) [1,2,3]
boolean r = list.addAll(numbers)
- ''', 'Cannot call java.util.ArrayList#addAll(java.util.Collection <?
extends java.lang.String>) with arguments [java.util.Collection <Integer>]'
+ ''', 'Cannot call java.util.ArrayList#addAll(java.util.Collection<?
extends java.lang.String>) with arguments
[java.util.Collection<java.lang.Integer>]'
}
// GROOVY-5528
@@ -1927,7 +1927,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
static <T extends List<? extends CharSequence>> void bar(T a)
{}
}
Foo.bar([new Object()])
- ''', 'Cannot call <T extends java.util.List<? extends
java.lang.CharSequence>> Foo#bar(T) with arguments [java.util.ArrayList
<java.lang.Object>]'
+ ''', 'Cannot call <T extends java.util.List<? extends
java.lang.CharSequence>> Foo#bar(T) with arguments
[java.util.ArrayList<java.lang.Object>]'
}
void testOutOfBoundsBySuperGenericParameterType() {
@@ -1936,7 +1936,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
static <T extends List<? super CharSequence>> void bar(T a) {}
}
Foo.bar(['abc'])
- ''', 'Cannot call <T extends java.util.List<? super
java.lang.CharSequence>> Foo#bar(T) with arguments [java.util.ArrayList
<java.lang.String>]'
+ ''', 'Cannot call <T extends java.util.List<? super
java.lang.CharSequence>> Foo#bar(T) with arguments
[java.util.ArrayList<java.lang.String>]'
}
void testOutOfBoundsByExtendsPlaceholderParameterType() {
@@ -1950,7 +1950,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
}
}
Baz.qux([new Object()])
- ''', 'Cannot call <T extends java.util.List<? extends
java.lang.CharSequence>> Foo#bar(T) with arguments [java.util.List <Object>]'
+ ''', 'Cannot call <T extends java.util.List<? extends
java.lang.CharSequence>> Foo#bar(T) with arguments
[java.util.List<java.lang.Object>]'
}
void testOutOfBoundsBySuperPlaceholderParameterType() {
@@ -1964,7 +1964,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
}
}
Baz.qux(['abc'])
- ''', 'Cannot call <T extends java.util.List<? super
java.lang.CharSequence>> Foo#bar(T) with arguments [java.util.List <String>] '
+ ''', 'Cannot call <T extends java.util.List<? super
java.lang.CharSequence>> Foo#bar(T) with arguments
[java.util.List<java.lang.String>] '
}
// GROOVY-5721
@@ -2321,7 +2321,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
List<Object> l = new ArrayList<>()
assert foo(l) == 1
''',
- '#foo(java.util.List <? extends A>) with arguments
[java.util.ArrayList <java.lang.Object>]'
+ '#foo(java.util.List<? extends A>) with arguments
[java.util.ArrayList<java.lang.Object>]'
}
void testMethodLevelGenericsForMethodCall() {
@@ -2375,7 +2375,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
}
GoodCodeRed.foo()
''',
- "Cannot call <T> GoodCodeRed#attach(GoodCodeRed <Long>) with arguments
[GoodCodeRed <Integer>]"
+ "Cannot call <T> GoodCodeRed#attach(GoodCodeRed<java.lang.Long>) with
arguments [GoodCodeRed<java.lang.Integer>]"
}
void testHiddenGenerics() {
@@ -2389,7 +2389,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
class Blah {}
class MyList extends LinkedList<Object> {}
List<Blah> o = new MyList()
- ''','Incompatible generic argument types. Cannot assign MyList to:
java.util.List <Blah>'
+ ''','Incompatible generic argument types. Cannot assign MyList to:
java.util.List<Blah>'
// Groovy-5873
assertScript """
@@ -2918,7 +2918,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
[11, 12]
}
}
- ''', 'Incompatible generic argument types. Cannot assign
java.util.List <java.lang.Integer> to: java.util.List <String>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.List<java.lang.Integer> to: java.util.List<java.lang.String>'
}
void testBoundedReturnTypeChecking() {
diff --git a/src/test/groovy/transform/stc/LambdaTest.groovy
b/src/test/groovy/transform/stc/LambdaTest.groovy
index f8327e5..ca904b8 100644
--- a/src/test/groovy/transform/stc/LambdaTest.groovy
+++ b/src/test/groovy/transform/stc/LambdaTest.groovy
@@ -308,7 +308,7 @@ final class LambdaTest {
Comparator<Integer> c = (int a, int b) -> Integer.compare(a, b)
}
'''
- assert err =~ /Cannot assign java.util.Comparator <int> to:
java.util.Comparator <Integer>/
+ assert err =~ /Cannot assign java.util.Comparator<int> to:
java.util.Comparator<java.lang.Integer>/
}
@Test // GROOVY-9977
diff --git a/src/test/groovy/transform/stc/MethodCallsSTCTest.groovy
b/src/test/groovy/transform/stc/MethodCallsSTCTest.groovy
index f077def..495d369 100644
--- a/src/test/groovy/transform/stc/MethodCallsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/MethodCallsSTCTest.groovy
@@ -219,7 +219,7 @@ class MethodCallsSTCTest extends StaticTypeCheckingTestCase
{
void m(Set<Integer> set) {
}
m([1,2,3,3])
- ''', 'm(java.util.List <java.lang.Integer>). Please check if the
declared type is correct and if the method exists.'
+ ''', 'm(java.util.List<java.lang.Integer>). Please check if the
declared type is correct and if the method exists.'
}
// GROOVY-7106, GROOVY-7274, GROOVY-9844
@@ -1148,7 +1148,7 @@ class MethodCallsSTCTest extends
StaticTypeCheckingTestCase {
new SpreadInCtor(*['A', 'B'])
''',
'The spread operator cannot be used as argument of method or closure
calls with static type checking because the number of arguments cannot be
determined at compile time',
- 'Cannot find matching method SpreadInCtor#<init>(java.util.List <E
extends java.lang.Object>)'
+ 'Cannot find matching method SpreadInCtor#<init>(java.util.List<E>)'
}
void testSpreadArgsForbiddenInClosureCall() {
diff --git a/src/test/groovy/transform/stc/STCAssignmentTest.groovy
b/src/test/groovy/transform/stc/STCAssignmentTest.groovy
index 1c6752a..b663eca 100644
--- a/src/test/groovy/transform/stc/STCAssignmentTest.groovy
+++ b/src/test/groovy/transform/stc/STCAssignmentTest.groovy
@@ -377,7 +377,7 @@ class STCAssignmentTest extends StaticTypeCheckingTestCase {
void
testTernaryOperatorAssignmentShouldFailBecauseOfIncompatibleGenericTypes() {
shouldFailWithMessages '''
List<Integer> foo = true?new LinkedList<String>():new
LinkedList<Integer>();
- ''', 'Incompatible generic argument types. Cannot assign
java.util.LinkedList <? extends java.io.Serializable <? extends
java.io.Serializable>> to: java.util.List <Integer>'
+ ''', 'Incompatible generic argument types. Cannot assign
java.util.LinkedList<? extends java.io.Serializable<? extends
java.io.Serializable<java.lang.String>>> to: java.util.List<java.lang.Integer>'
}
void testCastStringToChar() {
diff --git a/src/test/org/codehaus/groovy/ast/tools/GenericsUtilsTest.groovy
b/src/test/org/codehaus/groovy/ast/tools/GenericsUtilsTest.groovy
index 1b30f71..d4b9bbf 100644
--- a/src/test/org/codehaus/groovy/ast/tools/GenericsUtilsTest.groovy
+++ b/src/test/org/codehaus/groovy/ast/tools/GenericsUtilsTest.groovy
@@ -189,7 +189,7 @@ final class GenericsUtilsTest {
ClassNode source = findClassNode('C', classNodeList)
ClassNode result = GenericsUtils.findParameterizedType(target, source)
- assert result.toString(false) == 'A <java.lang.Number>'
+ assert result.toString(false) == 'A<java.lang.Number>'
}
@Test
diff --git
a/src/test/org/codehaus/groovy/transform/InheritConstructorsTransformTest.groovy
b/src/test/org/codehaus/groovy/transform/InheritConstructorsTransformTest.groovy
index 7090068..337893b 100644
---
a/src/test/org/codehaus/groovy/transform/InheritConstructorsTransformTest.groovy
+++
b/src/test/org/codehaus/groovy/transform/InheritConstructorsTransformTest.groovy
@@ -223,9 +223,9 @@ class InheritConstructorsTransformTest extends
GroovyShellTestCase {
op.bar(RoundingMode.DOWN)
assert op.toString() == '3|DOWN'
'''
- assert message.contains('Cannot call
OrderPublisher#<init>(java.util.Deque <java.lang.Integer>) with arguments
[java.util.LinkedList <String>]')
+ assert message.contains('Cannot call
OrderPublisher#<init>(java.util.Deque<java.lang.Integer>) with arguments
[java.util.LinkedList<java.lang.String>]')
assert message.contains('Cannot find matching method
OrderPublisher#<init>(java.util.Date)')
- assert message.contains('Cannot call
OrderPublisher#<init>(java.util.Set <RoundingMode>) with arguments
[java.util.HashSet <Date>]')
+ assert message.contains('Cannot call
OrderPublisher#<init>(java.util.Set<java.math.RoundingMode>) with arguments
[java.util.HashSet<java.util.Date>]')
}
// GROOVY-9323