diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 75855a9dd68..864cbba4638 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -17199,6 +17199,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt"); } + @Test + @TestMetadata("bothReceiverAndValueParameterNotFixed.kt") + public void testBothReceiverAndValueParameterNotFixed() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt"); + } + @Test @TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt") public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java index 4e1fcf9ec33..3556cd3e8f5 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java @@ -2772,6 +2772,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index ed72e22fd81..d74cc5f0402 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -17199,6 +17199,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt"); } + @Test + @TestMetadata("bothReceiverAndValueParameterNotFixed.kt") + public void testBothReceiverAndValueParameterNotFixed() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt"); + } + @Test @TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt") public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java index c21775fb366..4883f7d9a9b 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java @@ -2772,6 +2772,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 4acbcb58f19..1d27886ba85 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -17193,6 +17193,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt"); } + @Test + @TestMetadata("bothReceiverAndValueParameterNotFixed.kt") + public void testBothReceiverAndValueParameterNotFixed() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt"); + } + @Test @TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt") public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 7d86c974b5c..086d74620b7 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -17199,6 +17199,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt"); } + @Test + @TestMetadata("bothReceiverAndValueParameterNotFixed.kt") + public void testBothReceiverAndValueParameterNotFixed() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt"); + } + @Test @TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt") public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 2c722dd2e49..ccd6fc4d30d 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -2755,6 +2755,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java index 66c69bce859..7587526b232 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java @@ -2755,6 +2755,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 8575a50450e..55dda958db7 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -2755,6 +2755,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt index bdf2985b690..7bfff364605 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt @@ -267,7 +267,7 @@ class FirCallCompleter( this.name = name symbol = FirValueParameterSymbol(name) returnTypeRef = - itType.approximateLambdaInputType(symbol).toFirResolvedTypeRef( + itType.approximateLambdaInputType(symbol, withPCLASession).toFirResolvedTypeRef( lambdaAtom.atom.source?.fakeElement(KtFakeSourceElementKind.ItLambdaParameter) ) defaultValue = null @@ -285,7 +285,7 @@ class FirCallCompleter( receiverType == null -> lambdaArgument.replaceReceiverParameter(null) !lambdaAtom.coerceFirstParameterToExtensionReceiver -> { lambdaArgument.receiverParameter?.apply { - val type = receiverType.approximateLambdaInputType(valueParameter = null) + val type = receiverType.approximateLambdaInputType(valueParameter = null, withPCLASession) val source = source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver) ?: lambdaArgument.source?.fakeElement(KtFakeSourceElementKind.LambdaReceiver) @@ -330,7 +330,7 @@ class FirCallCompleter( ) return@forEachIndexed } - val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol) + val newReturnType = theParameters[index].approximateLambdaInputType(parameter.symbol, withPCLASession) val newReturnTypeRef = if (parameter.returnTypeRef is FirImplicitTypeRef) { newReturnType.toFirResolvedTypeRef(parameter.source?.fakeElement(KtFakeSourceElementKind.ImplicitReturnTypeOfLambdaValueParameter)) } else parameter.returnTypeRef.resolvedTypeFromPrototype(newReturnType) @@ -376,11 +376,14 @@ class FirCallCompleter( } } - private fun ConeKotlinType.approximateLambdaInputType(valueParameter: FirValueParameterSymbol?): ConeKotlinType { + private fun ConeKotlinType.approximateLambdaInputType( + valueParameter: FirValueParameterSymbol?, + isRootLambdaForPCLASession: Boolean, + ): ConeKotlinType { // We only run lambda completion from ConstraintSystemCompletionContext.analyzeRemainingNotAnalyzedPostponedArgument when they are // left uninferred. // Currently, we use stub types for builder inference, so CANNOT_INFER_PARAMETER_TYPE is the only possible result here. - if (isTypeVariableThatShouldBeFixedBeforeLambdaAnalysis(isReceiver = valueParameter == null)) { + if (useErrorTypeInsteadOfTypeVariableForParameterType(isReceiver = valueParameter == null, isRootLambdaForPCLASession)) { val diagnostic = valueParameter?.let(::ConeCannotInferValueParameterType) ?: ConeCannotInferReceiverParameterType() return ConeErrorType(diagnostic) } @@ -390,18 +393,28 @@ class FirCallCompleter( ) ?: this } - private fun ConeKotlinType.isTypeVariableThatShouldBeFixedBeforeLambdaAnalysis(isReceiver: Boolean): Boolean { + private fun ConeKotlinType.useErrorTypeInsteadOfTypeVariableForParameterType( + isReceiver: Boolean, + isRootLambdaForPCLASession: Boolean, + ): Boolean { if (this !is ConeTypeVariableType) return false - // Outside PCLA, all type variables for parameter types should be fixed before lambda analysis - // Inside PCLA, we force fixing receivers before lambda analysis - if (inferenceSession !is FirPCLAInferenceSession || isReceiver) return true + // Receivers are expected to be fixed both for PCLA/nonPCLA lambdas, so just build error type + if (isReceiver) return true - // For type variables not based on type parameters (created for lambda parameters with no expected type) - // we force them to be fixed before lambda analysis - if (typeConstructor.originalTypeParameter == null) return true + // Besides PCLA, all type variables for parameter types should be fixed before lambda analysis + // Inside PCLA (or when we start it), we force fixing receivers before lambda analysis, but allow value parameters + // to remain unfixed TVs. + if (isRootLambdaForPCLASession || inferenceSession is FirPCLAInferenceSession) { + // For type variables not based on type parameters (created for lambda parameters with no expected type) + // we force them to be fixed before lambda analysis. + // + // Otherwise, it's a type variable based on a type parameter which resulting type might be inferred from the lambda body, + // so in that case leave type variable type + return typeConstructor.originalTypeParameter == null + } - return false + return true } } diff --git a/compiler/testData/codegen/box/builderInference/issues/kt53553.kt b/compiler/testData/codegen/box/builderInference/issues/kt53553.kt index fe249a09090..b918b494b65 100644 --- a/compiler/testData/codegen/box/builderInference/issues/kt53553.kt +++ b/compiler/testData/codegen/box/builderInference/issues/kt53553.kt @@ -1,7 +1,7 @@ // ISSUE: KT-53553 // IGNORE_LIGHT_ANALYSIS -// IGNORE_BACKEND: ANY +// IGNORE_BACKEND_K1: ANY // REASON: red code (see corresponding diagnostic test) fun box(): String { diff --git a/compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt b/compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt new file mode 100644 index 00000000000..a168c1ca281 --- /dev/null +++ b/compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt @@ -0,0 +1,18 @@ +class Controller + +fun generate(lambda: Controller.(T) -> Unit) {} + +fun consume(f: Controller) {} +fun consumeString(f: String) {} + +fun box(): String { + generate { + consume(this) + } + + generate { + consumeString(it) + } + + return "OK" +} diff --git a/compiler/testData/diagnostics/tests/builderInference/issues/kt53422a.fir.kt b/compiler/testData/diagnostics/tests/builderInference/issues/kt53422a.fir.kt index 43e03f1db97..ef8bd12f7ff 100644 --- a/compiler/testData/diagnostics/tests/builderInference/issues/kt53422a.fir.kt +++ b/compiler/testData/diagnostics/tests/builderInference/issues/kt53422a.fir.kt @@ -4,7 +4,7 @@ fun test() { val buildee = buildFromValue( innerBuild { setInnerTypeVariable(TargetType()) }, - { it.placeholderExtensionInvokeOnInnerBuildee() } + { it.placeholderExtensionInvokeOnInnerBuildee() } ) // exact type equality check — turns unexpected compile-time behavior into red code // considered to be non-user-reproducible code for the purposes of these tests diff --git a/compiler/testData/diagnostics/tests/builderInference/issues/kt53422b.fir.kt b/compiler/testData/diagnostics/tests/builderInference/issues/kt53422b.fir.kt index 9bb5ea3bec9..95f06b77c28 100644 --- a/compiler/testData/diagnostics/tests/builderInference/issues/kt53422b.fir.kt +++ b/compiler/testData/diagnostics/tests/builderInference/issues/kt53422b.fir.kt @@ -3,13 +3,13 @@ fun test() { val buildee = stepByStepBuild( - { + { it.concreteTypeMemberProperty TargetType() - }, - { + }, + { consumeTargetTypeBase(it) - } + } ) // exact type equality check — turns unexpected compile-time behavior into red code // considered to be non-user-reproducible code for the purposes of these tests diff --git a/compiler/testData/diagnostics/tests/builderInference/issues/kt53553.fir.kt b/compiler/testData/diagnostics/tests/builderInference/issues/kt53553.fir.kt index f2d55b52d46..a4450b19d45 100644 --- a/compiler/testData/diagnostics/tests/builderInference/issues/kt53553.fir.kt +++ b/compiler/testData/diagnostics/tests/builderInference/issues/kt53553.fir.kt @@ -2,17 +2,17 @@ // CHECK_TYPE_WITH_EXACT fun test() { - val buildee = parallelBuild( - { + val buildee = parallelBuild( + { consumeTargetTypeBase(it) - }, - { + }, + { consumeTargetType(it) - } + } ) // exact type equality check — turns unexpected compile-time behavior into red code // considered to be non-user-reproducible code for the purposes of these tests - checkExactType<Buildee>(buildee) + checkExactType>(buildee) } diff --git a/compiler/testData/diagnostics/tests/builderInference/issues/kt53740a.fir.kt b/compiler/testData/diagnostics/tests/builderInference/issues/kt53740a.fir.kt index cf85883fd7b..60029a4ec69 100644 --- a/compiler/testData/diagnostics/tests/builderInference/issues/kt53740a.fir.kt +++ b/compiler/testData/diagnostics/tests/builderInference/issues/kt53740a.fir.kt @@ -3,12 +3,12 @@ fun test() { val buildee = parallelBuild( - { + { setTypeVariable(TargetType()) - }, - { + }, + { consumeDifferentType(getTypeVariable()) - } + } ) // exact type equality check — turns unexpected compile-time behavior into red code // considered to be non-user-reproducible code for the purposes of these tests diff --git a/compiler/testData/diagnostics/tests/builderInference/issues/kt53740b.fir.kt b/compiler/testData/diagnostics/tests/builderInference/issues/kt53740b.fir.kt index 32ff8693462..7f12240c3ea 100644 --- a/compiler/testData/diagnostics/tests/builderInference/issues/kt53740b.fir.kt +++ b/compiler/testData/diagnostics/tests/builderInference/issues/kt53740b.fir.kt @@ -3,12 +3,12 @@ fun test() { val buildee = parallelInOutBuild( - { + { setInProjectedTypeVariable(TargetType()) - }, - { + }, + { consumeDifferentType(getOutProjectedTypeVariable()) - } + } ) // exact type equality check — turns unexpected compile-time behavior into red code // considered to be non-user-reproducible code for the purposes of these tests diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.fir.kt new file mode 100644 index 00000000000..3fa5efa07a2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.fir.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-64876 +class Controller + +fun generate1(lambda: T1.(Controller) -> Unit): T1 = TODO() +fun generate2(lambda: Controller.(T2) -> Unit): T2 = TODO() + +fun consume(f: Controller) {} +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 +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt b/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt new file mode 100644 index 00000000000..993d10a5693 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-64876 +class Controller + +fun generate1(lambda: T1.(Controller) -> Unit): T1 = TODO() +fun generate2(lambda: Controller.(T2) -> Unit): T2 = TODO() + +fun consume(f: Controller) {} +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 +} diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.fir.kt index 1d41ff90ca3..d59cb8e23d2 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/kt53422.fir.kt @@ -3,7 +3,7 @@ fun test() { foo( flow { emit(0) } - ) { it.collect {} } + ) { it.collect {} } // 0. Initial // W <: Any / declared upper bound diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestriction.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestriction.fir.kt index da7153484b7..0e03ee7300b 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestriction.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestriction.fir.kt @@ -11,7 +11,7 @@ fun test1() { a { this.get(0).extension() use(this.get(0)::extension) - use(it::extension) + use(it::extension) } } @@ -21,7 +21,7 @@ fun test2() { val v = this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } @@ -31,7 +31,7 @@ fun test3() { val v by this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } @@ -44,7 +44,7 @@ fun test4() { val v by this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } diff --git a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestrictionDisabled.fir.kt b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestrictionDisabled.fir.kt index 3263834cbf7..fead69570bd 100644 --- a/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestrictionDisabled.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/builderInference/stubTypes/stubTypeReceiverRestrictionDisabled.fir.kt @@ -12,7 +12,7 @@ fun test1() { a { this.get(0).extension() use(this.get(0)::extension) - use(it::extension) + use(it::extension) } } @@ -22,7 +22,7 @@ fun test2() { val v = this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } @@ -32,7 +32,7 @@ fun test3() { val v by this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } @@ -45,7 +45,7 @@ fun test4() { val v by this.get(0) v.extension() use(v::extension) - use(it::extension) + use(it::extension) } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/withUninferredParameter.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/withUninferredParameter.kt index 1be88875782..a7786dd3c07 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/withUninferredParameter.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/withUninferredParameter.kt @@ -8,9 +8,9 @@ class GenericController { fun generate(g: suspend GenericController.(S) -> Unit): S = TODO() -val test1 = generate { +val test1 = generate { yield(4) -} +} val test2 = generate { yield(4) diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index fc95579b56d..a2a819b40ba 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -17199,6 +17199,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothOuterAndProperConstraints.kt"); } + @Test + @TestMetadata("bothReceiverAndValueParameterNotFixed.kt") + public void testBothReceiverAndValueParameterNotFixed() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/builderInference/bothReceiverAndValueParameterNotFixed.kt"); + } + @Test @TestMetadata("builderInferenceAnnotationInLambdaWithTVExpectedType.kt") public void testBuilderInferenceAnnotationInLambdaWithTVExpectedType() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java index cf21ac26495..553ae3fa4f2 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java @@ -2755,6 +2755,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index e8cba943b65..e867741f0ce 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -2575,6 +2575,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 9c3df28401a..3475620b151 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -2755,6 +2755,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index c243ecfc28b..04451653140 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -2755,6 +2755,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 1b68ccad2d1..28901c22156 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -2403,6 +2403,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { runTest("compiler/testData/codegen/box/builderInference/receiverUsesOuterTVButReturnTypeIsProper.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 2752a3ff5a5..f31159868c6 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -1861,6 +1861,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java index af9fbe9837a..993ad5e93d2 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java @@ -1861,6 +1861,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index 604298c6a65..11de0a41393 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -1861,6 +1861,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index cdc288bccbf..07702f1d6fa 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -1861,6 +1861,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java index 88e3d5012a2..b0c311f519c 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java @@ -1920,6 +1920,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java index 89b431eab65..b9d00540f30 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java @@ -1966,6 +1966,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java index 648dad7e54d..8a529fa4986 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java @@ -1874,6 +1874,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java index 2fadc56e96e..2c016942cd8 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java @@ -1921,6 +1921,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java index ca481ca3494..9af3d22a4e9 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java @@ -1849,6 +1849,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java index dc3cefa2c7e..27cb31b4c63 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java @@ -1849,6 +1849,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/builderInference"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true); } + @Test + @TestMetadata("lambdaParameterHasTVType.kt") + public void testLambdaParameterHasTVType() throws Exception { + runTest("compiler/testData/codegen/box/builderInference/lambdaParameterHasTVType.kt"); + } + @Test @TestMetadata("receiverUsesOuterTVButReturnTypeIsProper.kt") public void testReceiverUsesOuterTVButReturnTypeIsProper() throws Exception {