[NI-TESTS] Add regression tests
^KT-33638 Obsolete Add test for case mentioned in KT-33629. Used to be runtime failure instead of error diagnostic.
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
// !LANGUAGE: +NewInference
|
||||
// WITH_RUNTIME
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
|
||||
class Holder(val list: List<String>?)
|
||||
|
||||
fun box(): String {
|
||||
val holder1 = Holder(emptyList()) // No problem
|
||||
val holder2 = Holder(if(true) emptyList<String>() else null) // No problem
|
||||
val holder3 = Holder(if(true) emptyList() else mutableListOf()) // No problem
|
||||
val holder4 = Holder(if(true) emptyList() else null) // Compile error
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun <E> emptyList(): List<E> = TODO()
|
||||
|
||||
data class IntervalTree(
|
||||
val left: IntervalTree?,
|
||||
val right: IntervalTree?,
|
||||
val intervals: List<Interval>,
|
||||
val median: Float
|
||||
)
|
||||
|
||||
class Interval
|
||||
|
||||
fun buildTree(segments: List<Interval>): IntervalTree? = TODO()
|
||||
fun acquireIntervals(): List<Interval> = TODO()
|
||||
|
||||
fun main() {
|
||||
buildTree(acquireIntervals())
|
||||
?: emptyList()
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun <E> emptyList(): List<E> = TODO()
|
||||
|
||||
data class IntervalTree(
|
||||
val left: IntervalTree?,
|
||||
val right: IntervalTree?,
|
||||
val intervals: List<Interval>,
|
||||
val median: Float
|
||||
)
|
||||
|
||||
class Interval
|
||||
|
||||
fun buildTree(segments: List<Interval>): IntervalTree? = TODO()
|
||||
fun acquireIntervals(): List<Interval> = TODO()
|
||||
|
||||
fun main() {
|
||||
buildTree(acquireIntervals())
|
||||
?: <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!><!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>emptyList<!>()<!>
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package
|
||||
|
||||
public fun acquireIntervals(): kotlin.collections.List<Interval>
|
||||
public fun buildTree(/*0*/ segments: kotlin.collections.List<Interval>): IntervalTree?
|
||||
public fun </*0*/ E> emptyList(): kotlin.collections.List<E>
|
||||
public fun main(): kotlin.Unit
|
||||
|
||||
public final class Interval {
|
||||
public constructor Interval()
|
||||
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 final data class IntervalTree {
|
||||
public constructor IntervalTree(/*0*/ left: IntervalTree?, /*1*/ right: IntervalTree?, /*2*/ intervals: kotlin.collections.List<Interval>, /*3*/ median: kotlin.Float)
|
||||
public final val intervals: kotlin.collections.List<Interval>
|
||||
public final val left: IntervalTree?
|
||||
public final val median: kotlin.Float
|
||||
public final val right: IntervalTree?
|
||||
public final operator /*synthesized*/ fun component1(): IntervalTree?
|
||||
public final operator /*synthesized*/ fun component2(): IntervalTree?
|
||||
public final operator /*synthesized*/ fun component3(): kotlin.collections.List<Interval>
|
||||
public final operator /*synthesized*/ fun component4(): kotlin.Float
|
||||
public final /*synthesized*/ fun copy(/*0*/ left: IntervalTree? = ..., /*1*/ right: IntervalTree? = ..., /*2*/ intervals: kotlin.collections.List<Interval> = ..., /*3*/ median: kotlin.Float = ...): IntervalTree
|
||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user