Skip to content

Commit 625858c

Browse files
committed
GROOVY-6938
1 parent 96a22f3 commit 625858c

File tree

4 files changed

+47
-6
lines changed

4 files changed

+47
-6
lines changed

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

+41
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,47 @@ public void testTypeChecked6882() {
293293
runConformTest(sources, "CC");
294294
}
295295

296+
@Test
297+
public void testTypeChecked6938() {
298+
//@formatter:off
299+
String[] sources = {
300+
"Main.groovy",
301+
"import groovy.transform.ASTTest\n" +
302+
"import groovy.transform.TypeChecked\n" +
303+
"import org.codehaus.groovy.ast.expr.MethodCallExpression\n" +
304+
"import static org.codehaus.groovy.transform.stc.StaticTypesMarker.INFERRED_TYPE\n" +
305+
306+
"@TypeChecked\n" +
307+
"class G extends J<Integer> {\n" +
308+
" Integer doSomething() {\n" +
309+
" @ASTTest(phase=CLASS_GENERATION, value={\n" +
310+
" def expr = node.rightExpression\n" +
311+
" assert expr instanceof MethodCallExpression\n" +
312+
" assert expr.objectExpression.text == 'super'\n" +
313+
314+
" def type = expr.objectExpression.getNodeMetaData(INFERRED_TYPE)\n" +
315+
" assert type.toString(false) == 'J <Integer>'\n" + // was "J<T>"
316+
" type = node.leftExpression.getNodeMetaData(INFERRED_TYPE)\n" +
317+
" assert type.toString(false) == 'java.lang.Integer'\n" +
318+
" })\n" +
319+
" def result = super.doSomething()\n" +
320+
" return result\n" +
321+
" }\n" +
322+
"}\n" +
323+
"print new G().doSomething()\n",
324+
325+
"J.java",
326+
"public class J <T extends Number> {\n" +
327+
" public T doSomething() {\n" +
328+
" return null;\n" +
329+
" }\n" +
330+
"}\n",
331+
};
332+
//@formatter:on
333+
334+
runConformTest(sources, "null");
335+
}
336+
296337
@Test
297338
public void testTypeChecked7333() {
298339
//@formatter:off

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -5318,8 +5318,8 @@ private ClassNode getTypeFromClosureArguments(Parameter parameter, TypeCheckingC
53185318
return null;
53195319
}
53205320

5321-
private ClassNode makeSuper() {
5322-
return makeType(typeCheckingContext.getEnclosingClassNode().getSuperClass(), typeCheckingContext.isInStaticContext);
5321+
private ClassNode makeSuper() { // GRECLIPSE edit -- GROOVY-6938
5322+
return makeType(typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass(), typeCheckingContext.isInStaticContext);
53235323
}
53245324

53255325
private ClassNode makeThis() {

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -5098,8 +5098,8 @@ private static ClassNode makeSelf(final ClassNode trait) {
50985098
return selfType;
50995099
}
51005100

5101-
private ClassNode makeSuper() {
5102-
return makeType(typeCheckingContext.getEnclosingClassNode().getSuperClass(), typeCheckingContext.isInStaticContext);
5101+
private ClassNode makeSuper() { // GRECLIPSE edit -- GROOVY-6938
5102+
return makeType(typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass(), typeCheckingContext.isInStaticContext);
51035103
}
51045104

51055105
private ClassNode makeThis() {

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -5064,8 +5064,8 @@ private static ClassNode makeSelf(final ClassNode trait) {
50645064
return selfType;
50655065
}
50665066

5067-
private ClassNode makeSuper() {
5068-
return makeType(typeCheckingContext.getEnclosingClassNode().getSuperClass(), typeCheckingContext.isInStaticContext);
5067+
private ClassNode makeSuper() { // GRECLIPSE edit -- GROOVY-6938
5068+
return makeType(typeCheckingContext.getEnclosingClassNode().getUnresolvedSuperClass(), typeCheckingContext.isInStaticContext);
50695069
}
50705070

50715071
private ClassNode makeThis() {

0 commit comments

Comments
 (0)