Skip to content

Commit d6219e8

Browse files
committed
GROOVY-10846
1 parent 8b35a8d commit d6219e8

File tree

4 files changed

+27
-3
lines changed

4 files changed

+27
-3
lines changed

base-test/org.eclipse.jdt.groovy.core.tests.compiler/src/org/eclipse/jdt/groovy/core/tests/xform/TypeCheckedTests.java

+21
Original file line numberDiff line numberDiff line change
@@ -6656,4 +6656,25 @@ public void testTypeChecked10787() {
66566656

66576657
runConformTest(sources);
66586658
}
6659+
6660+
@Test
6661+
public void testTypeChecked10846() {
6662+
//@formatter:off
6663+
String[] sources = {
6664+
"Main.groovy",
6665+
"class A { public String b }\n" +
6666+
"class C<X extends A, Y extends List<X>> {\n" +
6667+
" @groovy.transform.TypeChecked\n" +
6668+
" void test(X x) {\n" +
6669+
" x.b = 'works'\n" +
6670+
" print x.b\n" +
6671+
" }\n" +
6672+
"}\n" +
6673+
"A a = []\n" +
6674+
"new C<A, List<A>>().test(a)\n",
6675+
};
6676+
//@formatter:on
6677+
6678+
runConformTest(sources);
6679+
}
66596680
}

base/org.codehaus.groovy25/src/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -4385,7 +4385,8 @@ private static void addBoundType(final ClassNode receiver, final List<Receiver<S
43854385
addSelfTypes(cn, owners);
43864386
}
43874387
} else {
4388-
owners.add(Receiver.<String>make(OBJECT_TYPE)); // T or T super Type
4388+
ClassNode cn = gt.getType().redirect(); // GROOVY-10846
4389+
owners.add(Receiver.make(cn)); // T or T super Type
43894390
}
43904391
}
43914392

base/org.codehaus.groovy30/src/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -4214,7 +4214,8 @@ private static void addBoundType(final ClassNode receiver, final List<Receiver<S
42144214
addSelfTypes(cn, owners);
42154215
}
42164216
} else {
4217-
owners.add(Receiver.make(OBJECT_TYPE)); // T or T super Type
4217+
ClassNode cn = gt.getType().redirect(); // GROOVY-10846
4218+
owners.add(Receiver.make(cn)); // T or T super Type
42184219
}
42194220
}
42204221

base/org.codehaus.groovy40/src/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -3893,7 +3893,8 @@ private static void addBoundType(final ClassNode receiver, final List<Receiver<S
38933893
addSelfTypes(cn, owners);
38943894
}
38953895
} else {
3896-
owners.add(Receiver.make(OBJECT_TYPE)); // T or T super Type
3896+
ClassNode cn = gt.getType().redirect(); // GROOVY-10846
3897+
owners.add(Receiver.make(cn)); // T or T super Type
38973898
}
38983899
}
38993900

0 commit comments

Comments
 (0)