K2: implement BUILDER_INFERENCE_STUB_RECEIVER

#KT-59369 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-11-28 23:30:11 +01:00
committed by Space Team
parent 5e5e5b8b9f
commit 0ed6256bcc
21 changed files with 162 additions and 70 deletions
@@ -10,7 +10,7 @@ fun main(arg: Any) {
val value = myBuilder {
doSmthng("one ")
run { a; this }.a = 10
a += 1
<!BUILDER_INFERENCE_STUB_RECEIVER!>a += 1<!>
this.a = 57
this.<!ILLEGAL_SELECTOR, VARIABLE_EXPECTED!>(a)<!> = 57
a = x
@@ -26,18 +26,18 @@ fun main(arg: Any, condition: Boolean) {
val value = myBuilder {
b[0] = 123
a = 45
a<!OVERLOAD_RESOLUTION_AMBIGUITY!>++<!>
a<!NONE_APPLICABLE!>++<!>
bar(::a)
if (<!USELESS_IS_CHECK!>a is Int<!>) {
a = 67
a<!OVERLOAD_RESOLUTION_AMBIGUITY!>--<!>
a<!NONE_APPLICABLE!>--<!>
bar(::a)
}
when (condition) {
true -> a = 87
false -> a = 65
}
val x by <!DELEGATE_SPECIAL_FUNCTION_AMBIGUITY!>a<!>
val x by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE!>a<!>
change {
a = 99
@@ -0,0 +1,19 @@
// !OPT_IN: kotlin.RequiresOptIn
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.experimental.ExperimentalTypeInference
class TypeDefinition<KotlinType : Any> {
fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO()
fun serialize(parser: (value: KotlinType) -> Any?): Unit = TODO()
}
@OptIn(ExperimentalTypeInference::class)
fun <KotlinType : Any> defineType(definition: TypeDefinition<KotlinType>.() -> Unit): Unit = TODO()
fun main() {
defineType {
parse { it.toInt() }
serialize { <!BUILDER_INFERENCE_STUB_RECEIVER!>it.toString()<!> }
}
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !OPT_IN: kotlin.RequiresOptIn
// !DIAGNOSTICS: -UNUSED_PARAMETER