K2: implement BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION
#KT-59390 Fixed
This commit is contained in:
committed by
Space Team
parent
299d279915
commit
526bc1744a
+15
@@ -0,0 +1,15 @@
|
||||
// WITH_STDLIB
|
||||
package some
|
||||
|
||||
import kotlin.experimental.ExperimentalTypeInference
|
||||
|
||||
@OptIn(ExperimentalTypeInference::class)
|
||||
fun <T> applyBI(@BuilderInference t: T): T = t
|
||||
|
||||
fun <V> myBuildList(a: MutableList<out V>.() -> Unit) {}
|
||||
|
||||
fun main() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>myBuildList<!>(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>applyBI<!> {
|
||||
<!CANNOT_INFER_PARAMETER_TYPE!>this<!>.<!UNRESOLVED_REFERENCE!>add<!>("1")
|
||||
})
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// WITH_STDLIB
|
||||
package some
|
||||
|
||||
import kotlin.experimental.ExperimentalTypeInference
|
||||
|
||||
@OptIn(ExperimentalTypeInference::class)
|
||||
fun <T> applyBI(@BuilderInference t: T): T = t
|
||||
|
||||
fun <V> myBuildList(a: MutableList<out V>.() -> Unit) {}
|
||||
|
||||
fun main() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>myBuildList<!>(<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>applyBI<!> {
|
||||
this.<!DEBUG_INFO_MISSING_UNRESOLVED!>add<!>("1")
|
||||
})
|
||||
}
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
fun test() {
|
||||
foo(
|
||||
flow { emit(0) }
|
||||
) { <!BUILDER_INFERENCE_STUB_RECEIVER!>it.collect <!TOO_MANY_ARGUMENTS!>{}<!><!> }
|
||||
) <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ <!BUILDER_INFERENCE_STUB_RECEIVER!>it.collect <!TOO_MANY_ARGUMENTS!>{}<!><!> }<!>
|
||||
|
||||
// 0. Initial
|
||||
// W <: Any / declared upper bound
|
||||
@@ -53,4 +53,4 @@ class FlowCollectorImpl<C> : FlowCollector<C> {
|
||||
override fun emit(value: C) {}
|
||||
}
|
||||
|
||||
fun Flow<*>.collect() {}
|
||||
fun Flow<*>.collect() {}
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ data class Output(val source: InputWrapper<List<String>>)
|
||||
fun main2(input: InputWrapper<Unit>): Output {
|
||||
val output = input.doMapping(
|
||||
foo = { buildList { add("this is List<String>") } },
|
||||
bar = { it.isNotEmpty() },
|
||||
bar = <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ it.isNotEmpty() }<!>,
|
||||
)
|
||||
|
||||
return Output(source = output)
|
||||
|
||||
Vendored
+11
-11
@@ -9,9 +9,9 @@ fun <R> a(first: R, second: (List<R>) -> Unit) {}
|
||||
fun test1() {
|
||||
a(
|
||||
buildList { add("") },
|
||||
second = {
|
||||
second = <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
|
||||
it.myGenericExt()
|
||||
}
|
||||
}<!>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ fun test2() {
|
||||
first = {
|
||||
buildList { add("") }
|
||||
},
|
||||
second = {
|
||||
second = <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
|
||||
it.myExt() // Note: must be extension to add constraints
|
||||
}
|
||||
}<!>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -45,13 +45,13 @@ fun test3() {
|
||||
)
|
||||
|
||||
select (
|
||||
myBuildList { add("") },
|
||||
myBuildList { add(1) },
|
||||
myBuildList <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add("") }<!>,
|
||||
myBuildList <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add(1) }<!>,
|
||||
)
|
||||
|
||||
select (
|
||||
run { myBuildList { add("") } },
|
||||
myBuildList { add(1) },
|
||||
run { myBuildList <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add("") }<!> },
|
||||
myBuildList <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add(1) }<!>,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ fun <D> buildPartList(left: MutableList<D>.() -> Unit, right: MutableList<D>.()
|
||||
|
||||
fun test4() {
|
||||
buildPartList(
|
||||
left = { add(1) },
|
||||
right = { add("") }
|
||||
left = <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add(1) }<!>,
|
||||
right = <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ add("") }<!>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user