diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 40fcf27b604..f660d127c24 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -507,6 +507,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/kt55181.kt"); } + @Test + @TestMetadata("kt55666.kt") + public void testKt55666() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt55666.kt"); + } + @Test @TestMetadata("kt55733.kt") public void testKt55733() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 4fd37333c43..8299dcafca4 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -507,6 +507,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/kt55181.kt"); } + @Test + @TestMetadata("kt55666.kt") + public void testKt55666() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt55666.kt"); + } + @Test @TestMetadata("kt55733.kt") public void testKt55733() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index b5ac3444f3c..f0ffe45317c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -507,6 +507,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/kt55181.kt"); } + @Test + @TestMetadata("kt55666.kt") + public void testKt55666() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt55666.kt"); + } + @Test @TestMetadata("kt55733.kt") public void testKt55733() throws Exception { 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 863d8385886..b506970a797 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 @@ -1676,7 +1676,7 @@ class DeclarationsConverter( } } else { val functionName = identifier.nameAsSafeName() - val labelName = runIf(!functionName.isSpecial) { functionName.identifier } + val labelName = context.getLastLabel(functionDeclaration)?.name ?: runIf(!functionName.isSpecial) { functionName.identifier } target = FirFunctionTarget(labelName, isLambda = false) functionSymbol = FirNamedFunctionSymbol(callableIdForName(functionName)) FirSimpleFunctionBuilder().apply { 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 fd81b57ee5f..4ed44fb6cf8 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 @@ -1435,7 +1435,7 @@ open class RawFirBuilder( FirSimpleFunctionBuilder().apply { receiverParameter = receiverType?.convertToReceiverParameter() name = function.nameAsSafeName - labelName = runIf(!name.isSpecial) { name.identifier } + labelName = context.getLastLabel(function)?.name ?: runIf(!name.isSpecial) { name.identifier } symbol = FirNamedFunctionSymbol(callableIdForName(function.nameAsSafeName)).also { functionSymbol = it } dispatchReceiverType = currentDispatchReceiverType() status = FirDeclarationStatusImpl( diff --git a/compiler/testData/diagnostics/tests/kt55666.kt b/compiler/testData/diagnostics/tests/kt55666.kt new file mode 100644 index 00000000000..1a817f35633 --- /dev/null +++ b/compiler/testData/diagnostics/tests/kt55666.kt @@ -0,0 +1,19 @@ +// FIR_IDENTICAL + +inline fun l2f1(p: () -> Unit) {} + +fun label2simple1() { + l2f1 { return@label2simple1 } + + fun local() { + l2f1 { return@local } + } + + labelLocal@ fun labelledLocal() { + l2f1 { return@labelLocal } + } +} + +fun main() { + label2simple1() +} diff --git a/compiler/testData/diagnostics/tests/kt55666.txt b/compiler/testData/diagnostics/tests/kt55666.txt new file mode 100644 index 00000000000..2b4902ba9b1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/kt55666.txt @@ -0,0 +1,5 @@ +package + +public inline fun l2f1(/*0*/ p: () -> kotlin.Unit): kotlin.Unit +public fun label2simple1(): kotlin.Unit +public fun main(): kotlin.Unit 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 84b681de06f..a522fdc8cbf 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 @@ -507,6 +507,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/kt55181.kt"); } + @Test + @TestMetadata("kt55666.kt") + public void testKt55666() throws Exception { + runTest("compiler/testData/diagnostics/tests/kt55666.kt"); + } + @Test @TestMetadata("kt55733.kt") public void testKt55733() throws Exception {