From 3dda88ddc25455b940e177c3166c89b2623c4cd6 Mon Sep 17 00:00:00 2001 From: "vladislav.grechko" Date: Fri, 16 Feb 2024 18:10:59 +0100 Subject: [PATCH] [FIR] Handle `FirErrorExpression` when resolving arguments ^KT-65787: Fixed --- .../org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt | 8 ++++++++ .../diagnostics/tests/labels/multipleLabels.fir.kt | 8 ++++++++ .../testData/diagnostics/tests/labels/multipleLabels.kt | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt index 16b01567e75..f2d30b176a7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Arguments.kt @@ -124,6 +124,14 @@ fun Candidate.resolveArgumentExpression( isReceiver, isDispatch ) + is FirErrorExpression -> { + val wrappedExpression = argument.expression + if (wrappedExpression != null) { + resolveArgumentExpression(csBuilder, wrappedExpression, expectedType, sink, context, isReceiver, isDispatch) + } else { + resolvePlainExpressionArgument(csBuilder, argument, expectedType, sink, context, isReceiver, isDispatch) + } + } else -> resolvePlainExpressionArgument(csBuilder, argument, expectedType, sink, context, isReceiver, isDispatch) } } diff --git a/compiler/testData/diagnostics/tests/labels/multipleLabels.fir.kt b/compiler/testData/diagnostics/tests/labels/multipleLabels.fir.kt index 957ec9df94e..46cf6b8ea2a 100644 --- a/compiler/testData/diagnostics/tests/labels/multipleLabels.fir.kt +++ b/compiler/testData/diagnostics/tests/labels/multipleLabels.fir.kt @@ -35,3 +35,11 @@ fun foo6() { fun foo7() { l3@ l2@ l1@ fun bar() {} } + +fun func(y: (Unit) -> Unit) {} + +fun foo8() { + func(l@ {}) + func(l2@ l1@ {}) + func(_@ {}) +} diff --git a/compiler/testData/diagnostics/tests/labels/multipleLabels.kt b/compiler/testData/diagnostics/tests/labels/multipleLabels.kt index 7f6a3cb4a47..339e2693148 100644 --- a/compiler/testData/diagnostics/tests/labels/multipleLabels.kt +++ b/compiler/testData/diagnostics/tests/labels/multipleLabels.kt @@ -35,3 +35,11 @@ fun foo6() { fun foo7() { l3@ l2@ l1@ fun bar() {} } + +fun func(y: (Unit) -> Unit) {} + +fun foo8() { + func(l@ {}) + func(l2@ l1@ {}) + func(_@ {}) +}