Proper enhancement for type parameters

This commit is contained in:
Andrey Breslav
2015-04-29 20:54:13 +03:00
committed by Denis Zharkov
parent 04aee291b9
commit 8c78739983
9 changed files with 92 additions and 10 deletions
@@ -0,0 +1,15 @@
// FILE: k.kt
trait ML<T> {
public fun foo(): MutableList<T>
}
class K : J<String>(), ML<String>
// FILE: J.java
import java.util.*;
class J<T> extends ML<T> {
public List<T> foo() { return null; }
}
@@ -0,0 +1,24 @@
package
public/*package*/ open class J</*0*/ T> : ML<T!> {
public/*package*/ constructor J</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun foo(): kotlin.MutableList<T!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class K : J<kotlin.String>, ML<kotlin.String> {
public constructor K()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun foo(): kotlin.MutableList<kotlin.String>
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait ML</*0*/ T> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(): kotlin.MutableList<T>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,11 @@
// FILE: k.kt
trait K {
fun <T> foo(t: T)
}
// FILE: J.java
interface J extends K {
<T> void foo(T t);
}
@@ -0,0 +1,15 @@
package
public/*package*/ trait J : K {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ fun </*0*/ T> foo(/*0*/ t: T): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal trait K {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal abstract fun </*0*/ T> foo(/*0*/ t: T): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}