[FIR] KT-56612: Fully-expand types when casting bare types
^KT-56612 Fixed Merge-request: KT-MR-8849 Merged-by: Nikolay Lunyak <Nikolay.Lunyak@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
0963bd25a8
commit
516efe77c9
+29
@@ -0,0 +1,29 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
interface FlameGraphModel<T>
|
||||
|
||||
internal typealias CallUsageNode = CallTreeNode<BaseCallStackElement>
|
||||
|
||||
interface CallTreeNode<out T : Any> : TreeNodeWithParent<CallWithValue<T>>
|
||||
|
||||
interface TreeNodeWithParent<out Data>
|
||||
|
||||
interface CallWithValue<out T : Any>
|
||||
|
||||
abstract class BaseCallStackElement
|
||||
|
||||
open class CallUsageNodeFlameGraphModel<Call : Any> : FlameGraphModel<CallTreeNode<Call>>
|
||||
|
||||
fun foo(model: FlameGraphModel<CallUsageNode>) {
|
||||
// K1: Ok
|
||||
val afterCast = model as CallUsageNodeFlameGraphModel
|
||||
}
|
||||
|
||||
internal typealias CallTreeNodeTypealias<K> = CallTreeNode<K>
|
||||
|
||||
open class CallUsageNodeFlameGraphModelWithTypealiasedSupertypeArgument<Call : Any> : FlameGraphModel<CallTreeNodeTypealias<Call>>
|
||||
|
||||
fun bar(model: FlameGraphModel<CallUsageNode>) {
|
||||
// K1: Ok
|
||||
val afterCast = model as CallUsageNodeFlameGraphModelWithTypealiasedSupertypeArgument
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package
|
||||
|
||||
public fun bar(/*0*/ model: FlameGraphModel<CallUsageNode /* = CallTreeNode<BaseCallStackElement> */>): kotlin.Unit
|
||||
public fun foo(/*0*/ model: FlameGraphModel<CallUsageNode /* = CallTreeNode<BaseCallStackElement> */>): kotlin.Unit
|
||||
|
||||
public abstract class BaseCallStackElement {
|
||||
public constructor BaseCallStackElement()
|
||||
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 interface CallTreeNode</*0*/ out T : kotlin.Any> : TreeNodeWithParent<CallWithValue<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
|
||||
}
|
||||
|
||||
public open class CallUsageNodeFlameGraphModel</*0*/ Call : kotlin.Any> : FlameGraphModel<CallTreeNode<Call>> {
|
||||
public constructor CallUsageNodeFlameGraphModel</*0*/ Call : 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 CallUsageNodeFlameGraphModelWithTypealiasedSupertypeArgument</*0*/ Call : kotlin.Any> : FlameGraphModel<CallTreeNodeTypealias<Call> /* = CallTreeNode<Call> */> {
|
||||
public constructor CallUsageNodeFlameGraphModelWithTypealiasedSupertypeArgument</*0*/ Call : 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 interface CallWithValue</*0*/ out T : 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 interface FlameGraphModel</*0*/ 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
|
||||
}
|
||||
|
||||
public interface TreeNodeWithParent</*0*/ out Data> {
|
||||
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 typealias CallTreeNodeTypealias</*0*/ K> = CallTreeNode<K>
|
||||
internal typealias CallUsageNode = CallTreeNode<BaseCallStackElement>
|
||||
Reference in New Issue
Block a user