You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Keegan Witt (Jira)" <ji...@apache.org> on 2020/10/11 19:41:00 UTC
[jira] [Created] (GROOVY-9777) Stub missing cast, depending on
constructor order
Keegan Witt created GROOVY-9777:
-----------------------------------
Summary: Stub missing cast, depending on constructor order
Key: GROOVY-9777
URL: https://issues.apache.org/jira/browse/GROOVY-9777
Project: Groovy
Issue Type: Bug
Components: Stub generator / Joint compiler
Affects Versions: 3.0.6
Reporter: Keegan Witt
{code:java}
package org.apache.groovy.tests
class Parent {
Parent(Object context) {
this(context.class.name)
}
Parent(Class<?> context) {
this(context.name)
}
Parent(String context) {}
}
class Child extends Parent {
Child() {
super(Child.class.name)
}
}
{code}
Generates this stub for Child, missing the cast in the constructor
{code:java}
package org.apache.groovy.tests;
import java.lang.*;
import java.util.*;
import java.io.*;
import java.net.*;
import groovy.lang.*;
import groovy.util.*;
public class Child
extends org.apache.groovy.tests.Parent {
;
public Child
() {
super (null);
}
@groovy.transform.Generated() @groovy.transform.Internal() @java.beans.Transient() public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}
@groovy.transform.Generated() @groovy.transform.Internal() public void setMetaClass(groovy.lang.MetaClass mc) { }
}
{code}
But
{code:java}
package org.apache.groovy.tests
class Parent {
Parent(Class<?> context) {
this(context.name)
}
Parent(String context) {}
Parent(Object context) {
this(context.class.name)
}
}
class Child extends Parent {
Child() {
super(Child.class.name)
}
}
{code}
Generates this stub for Child, with the cast in it
{code:java}
package org.apache.groovy.tests;
import java.lang.*;
import java.util.*;
import java.io.*;
import java.net.*;
import groovy.lang.*;
import groovy.util.*;
public class Child
extends org.apache.groovy.tests.Parent {
;
public Child
() {
super ((java.lang.Class)null);
}
@groovy.transform.Generated() @groovy.transform.Internal() @java.beans.Transient() public groovy.lang.MetaClass getMetaClass() { return (groovy.lang.MetaClass)null;}
@groovy.transform.Generated() @groovy.transform.Internal() public void setMetaClass(groovy.lang.MetaClass mc) { }
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)