diff --git a/compiler/testData/codegen/box/inference/builderInference/capturedTypes.kt b/compiler/testData/codegen/box/inference/builderInference/capturedTypes.kt index 2828212365e..9166e71a1e3 100644 --- a/compiler/testData/codegen/box/inference/builderInference/capturedTypes.kt +++ b/compiler/testData/codegen/box/inference/builderInference/capturedTypes.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // WITH_STDLIB -// JVM_ABI_K1_K2_DIFF: KT-61909 +// ISSUE: KT-61250 +// IGNORE_BACKEND_K2: ANY // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference @@ -42,4 +43,4 @@ fun box(): String { } return "OK" -} \ No newline at end of file +} diff --git a/compiler/testData/codegen/box/inference/builderInference/substituteStubTypeIntolambdaParameterDescriptor.kt b/compiler/testData/codegen/box/inference/builderInference/substituteStubTypeIntolambdaParameterDescriptor.kt index f877f5014d0..1e4eb8cc8f6 100644 --- a/compiler/testData/codegen/box/inference/builderInference/substituteStubTypeIntolambdaParameterDescriptor.kt +++ b/compiler/testData/codegen/box/inference/builderInference/substituteStubTypeIntolambdaParameterDescriptor.kt @@ -1,4 +1,7 @@ // WITH_STDLIB +// IGNORE_BACKEND_K2: ANY +// ISSUE: KT-64823 (K2/PCLA difference) +// Also, see testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.kt import kotlin.experimental.ExperimentalTypeInference diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.fir.kt index 2f277f0f465..e6a75685d8d 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.fir.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -DEPRECATION -UNCHECKED_CAST -OPT_IN_IS_NOT_ENABLED // WITH_STDLIB +// ISSUE: KT-61250 (for K2/PCLA difference) // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference @@ -33,7 +34,7 @@ fun main() { captureIn(getInv()) // K is fixed into CapturedType(out NotFixed: TypeVariable(R)) - capture(getOut()) + capture(getOut()) "" } build { @@ -42,4 +43,4 @@ fun main() { capture(getIn()) "" } -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.kt index aeb97794c37..78272e19e3f 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/capturedTypes.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -DEPRECATION -UNCHECKED_CAST -OPT_IN_IS_NOT_ENABLED // WITH_STDLIB +// ISSUE: KT-61250 (for K2/PCLA difference) // FILE: main.kt import kotlin.experimental.ExperimentalTypeInference diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.fir.kt index e9c4c7cc52b..473c22f11fa 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.fir.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -OPT_IN_IS_NOT_ENABLED -UNUSED_VARIABLE // WITH_STDLIB +// ISSUE: KT-64802 (K2/PCLA difference) // FILE: Test.java @@ -34,16 +35,16 @@ fun select4(x: E?, y: In): E = x!! fun test() { val ret = build { emit("1") - select1(get(), getIn()) - select1(get(), Test.foo(getIn())) - select1(Test.foo(get()), Test.foo(getIn())) - select1(Test.foo(get()), getIn()) - select4(get(), getIn()) - select4(get(), Test.foo(getIn())) - select4(Test.foo(get()), Test.foo(getIn())) - select4(Test.foo(get()), getIn()) + ? & java.io.Serializable?")!>select1(get(), getIn()) + ? & java.io.Serializable?")!>select1(get(), Test.foo(getIn())) + ? & java.io.Serializable?")!>select1(Test.foo(get()), Test.foo(getIn())) + ? & java.io.Serializable?")!>select1(Test.foo(get()), getIn()) + & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?")!>select4(get(), getIn()) + & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?")!>select4(get(), Test.foo(getIn())) + & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?")!>select4(Test.foo(get()), Test.foo(getIn())) + & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?")!>select4(Test.foo(get()), getIn()) - select4(id(Test.foo(get())), getIn()) + & java.io.Serializable..kotlin.Comparable<*>? & java.io.Serializable?")!>select4(id(Test.foo(get())), getIn()) build2 { emit(1) @@ -71,14 +72,14 @@ fun test() { } val ret2 = build { emit(if (true) "" else null) - select2(get(), getIn()) - select2(get(), Test.foo(getIn())) - select2(Test.foo(get()), Test.foo(getIn())) - select2(Test.foo(get()), getIn()) - select3(get(), getIn()) - select3(get(), Test.foo(getIn())) - select3(Test.foo(get()), Test.foo(getIn())) - select3(Test.foo(get()), getIn()) + select2(get(), getIn()) + select2(get(), Test.foo(getIn())) + select2(Test.foo(get()), Test.foo(getIn())) + select2(Test.foo(get()), getIn()) + select3(get(), getIn()) + select3(get(), Test.foo(getIn())) + select3(Test.foo(get()), Test.foo(getIn())) + select3(Test.foo(get()), getIn()) "" } } diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.kt index 9ac82866d34..29eb8b577c5 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeContravariant.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -OPT_IN_IS_NOT_ENABLED -UNUSED_VARIABLE // WITH_STDLIB +// ISSUE: KT-64802 (K2/PCLA difference) // FILE: Test.java diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.fir.kt index 877abc4f9b8..037fe5c07ff 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.fir.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -OPT_IN_IS_NOT_ENABLED -UNUSED_VARIABLE // WITH_STDLIB +// ISSUE: KT-64802 (K2/PCLA difference) // FILE: Test.java @@ -48,13 +49,13 @@ fun test() { build2 { emit(1) select1(this@build.get(), getInv()) - select1(get(), Test.foo(this@build.getInv())) + select1(get(), Test.foo(this@build.getInv())) select1(Test.foo(this@build.get()), Test.foo(getInv())) - select1(Test.foo(get()), this@build.getInv()) + select1(Test.foo(get()), this@build.getInv()) select4(this@build.get(), getInv()) - select4(get(), Test.foo(this@build.getInv())) + select4(get(), Test.foo(this@build.getInv())) select4(Test.foo(this@build.get()), Test.foo(getInv())) - select4(Test.foo(get()), this@build.getInv()) + select4(Test.foo(get()), this@build.getInv()) select4(id(Test.foo(this@build.get())), getInv()) "" @@ -79,13 +80,13 @@ fun test() { build2 { emit(1) select2(this@build.get(), getInv()) // TODO - select2(get(), Test.foo(this@build.getInv())) + select2(get(), Test.foo(this@build.getInv())) select2(Test.foo(this@build.get()), Test.foo(getInv())) // TODO - select2(Test.foo(get()), this@build.getInv()) + select2(Test.foo(get()), this@build.getInv()) select3(this@build.get(), getInv()) // TODO - select3(get(), Test.foo(this@build.getInv())) + select3(get(), Test.foo(this@build.getInv())) select3(Test.foo(this@build.get()), Test.foo(getInv())) // TODO - select3(Test.foo(get()), this@build.getInv()) + select3(Test.foo(get()), this@build.getInv()) "" } "" diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.kt index eb362897913..f8d30565448 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/commonSuperTypeInvariant.kt @@ -1,6 +1,7 @@ // !LANGUAGE: +UnrestrictedBuilderInference // !DIAGNOSTICS: -UNUSED_PARAMETER -DEPRECATION -OPT_IN_IS_NOT_ENABLED -UNUSED_VARIABLE // WITH_STDLIB +// ISSUE: KT-64802 (K2/PCLA difference) // FILE: Test.java diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.kt new file mode 100644 index 00000000000..502b66f57ed --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.kt @@ -0,0 +1,21 @@ +// FIR_DUMP +// !OPT_IN: kotlin.RequiresOptIn +// !DIAGNOSTICS: -UNUSED_PARAMETER +// ISSUE: KT-64823 (K2/PCLA difference) + +import kotlin.experimental.ExperimentalTypeInference + +class TypeDefinition { + fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO() + fun serialize(parser: (value: KotlinType) -> Any?): Unit = TODO() +} + +@OptIn(ExperimentalTypeInference::class) +fun defineType(definition: TypeDefinition.() -> Unit): Unit = TODO() + +fun main() { + defineType { + parse { it.toInt() } + serialize { it.toString() } + } +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.txt index cf2b0a023c3..3d82e0ae7d0 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.fir.txt @@ -1,4 +1,4 @@ -FILE: kt36220.kt +FILE: kt36220.fir.kt public final class TypeDefinition : R|kotlin/Any| { public constructor(): R|TypeDefinition| { super() @@ -22,8 +22,8 @@ FILE: kt36220.kt ^ R|/it|.R|kotlin/text/toInt|() } ) - this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun (it: R|kotlin/Int|): R|kotlin/Any?| { - ^ (R|/it| as R|kotlin/Any|).R|kotlin/Any.toString|() + this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun (it: R|@R|kotlin/ParameterName|(name = String(value)) kotlin/Int|): R|kotlin/Any?| { + ^ R|/it|.R|kotlin/toString#|() } ) } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.kt index 03031bbe097..e9f1f22e139 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt36220.kt @@ -1,7 +1,7 @@ -// FIR_IDENTICAL // FIR_DUMP // !OPT_IN: kotlin.RequiresOptIn // !DIAGNOSTICS: -UNUSED_PARAMETER +// ISSUE: KT-64823 (K2/PCLA difference) import kotlin.experimental.ExperimentalTypeInference diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.kt new file mode 100644 index 00000000000..c6aa3448ec8 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.kt @@ -0,0 +1,24 @@ +// FIR_DUMP +// Similar to kt36220.kt, but with receivers instead of it +// ISSUE: KT-64823 (K2/PCLA difference) + +class TypeDefinition { + fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO() + fun serialize(parser: KotlinType.() -> Any?): Unit = TODO() +} + +fun defineType(definition: TypeDefinition.() -> Unit): Unit = TODO() + +fun foo() { + defineType { + parse { it.toInt() } + serialize { toString() } + } +} + +fun bar() { + defineType { + parse { it.toInt() } + serialize { this.toString() } + } +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.txt index e910defc009..4dbd12ac5c2 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.fir.txt @@ -1,4 +1,4 @@ -FILE: stubCallOnReceiver.kt +FILE: stubCallOnReceiver.fir.kt public final class TypeDefinition : R|kotlin/Any| { public constructor(): R|TypeDefinition| { super() @@ -22,8 +22,8 @@ FILE: stubCallOnReceiver.kt ^ R|/it|.R|kotlin/text/toInt|() } ) - this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun R|kotlin/Int|.(): R|kotlin/Any?| { - ^ (this@R|special/anonymous| as R|kotlin/Any|).R|kotlin/Any.toString|() + this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun .(): R|kotlin/Any?| { + ^ this@R|special/anonymous|.R|kotlin/toString|() } ) } @@ -35,8 +35,8 @@ FILE: stubCallOnReceiver.kt ^ R|/it|.R|kotlin/text/toInt|() } ) - this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun R|kotlin/Int|.(): R|kotlin/Any?| { - ^ (this@R|special/anonymous| as R|kotlin/Any|).R|kotlin/Any.toString|() + this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun .(): R|kotlin/Any?| { + ^ this@R|special/anonymous|.R|kotlin/toString|() } ) } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.kt index 0c214d8dbaa..6676443b2dc 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnReceiver.kt @@ -1,6 +1,6 @@ -// FIR_IDENTICAL // FIR_DUMP // Similar to kt36220.kt, but with receivers instead of it +// ISSUE: KT-64823 (K2/PCLA difference) class TypeDefinition { fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO() diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.kt new file mode 100644 index 00000000000..8aa144dda91 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.kt @@ -0,0 +1,19 @@ +// FIR_DUMP +// ISSUE: KT-64823 (K2/PCLA difference) + +class TypeDefinition { + fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO() + fun serialize(parser: (value: KotlinType) -> Any?): Unit = TODO() +} + +fun defineType(definition: TypeDefinition.() -> Unit): Unit = TODO() + +fun main() { + defineType { + parse { it.toInt() } + serialize { + val i = it + i.toString() + } + } +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.txt index 97828fcba31..2ddad63f270 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.fir.txt @@ -1,4 +1,4 @@ -FILE: stubCallOnVariable.kt +FILE: stubCallOnVariable.fir.kt public final class TypeDefinition : R|kotlin/Any| { public constructor(): R|TypeDefinition| { super() @@ -22,9 +22,9 @@ FILE: stubCallOnVariable.kt ^ R|/it|.R|kotlin/text/toInt|() } ) - this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun (it: ): R|kotlin/Any?| { - lval i: = R|/it| - ^ R|/i|.R|kotlin/toString|() + this@R|special/anonymous|.R|SubstitutionOverride|( = serialize@fun (it: R|@R|kotlin/ParameterName|(name = String(value)) kotlin/Int|): R|kotlin/Any?| { + lval i: R|@R|kotlin/ParameterName|(name = String(value)) kotlin/Int| = R|/it| + ^ R|/i|.R|kotlin/toString#|() } ) } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.kt index 1c34ac142b0..b2457336cf6 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/stubCallOnVariable.kt @@ -1,5 +1,5 @@ -// FIR_IDENTICAL // FIR_DUMP +// ISSUE: KT-64823 (K2/PCLA difference) class TypeDefinition { fun parse(parser: (serializedValue: String) -> KotlinType?): Unit = TODO()