Files
kotlin-fork/compiler/testData/diagnostics/testsWithStdLib/inference/performance/kt42195.kt
T
Victor Petukhov 0857b9c9e7 Rethink constraints incorporation
Namely, remove incorporation “otherInsideMyConstraint” to eliminate
constraint system redundancy and produce a potentially very large number
 of constructs.
Instead, introduce not so “spreadable” incorporation during variable
fixation (equality constraint with result type into other constraints).
^KT-41644 Fixed
^KT-42195 Fixed
^KT-42920 Fixed
^KT-42791 Fixed
^KT-41741 Fixed
2020-11-25 11:15:20 +03:00

40 lines
1.1 KiB
Kotlin
Vendored

// FIR_IDENTICAL
sealed class Tree<TIndex, out TCommon, out TInner, out TLeaf> {
abstract val value: TCommon
abstract val children: Map<TIndex, Tree<TIndex, TCommon, TInner, TLeaf>>
data class Inner<TIndex, TCommon, TInner, TLeaf>(
override val value: TCommon,
val innerValue: TInner,
override val children: Map<TIndex, Tree<TIndex, TCommon, TInner, TLeaf>>
) : Tree<TIndex, TCommon, TInner, TLeaf>()
data class Leaf<TIndex, TCommon, TLeaf>(
override val value: TCommon,
val leafValue: TLeaf
) : Tree<TIndex, TCommon, Nothing, TLeaf>() {
override val children: Map<TIndex, Tree<TIndex, TCommon, Nothing, TLeaf>> get() = emptyMap()
}
}
val tree = Tree.Inner(
"root",
Unit,
mapOf(
1 to Tree.Leaf("1", 1),
2 to Tree.Inner(
"2",
Unit,
mapOf(
1 to Tree.Leaf("21", 2),
2 to Tree.Inner(
"22",
Unit,
mapOf(1 to Tree.Leaf("221", 3))
),
3 to Tree.Leaf("23", 4)
)
)
)
)