From 44388ea15f2f67065216dc2affce0a08ad12a89e Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 4 Jan 2024 15:29:04 +0100 Subject: [PATCH] [SLC] generate correct name for property assessors in case of JvmRecord ^KT-62357 Fixed --- .../symbol/methods/SymbolLightAccessorMethod.kt | 10 +++++++--- .../asJava/lightClasses/lightClassByPsi/jvmRecord.java | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index 1c02450cd98..afe24ea20c2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -95,8 +95,12 @@ internal class SymbolLightAccessorMethod private constructor( withPropertySymbol { propertySymbol -> val accessorSymbol = propertySymbol.accessorSymbol accessorSymbol.getJvmNameFromAnnotation(accessorSite.toOptionalFilter()) ?: run { + val outerClass = this@SymbolLightAccessorMethod.containingClass val defaultName = propertySymbol.name.identifier.let { - if (this@SymbolLightAccessorMethod.containingClass.isAnnotationType) it else it.abiName() + if (outerClass.isAnnotationType || outerClass.isRecord) + it + else + it.abiName() } val visibility = if (!isGetter && propertySymbol.canHaveNonPrivateField) @@ -104,7 +108,7 @@ internal class SymbolLightAccessorMethod private constructor( else propertySymbol.visibility - propertySymbol.computeJvmMethodName(defaultName, this@SymbolLightAccessorMethod.containingClass, accessorSite, visibility) + propertySymbol.computeJvmMethodName(defaultName, outerClass, accessorSite, visibility) } } } diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/jvmRecord.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/jvmRecord.java index aa8abbdcfbd..0e8d75eb4c9 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/jvmRecord.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/jvmRecord.java @@ -7,7 +7,7 @@ public final class MyRec /* pkg.MyRec*/ { public final java.lang.String component1();// component1() @org.jetbrains.annotations.NotNull() - public final java.lang.String getName();// getName() + public final java.lang.String name();// name() @org.jetbrains.annotations.NotNull() public final pkg.MyRec copy(@org.jetbrains.annotations.NotNull() java.lang.String);// copy(java.lang.String)