diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt index 0c0498ca928..8985a949a7c 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt @@ -1507,14 +1507,15 @@ class DeclarationsConverter( val functionSymbol: FirFunctionSymbol<*> val isAnonymousFunction = identifier == null && isLocal val functionBuilder = if (isAnonymousFunction) { - val labelName = functionDeclaration.getLabelName() ?: context.calleeNamesForLambda.lastOrNull()?.identifier - target = FirFunctionTarget(labelName = labelName, isLambda = false) functionSymbol = FirAnonymousFunctionSymbol() FirAnonymousFunctionBuilder().apply { source = functionSource receiverTypeRef = receiverType symbol = functionSymbol isLambda = false + label = context.getLastLabel(functionDeclaration) + val labelName = label?.name ?: context.calleeNamesForLambda.lastOrNull()?.identifier + target = FirFunctionTarget(labelName = labelName, isLambda = false) } } else { val functionName = identifier.nameAsSafeName() diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 2b9a671a4be..08decde77b4 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -1174,7 +1174,8 @@ open class RawFirBuilder( receiverTypeRef = receiverType symbol = FirAnonymousFunctionSymbol() isLambda = false - labelName = function.getLabelName() ?: context.calleeNamesForLambda.lastOrNull()?.identifier + label = context.getLastLabel(function) + labelName = label?.name ?: context.calleeNamesForLambda.lastOrNull()?.identifier } } else { FirSimpleFunctionBuilder().apply { diff --git a/compiler/testData/diagnostics/tests/labels/labeledFunctionLiteral.fir.kt b/compiler/testData/diagnostics/tests/labels/labeledFunctionLiteral.fir.kt index 8f3c8be28da..4857a8e49d9 100644 --- a/compiler/testData/diagnostics/tests/labels/labeledFunctionLiteral.fir.kt +++ b/compiler/testData/diagnostics/tests/labels/labeledFunctionLiteral.fir.kt @@ -1,17 +1,17 @@ // !DIAGNOSTICS: -UNUSED_VARIABLE val funLit = lambda@ fun String.() { - val d1 = this@lambda + val d1 = this@lambda } fun test() { - val funLit = lambda@ fun String.(): String { - return this@lambda + val funLit = lambda@ fun String.(): String { + return this@lambda } } fun lambda() { - val funLit = lambda@ fun String.(): String { - return this@lambda + val funLit = lambda@ fun String.(): String { + return this@lambda } }