[NI] Fix poor performance of recursive types approximation
#KT-32407 Fixed
This commit is contained in:
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
// !LANGUAGE: +NewInference
|
||||
|
||||
// FILE: MenuItemBase.java
|
||||
|
||||
public class MenuItemBase<C extends ContextMenuBase<C, I, S>, I extends MenuItemBase<C, I, S>, S extends SubMenuBase<C, I, S>> {
|
||||
public String getText() { return null; }
|
||||
}
|
||||
|
||||
// FILE: ContextMenuBase.java
|
||||
|
||||
public class ContextMenuBase<C extends ContextMenuBase<C, I, S>, I extends MenuItemBase<C, I, S>, S extends SubMenuBase<C, I, S>> {}
|
||||
|
||||
// FILE: SubMenuBase.java
|
||||
|
||||
public class SubMenuBase<C extends ContextMenuBase<C, I, S>, I extends MenuItemBase<C, I, S>, S extends SubMenuBase<C, I, S>> {}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
fun test(m: MenuItemBase<*, *, *>) {
|
||||
m.text
|
||||
}
|
||||
Vendored
+25
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
public fun test(/*0*/ m: MenuItemBase<*, *, *>): kotlin.Unit
|
||||
|
||||
public open class ContextMenuBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!> {
|
||||
public constructor ContextMenuBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!>()
|
||||
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 MenuItemBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!> {
|
||||
public constructor MenuItemBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!>()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun getText(): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class SubMenuBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!> {
|
||||
public constructor SubMenuBase</*0*/ C : ContextMenuBase<C!, I!, S!>!, /*1*/ I : MenuItemBase<C!, I!, S!>!, /*2*/ S : SubMenuBase<C!, I!, S!>!>()
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user