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 1da572afa0b..7bd62468f9a 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 @@ -19871,6 +19871,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inference/approximateNonTopLevelCapturedTypes.kt"); } + @Test + @TestMetadata("builderAndDelegateInference.kt") + public void testBuilderAndDelegateInference() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderAndDelegateInference.kt"); + } + @Test @TestMetadata("builderInference.kt") public void testBuilderInference() throws Exception { 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 a0dd3e06f54..1e165e4041e 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 @@ -116,6 +116,11 @@ class PostponedArgumentsAnalyzer( completionMode: ConstraintSystemCompletionMode, //diagnosticHolder: KotlinDiagnosticsHolder ): ReturnArgumentsAnalysisResult { + // TODO: replace with `require(!lambda.analyzed)` when KT-54767 will be fixed + if (lambda.analyzed) { + return ReturnArgumentsAnalysisResult(lambda.returnStatements, inferenceSession = null) + } + val unitType = components.session.builtinTypes.unitType.type val stubsForPostponedVariables = c.bindingStubsForPostponedVariables() val currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) }) diff --git a/compiler/testData/codegen/box/inference/builderAndDelegateInference.kt b/compiler/testData/codegen/box/inference/builderAndDelegateInference.kt new file mode 100644 index 00000000000..1ded9f3028f --- /dev/null +++ b/compiler/testData/codegen/box/inference/builderAndDelegateInference.kt @@ -0,0 +1,18 @@ +// TARGET_BACKEND: JVM_IR +// WITH_STDLIB +// ISSUE: KT-54767 + +interface A { + fun getCallableNames(): Set +} + +class B(val declared: A, val supers: List) { + private val callableNamesCached by lazy(LazyThreadSafetyMode.PUBLICATION) { + buildSet { + addAll(declared.getCallableNames()) + supers.flatMapTo(this) { it.getCallableNames() } + } + } +} + +fun box() = "OK" 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 01ff842724b..75bc16a75fc 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 @@ -19871,6 +19871,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inference/approximateNonTopLevelCapturedTypes.kt"); } + @Test + @TestMetadata("builderAndDelegateInference.kt") + public void testBuilderAndDelegateInference() throws Exception { + runTest("compiler/testData/codegen/box/inference/builderAndDelegateInference.kt"); + } + @Test @TestMetadata("builderInference.kt") public void testBuilderInference() throws Exception {