6356807997
#KT-36247 fixed A lot of testdata changed because significanly less (error) descriptors are created for unresolved types, so diagnostics became different.
49 lines
1.7 KiB
Kotlin
Vendored
49 lines
1.7 KiB
Kotlin
Vendored
// !WITH_NEW_INFERENCE
|
|
// !CHECK_TYPE
|
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
data class A(val x: Int, val y: String)
|
|
data class B(val u: Double, val w: Short)
|
|
|
|
// first parameter of the functional type of 'x' can only be inferred from a lambda parameter explicit type specification
|
|
fun <X, Y> foo(y: Y, x: (X, Y) -> Unit) {}
|
|
|
|
fun bar(aInstance: A, bInstance: B) {
|
|
foo("") {
|
|
(a, b): A, c ->
|
|
a checkType { _<Int>() }
|
|
b checkType { _<String>() }
|
|
c checkType { _<String>() }
|
|
}
|
|
|
|
foo(aInstance) {
|
|
a: String, (b, c) ->
|
|
a checkType { _<String>() }
|
|
b checkType { _<Int>() }
|
|
c checkType { _<String>() }
|
|
}
|
|
|
|
foo(bInstance) {
|
|
(a, b): A, (c, d) ->
|
|
a checkType { _<Int>() }
|
|
b checkType { _<String>() }
|
|
c checkType { _<Double>() }
|
|
d checkType { _<Short>() }
|
|
}
|
|
|
|
<!NI;NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, OI;TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>foo<!>(bInstance) {
|
|
<!CANNOT_INFER_PARAMETER_TYPE!>(a, b)<!>, (c, d) ->
|
|
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>a<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>checkType<!> { <!UNRESOLVED_REFERENCE!>_<!><Int>() }
|
|
<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>b<!> <!NI;DEBUG_INFO_MISSING_UNRESOLVED, OI;DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>checkType<!> { <!UNRESOLVED_REFERENCE!>_<!><String>() }
|
|
c checkType { _<Double>() }
|
|
d checkType { _<Short>() }
|
|
}
|
|
|
|
foo<A, B>(bInstance) {
|
|
(a, b), (c, d) ->
|
|
a checkType { _<Int>() }
|
|
b checkType { _<String>() }
|
|
c checkType { _<Double>() }
|
|
d checkType { _<Short>() }
|
|
}
|
|
}
|