Star projection information preserved in substitutions

#KT-6700 Fixed
This commit is contained in:
Andrey Breslav
2015-01-30 19:53:04 +03:00
parent da639039bd
commit fecf6f9fdf
38 changed files with 412 additions and 216 deletions
@@ -0,0 +1,14 @@
// FILE: p/Base.java
package p;
import java.util.*;
public class Base<T> {
void coll(Collection<?> r) {}
}
// FILE: k.kt
package p
class Derived: p.Base<String>()
@@ -0,0 +1,20 @@
package
package p {
public open class Base</*0*/ T> {
public constructor Base</*0*/ T>()
public/*package*/ open fun coll(/*0*/ r: kotlin.(Mutable)Collection<*>!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class Derived : p.Base<kotlin.String> {
public constructor Derived()
public/*package*/ open override /*1*/ /*fake_override*/ fun coll(/*0*/ r: kotlin.(Mutable)Collection<*>!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,14 @@
// FILE: p/Base.java
package p;
public class Base<T> {
void foo(R<?> r) {}
}
// FILE: k.kt
package p
class R<T: R<T>>
class Derived: p.Base<String>()
@@ -0,0 +1,27 @@
package
package p {
public open class Base</*0*/ T> {
public constructor Base</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun foo(/*0*/ r: p.R<*>!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class Derived : p.Base<kotlin.String> {
public constructor Derived()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open override /*1*/ /*fake_override*/ fun foo(/*0*/ r: p.R<*>!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class R</*0*/ T : p.R<T>> {
public constructor R</*0*/ T : p.R<T>>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,9 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
class R<T: R<T>>
open class Base<T> {
fun foo(r: R<*>) {}
}
class Derived: Base<String>()
@@ -0,0 +1,24 @@
package
internal open class Base</*0*/ T> {
public constructor Base</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun foo(/*0*/ r: R<*>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class Derived : Base<kotlin.String> {
public constructor Derived()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final override /*1*/ /*fake_override*/ fun foo(/*0*/ r: R<*>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class R</*0*/ T : R<T>> {
public constructor R</*0*/ T : R<T>>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}