Skip to content

Commit 91c08da

Browse files
committed
GROOVY-7945
1 parent f803e4a commit 91c08da

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

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

+32-1
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,37 @@ public void testTypeChecked7363() {
403403
runNegativeTest(sources, "");
404404
}
405405

406+
@Test
407+
public void testTypeChecked7945() {
408+
//@formatter:off
409+
String[] sources = {
410+
"Test.groovy",
411+
"abstract class A<X, Y> {\n" +
412+
" private final Class<X> x\n" +
413+
" private final Class<Y> y\n" +
414+
" A(Class<X> x, Class<Y> y) {\n" +
415+
" this.x = x\n" +
416+
" this.y = y\n" +
417+
" }\n" +
418+
"}\n" +
419+
"@groovy.transform.TypeChecked\n" +
420+
"class C extends A<String, Integer> {\n" +
421+
" C() {\n" +
422+
" super(Integer, String)\n" +
423+
" }\n" +
424+
"}\n",
425+
};
426+
//@formatter:on
427+
428+
runNegativeTest(sources,
429+
"----------\n" +
430+
"1. ERROR in Test.groovy (at line 12)\n" +
431+
"\tsuper(Integer, String)\n" +
432+
"\t^^^^^^^^^^^^^^^^^^^^^^\n" +
433+
"Groovy:[Static type checking] - Cannot call A <String, Integer>#<init>(java.lang.Class <String>, java.lang.Class <Integer>) with arguments [java.lang.Class <java.lang.Integer>, java.lang.Class <java.lang.String>] \n" +
434+
"----------\n");
435+
}
436+
406437
@Test
407438
public void testTypeChecked8103() {
408439
//@formatter:off
@@ -417,7 +448,7 @@ public void testTypeChecked8103() {
417448
" fluent(Util.factory('{}')).isSimilarTo('{\"key\":\"val\"}')\n" + // STC error
418449
"}\n",
419450

420-
"API.groovy",
451+
"Types.groovy",
421452
"class Fluent {\n" +
422453
" static FluentAPI fluent(String s) { return new FluentAPI() }\n" +
423454
" static <T extends FluentExtension> T fluent(T t) { return t }\n" +

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

+4
Original file line numberDiff line numberDiff line change
@@ -2511,7 +2511,11 @@ public void visitConstructorCallExpression(ConstructorCallExpression call) {
25112511
if (call.isThisCall()) {
25122512
receiver = typeCheckingContext.getEnclosingClassNode();
25132513
} else if (call.isSuperCall()) {
2514+
/* GRECLIPSE edit -- GROVY-7945
25142515
receiver = typeCheckingContext.getEnclosingClassNode().getSuperClass();
2516+
*/
2517+
receiver = typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass();
2518+
// GRECLIPSE end
25152519
}
25162520
Expression arguments = call.getArguments();
25172521
ArgumentListExpression argumentList = InvocationWriter.makeArgumentList(arguments);

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

+4
Original file line numberDiff line numberDiff line change
@@ -2312,7 +2312,11 @@ public void visitConstructorCallExpression(final ConstructorCallExpression call)
23122312
if (call.isThisCall()) {
23132313
receiver = typeCheckingContext.getEnclosingClassNode();
23142314
} else if (call.isSuperCall()) {
2315+
/* GRECLIPSE edit -- GROVY-7945
23152316
receiver = typeCheckingContext.getEnclosingClassNode().getSuperClass();
2317+
*/
2318+
receiver = typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass();
2319+
// GRECLIPSE end
23162320
}
23172321
Expression arguments = call.getArguments();
23182322
ArgumentListExpression argumentList = InvocationWriter.makeArgumentList(arguments);

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

+4
Original file line numberDiff line numberDiff line change
@@ -2299,7 +2299,11 @@ public void visitConstructorCallExpression(final ConstructorCallExpression call)
22992299
if (call.isThisCall()) {
23002300
receiver = typeCheckingContext.getEnclosingClassNode();
23012301
} else if (call.isSuperCall()) {
2302+
/* GRECLIPSE edit -- GROVY-7945
23022303
receiver = typeCheckingContext.getEnclosingClassNode().getSuperClass();
2304+
*/
2305+
receiver = typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass();
2306+
// GRECLIPSE end
23032307
}
23042308
Expression arguments = call.getArguments();
23052309
ArgumentListExpression argumentList = InvocationWriter.makeArgumentList(arguments);

0 commit comments

Comments
 (0)