K2: Allow PCLA inference when a value parameter has a TV type
^KT-64877 Fixed
This commit is contained in:
committed by
Space Team
parent
b2ca19da73
commit
72b0372927
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-64876
|
||||
class Controller<K>
|
||||
|
||||
fun <T1> generate1(lambda: T1.(Controller<T1>) -> Unit): T1 = TODO()
|
||||
fun <T2> generate2(lambda: Controller<T2>.(T2) -> Unit): T2 = TODO()
|
||||
|
||||
fun consume(f: Controller<String>) {}
|
||||
fun consumeString(f: String) {}
|
||||
|
||||
fun main() {
|
||||
// We don't expect to allow running PCLA with not fixed TV as receiver
|
||||
// because all the calls should be resolved inside its member scope and we can't do that properly
|
||||
generate1 <!CANNOT_INFER_PARAMETER_TYPE!>{
|
||||
consume(it)
|
||||
}<!>.length
|
||||
|
||||
generate2 {
|
||||
consume(this)
|
||||
}.length
|
||||
|
||||
generate2 {
|
||||
consumeString(it)
|
||||
}.length
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-64876
|
||||
class Controller<K>
|
||||
|
||||
fun <T1> generate1(lambda: T1.(Controller<T1>) -> Unit): T1 = TODO()
|
||||
fun <T2> generate2(lambda: Controller<T2>.(T2) -> Unit): T2 = TODO()
|
||||
|
||||
fun consume(f: Controller<String>) {}
|
||||
fun consumeString(f: String) {}
|
||||
|
||||
fun main() {
|
||||
// We don't expect to allow running PCLA with not fixed TV as receiver
|
||||
// because all the calls should be resolved inside its member scope and we can't do that properly
|
||||
generate1 {
|
||||
consume(it)
|
||||
}.length
|
||||
|
||||
generate2 {
|
||||
consume(this)
|
||||
}.length
|
||||
|
||||
generate2 {
|
||||
consumeString(it)
|
||||
}.length
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
fun test() {
|
||||
foo(
|
||||
flow { emit(0) }
|
||||
) <!CANNOT_INFER_PARAMETER_TYPE!>{ it.collect <!TOO_MANY_ARGUMENTS!>{}<!> }<!>
|
||||
) { <!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>.collect <!TOO_MANY_ARGUMENTS!>{}<!> }
|
||||
|
||||
// 0. Initial
|
||||
// W <: Any / declared upper bound
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@ fun test1() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ fun test2() {
|
||||
val v = this.get(0)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ fun test3() {
|
||||
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ fun test4() {
|
||||
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ fun test1() {
|
||||
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> <!CANNOT_INFER_PARAMETER_TYPE!>{
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ fun test2() {
|
||||
val v = this.get(0)
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ fun test3() {
|
||||
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ fun test4() {
|
||||
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
|
||||
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
|
||||
use(it::extension)
|
||||
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it<!>::extension)
|
||||
}<!>
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user