Luke Bemish created GROOVY-10797:
------------------------------------

             Summary: Stubs with raw type parameters generated through joint 
compilation cannot be compiled by javac
                 Key: GROOVY-10797
                 URL: https://issues.apache.org/jira/browse/GROOVY-10797
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 4.0.6
            Reporter: Luke Bemish


Stubs generated by groovyc for joint compilation that contain parameterized 
types as return values that use a raw type as a type parameter cannot be 
compiled by javac, even though the code generating these may compile just fine 
without joint compilation.

I am compiling against a java library that has two classes that look something 
like as follows:
{code:java}
public class Inner<T> {
}
{code}
{code:java}
public class Outer<T extends Inner<?>> {
}
{code}
My own class has the following method:
{code:groovy}
static <T extends Inner> Outer<T> methodName() {
    return null
}
{code}
If joint compilation is enabled and a stub is generated for the class with that 
method, the following stub is generated:
{code:java}
public static <T extends Inner> Outer<T> someMethod() { return (Outer<T>)null;}
{code}
This throws the following error when compiled with javac:
{code:java}
error: type argument T#1 is not within bounds of type-variable T#2
    public static <T extends Inner> Outer<T> someMethod() { return 
(Outer<T>)null;}
                                          ^
  where T#1,T#2 are type-variables:
    T#1 extends Inner declared in method <T#1>someMethod()
    T#2 extends Inner<?> declared in class Outer{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to