From 6027c2a9aa9c9afa63fad74da482317809af06a0 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Thu, 5 May 2022 11:36:39 +0200 Subject: [PATCH] [FE] Substitute fixed type variables with inferred stub types Actually, a type variable might be fixed into a stub type. Such stub type should be substituted before sub calls completion ^KT-51988 Fixed --- .../FirBlackBoxCodegenTestGenerated.java | 6 +++ .../inference/FirBuilderInferenceSession.kt | 25 +++++++++---- .../FirDelegatedPropertyInferenceSession.kt | 3 +- .../resolve/inference/FirInferenceSession.kt | 5 ++- .../inference/PostponedArgumentsAnalyzer.kt | 7 ++-- .../resolve/DelegateInferenceSession.kt | 4 +- .../inference/BuilderInferenceSession.kt | 17 ++++++--- .../inference/ConstraintSystemBuilder.kt | 1 + .../model/NewConstraintSystemImpl.kt | 4 ++ .../calls/components/InferenceSession.kt | 5 ++- .../components/PostponedArgumentsAnalyzer.kt | 6 +-- .../box/inference/builderInference/kt51988.kt | 37 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 +++ .../IrBlackBoxCodegenTestGenerated.java | 6 +++ .../LightAnalysisModeTestGenerated.java | 5 +++ .../js/test/JsCodegenBoxTestGenerated.java | 6 +++ .../test/ir/IrJsCodegenBoxTestGenerated.java | 6 +++ .../IrCodegenBoxWasmTestGenerated.java | 5 +++ .../NativeCodegenBoxTestGenerated.java | 6 +++ 19 files changed, 133 insertions(+), 27 deletions(-) create mode 100644 compiler/testData/codegen/box/inference/builderInference/kt51988.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index caefff1ab7b..d541a02254e 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -19480,6 +19480,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt index 32de6c7970c..f15d2f95bd8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirBuilderInferenceSession.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer import org.jetbrains.kotlin.fir.visitors.transformSingle import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.inference.buildAbstractResultingSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode import org.jetbrains.kotlin.resolve.calls.inference.model.* @@ -108,12 +109,14 @@ class FirBuilderInferenceSession( override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode ): Map? { - val (commonSystem, effectivelyEmptyConstraintSystem) = buildCommonSystem(initialStorage) + val (commonSystem, effectivelyEmptyConstraintSystem) = buildCommonSystem(constraintSystemBuilder.currentStorage()) + val resultingSubstitutor by lazy { getResultingSubstitutor(commonSystem) } + if (effectivelyEmptyConstraintSystem) { - updateCalls(commonSystem) + updateCalls(resultingSubstitutor) return null } @@ -129,7 +132,11 @@ class FirBuilderInferenceSession( error("Shouldn't be called in complete constraint system mode") } - updateCalls(commonSystem) + if (completionMode == ConstraintSystemCompletionMode.FULL) { + constraintSystemBuilder.substituteFixedVariables(resultingSubstitutor) + } + + updateCalls(resultingSubstitutor) @Suppress("UNCHECKED_CAST") return commonSystem.fixedTypeVariables as Map @@ -217,16 +224,18 @@ class FirBuilderInferenceSession( return introducedConstraint } - private fun updateCalls(commonSystem: NewConstraintSystemImpl) { + private fun getResultingSubstitutor(commonSystem: NewConstraintSystemImpl): ChainedSubstitutor { val nonFixedToVariablesSubstitutor = createNonFixedTypeToVariableSubstitutor() val commonSystemSubstitutor = commonSystem.buildCurrentSubstitutor() as ConeSubstitutor - val nonFixedTypesToResultSubstitutor = ChainedSubstitutor(nonFixedToVariablesSubstitutor, commonSystemSubstitutor) + return ChainedSubstitutor(nonFixedToVariablesSubstitutor, commonSystemSubstitutor) + } - val stubTypeSubstitutor = FirStubTypeTransformer(nonFixedTypesToResultSubstitutor) + private fun updateCalls(substitutor: ConeSubstitutor) { + val stubTypeSubstitutor = FirStubTypeTransformer(substitutor) lambda.transformSingle(stubTypeSubstitutor, null) // TODO: support diagnostics, see [CoroutineInferenceSession#updateCalls] - val completionResultsWriter = components.callCompleter.createCompletionResultsWriter(nonFixedTypesToResultSubstitutor) + val completionResultsWriter = components.callCompleter.createCompletionResultsWriter(substitutor) for ((call, _) in partiallyResolvedCalls) { call.transformSingle(completionResultsWriter, null) // TODO: support diagnostics, see [CoroutineInferenceSession#updateCalls] diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirDelegatedPropertyInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirDelegatedPropertyInferenceSession.kt index df738f4667d..9b610591c79 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirDelegatedPropertyInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirDelegatedPropertyInferenceSession.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.NotFixedTypeToVariableSubstitutorForDelegateInference import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.inference.NewConstraintSystem import org.jetbrains.kotlin.resolve.calls.inference.buildAbstractResultingSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionContext @@ -108,7 +109,7 @@ class FirDelegatedPropertyInferenceSession( override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode ): Map? = null diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirInferenceSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirInferenceSession.kt index 123b800602a..3e7f83d52f7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirInferenceSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirInferenceSession.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.Candidate import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeStubType import org.jetbrains.kotlin.fir.types.ConeTypeVariableTypeConstructor +import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionContext import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage @@ -41,7 +42,7 @@ abstract class FirInferenceSession { abstract fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, // TODO: diagnostic holder ): Map? @@ -61,7 +62,7 @@ abstract class FirStubInferenceSession : FirInferenceSession() { override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode ): Map? = null diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt index fb637738033..af8f7ec2f82 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt @@ -209,9 +209,8 @@ class PostponedArgumentsAnalyzer( lambda.returnStatements = returnArguments if (inferenceSession != null) { - val storageSnapshot = c.getBuilder().currentStorage() - - val postponedVariables = inferenceSession.inferPostponedVariables(lambda, storageSnapshot, completionMode) + val constraintSystemBuilder = c.getBuilder() + val postponedVariables = inferenceSession.inferPostponedVariables(lambda, constraintSystemBuilder, completionMode) if (postponedVariables == null) { c.getBuilder().removePostponedVariables() @@ -219,7 +218,7 @@ class PostponedArgumentsAnalyzer( } for ((constructor, resultType) in postponedVariables) { - val variableWithConstraints = storageSnapshot.notFixedTypeVariables[constructor] ?: continue + val variableWithConstraints = constraintSystemBuilder.currentStorage().notFixedTypeVariables[constructor] ?: continue val variable = variableWithConstraints.typeVariable as ConeTypeVariable c.getBuilder().unmarkPostponedVariable(variable) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegateInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegateInferenceSession.kt index 9de1ba8adc6..8bad5b7efdb 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegateInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegateInferenceSession.kt @@ -97,7 +97,7 @@ class DelegateInferenceSession( override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, diagnosticsHolder: KotlinDiagnosticsHolder ): Map = emptyMap() @@ -124,7 +124,7 @@ class InferenceSessionForExistingCandidates( override fun currentConstraintSystem(): ConstraintStorage = ConstraintStorage.Empty override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, diagnosticsHolder: KotlinDiagnosticsHolder ): Map = emptyMap() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt index 10d33792b30..66a4c3428c7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/BuilderInferenceSession.kt @@ -233,22 +233,23 @@ class BuilderInferenceSession( override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, diagnosticsHolder: KotlinDiagnosticsHolder, ): Map? { initializeLambda(lambda) - fun getResultingSubstitutor(): NewTypeSubstitutor { + val initialStorage = constraintSystemBuilder.currentStorage() + val resultingSubstitutor by lazy { val storageSubstitutor = initialStorage.buildResultingSubstitutor(commonSystem, transformTypeVariablesToErrorTypes = false) - return ComposedSubstitutor(storageSubstitutor, commonSystem.buildCurrentSubstitutor() as NewTypeSubstitutor) + ComposedSubstitutor(storageSubstitutor, commonSystem.buildCurrentSubstitutor() as NewTypeSubstitutor) } val effectivelyEmptyConstraintSystem = initializeCommonSystem(initialStorage) if (effectivelyEmptyConstraintSystem) { if (isTopLevelBuilderInferenceCall()) { - updateAllCalls(getResultingSubstitutor()) + updateAllCalls(resultingSubstitutor) } return null } @@ -261,8 +262,14 @@ class BuilderInferenceSession( diagnosticsHolder ) + if (completionMode == ConstraintSystemCompletionMode.FULL) { + constraintSystemBuilder.substituteFixedVariables( + ComposedSubstitutor(resultingSubstitutor, createNonFixedTypeToVariableSubstitutor()) + ) + } + if (isTopLevelBuilderInferenceCall()) { - updateAllCalls(getResultingSubstitutor()) + updateAllCalls(resultingSubstitutor) } return commonSystem.fixedTypeVariables.cast() // TODO: SUB diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt index c4d8d76b86a..65cf9bf00cb 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/ConstraintSystemBuilder.kt @@ -18,6 +18,7 @@ interface ConstraintSystemOperation { fun markCouldBeResolvedWithUnrestrictedBuilderInference() fun unmarkPostponedVariable(variable: TypeVariableMarker) fun removePostponedVariables() + fun substituteFixedVariables(substitutor: TypeSubstitutorMarker) fun getBuiltFunctionalExpectedTypeForPostponedArgument( topLevelVariable: TypeConstructorMarker, diff --git a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt index 57e59b077b5..9db294bf6fc 100644 --- a/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt +++ b/compiler/resolution.common/src/org/jetbrains/kotlin/resolve/calls/inference/model/NewConstraintSystemImpl.kt @@ -144,6 +144,10 @@ class NewConstraintSystemImpl( storage.postponedTypeVariables.clear() } + override fun substituteFixedVariables(substitutor: TypeSubstitutorMarker) { + storage.fixedTypeVariables.replaceAll { _, type -> substitutor.safeSubstitute(type) } + } + override fun putBuiltFunctionalExpectedTypeForPostponedArgument( topLevelVariable: TypeConstructorMarker, pathToExpectedType: List>, diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/InferenceSession.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/InferenceSession.kt index dd5ca10bc69..a6c544db841 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/InferenceSession.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/InferenceSession.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.resolve.calls.components import org.jetbrains.kotlin.resolve.calls.components.candidate.ResolutionCandidate +import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintSystemCompletionMode import org.jetbrains.kotlin.resolve.calls.inference.model.ConstraintStorage import org.jetbrains.kotlin.resolve.calls.model.* @@ -26,7 +27,7 @@ interface InferenceSession { override fun currentConstraintSystem(): ConstraintStorage = ConstraintStorage.Empty override fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, diagnosticsHolder: KotlinDiagnosticsHolder ): Map = emptyMap() @@ -51,7 +52,7 @@ interface InferenceSession { fun currentConstraintSystem(): ConstraintStorage fun inferPostponedVariables( lambda: ResolvedLambdaAtom, - initialStorage: ConstraintStorage, + constraintSystemBuilder: ConstraintSystemBuilder, completionMode: ConstraintSystemCompletionMode, diagnosticsHolder: KotlinDiagnosticsHolder ): Map? diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt index b87d9eea64e..b91717121a7 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/PostponedArgumentsAnalyzer.kt @@ -191,11 +191,11 @@ class PostponedArgumentsAnalyzer( || languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceWithoutAnnotation) if (inferenceSession != null && shouldUseBuilderInference) { - val storageSnapshot = c.getBuilder().currentStorage() + val constraintSystemBuilder = c.getBuilder() val postponedVariables = inferenceSession.inferPostponedVariables( lambda, - storageSnapshot, + constraintSystemBuilder, completionMode, diagnosticHolder ) @@ -205,7 +205,7 @@ class PostponedArgumentsAnalyzer( } for ((constructor, resultType) in postponedVariables) { - val variableWithConstraints = storageSnapshot.notFixedTypeVariables[constructor] ?: continue + val variableWithConstraints = constraintSystemBuilder.currentStorage().notFixedTypeVariables[constructor] ?: continue val variable = variableWithConstraints.typeVariable c.getBuilder().unmarkPostponedVariable(variable) diff --git a/compiler/testData/codegen/box/inference/builderInference/kt51988.kt b/compiler/testData/codegen/box/inference/builderInference/kt51988.kt new file mode 100644 index 00000000000..8573e35c0a6 --- /dev/null +++ b/compiler/testData/codegen/box/inference/builderInference/kt51988.kt @@ -0,0 +1,37 @@ +// WITH_STDLIB +// IGNORE_BACKEND_FIR: JVM_IR + +import kotlin.experimental.ExperimentalTypeInference + +@OptIn(ExperimentalTypeInference::class) +fun build(@BuilderInference block: BuilderScope.() -> BB1): ResultProvider = object : ResultProvider { + override fun provideResult(): AB1 = "OK" as AB1 +} + +@OptIn(ExperimentalTypeInference::class) +fun build2(@BuilderInference block: BuilderScope.() -> BB2): ResultProvider = object : ResultProvider { + override fun provideResult(): AB2 = "OK" as AB2 +} + +interface BuilderScope { + fun getResult(result: ResultProvider): B1 + fun getResult2(result: ResultProvider): B2 +} + +interface ResultProvider { + fun provideResult(): AR +} + +val resultProvider: ResultProvider = object : ResultProvider { + override fun provideResult(): Any = "NOK" +} + +val result = build { + getResult(build2 { + getResult2(resultProvider) + }) +} + +fun box(): String { + return result.provideResult().toString() +} 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 e7c7caa81aa..26cfa8508e7 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 @@ -19048,6 +19048,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() 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 c199b37930e..e0b54d0a210 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 @@ -19480,6 +19480,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() 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 43a4c8b26f5..5ae34cd24db 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -15843,6 +15843,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { runTest("compiler/testData/codegen/box/inference/builderInference/labaledCall.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index c8d1e138700..1050023464e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -14826,6 +14826,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() 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 5249e2ff776..5cb9450d2b2 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 @@ -14790,6 +14790,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 796894ed1f8..ef796a4694c 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -13158,6 +13158,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception { runTest("compiler/testData/codegen/box/inference/builderInference/labaledCall.kt"); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 831b9499701..ef6fd22f7be 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -15900,6 +15900,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/inference/builderInference/kt49887.kt"); } + @Test + @TestMetadata("kt51988.kt") + public void testKt51988() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderInference/kt51988.kt"); + } + @Test @TestMetadata("labaledCall.kt") public void testLabaledCall() throws Exception {