Prevent recursion on erasion of raw types with interdependent type parameters

^KT-47480 Fixed
This commit is contained in:
Victor Petukhov
2021-06-28 13:12:36 +03:00
committed by TeamCityServer
parent 0774d4d734
commit e071281b20
7 changed files with 85 additions and 27 deletions
@@ -0,0 +1,14 @@
// FIR_IDENTICAL
// FILE: Boo.java
public class Boo<N> {}
// FILE: Foo.java
public class Foo<T extends Boo<K>, K extends Boo<X>, X extends Boo<K>> {
T test2() { return null; }
static Foo test1() { return null; }
}
// FILE: main.kt
fun main() {
val x = Foo.test1().test2()
}
@@ -0,0 +1,21 @@
package
public fun main(): kotlin.Unit
public open class Boo</*0*/ N : kotlin.Any!> {
public constructor Boo</*0*/ N : kotlin.Any!>()
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
}
public open class Foo</*0*/ T : Boo<K!>!, /*1*/ K : Boo<X!>!, /*2*/ X : Boo<K!>!> {
public constructor Foo</*0*/ T : Boo<K!>!, /*1*/ K : Boo<X!>!, /*2*/ X : Boo<K!>!>()
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/*package*/ open fun test2(): T!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public/*package*/ open fun test1(): (Foo<(raw) Boo<Boo<Boo<*>!>!>!, (raw) Boo<Boo<*>!>!, (raw) Boo<Boo<*>!>!>..Foo<out Boo<out Boo<out Boo<*>!>!>!, out Boo<out Boo<*>!>!, out Boo<out Boo<*>!>!>?)
}