From 3c982cfaa34f409efc280184aafad5878aaf63d6 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Sat, 25 Mar 2023 22:22:33 -0700 Subject: [PATCH] SLC: mangle internal setter name --- .../methods/SymbolLightAccessorMethod.kt | 14 ++- .../symbol/methods/SymbolLightMethodBase.kt | 2 + .../lightClassByPsi/lateinitProperty.fir.java | 90 ------------------- 3 files changed, 12 insertions(+), 94 deletions(-) delete mode 100644 compiler/testData/asJava/lightClasses/lightClassByPsi/lateinitProperty.fir.java 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 b8ca0617505..043680c2c68 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 @@ -91,13 +91,19 @@ internal class SymbolLightAccessorMethod private constructor( private val _name: String by lazyPub { analyzeForLightClasses(ktModule) { - propertyAccessorSymbol().getJvmNameFromAnnotation(accessorSite.toOptionalFilter()) ?: run { - val symbol = propertySymbol() - val defaultName = symbol.name.identifier.let { + val accessorSymbol = propertyAccessorSymbol() + accessorSymbol.getJvmNameFromAnnotation(accessorSite.toOptionalFilter()) ?: run { + val propertySymbol = propertySymbol() + val defaultName = propertySymbol.name.identifier.let { if (this@SymbolLightAccessorMethod.containingClass.isAnnotationType) it else it.abiName() } - symbol.computeJvmMethodName(defaultName, this@SymbolLightAccessorMethod.containingClass, accessorSite) + val visibility = if (!isGetter && propertySymbol.canHaveNonPrivateField) + accessorSymbol.visibility + else + propertySymbol.visibility + + propertySymbol.computeJvmMethodName(defaultName, this@SymbolLightAccessorMethod.containingClass, accessorSite, visibility) } } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt index 01c858a50f7..1315b0f552d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.mangleInternalName import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.light.classes.symbol.SymbolLightMemberBase import org.jetbrains.kotlin.light.classes.symbol.annotations.getJvmNameFromAnnotation @@ -108,6 +109,7 @@ internal abstract class SymbolLightMethodBase( defaultName: String, containingClass: SymbolLightClassBase, annotationUseSiteTarget: AnnotationUseSiteTarget? = null, + visibility: Visibility = this.visibility, ): String where T : KtAnnotatedSymbol, T : KtSymbolWithVisibility, T : KtCallableSymbol { getJvmNameFromAnnotation(annotationUseSiteTarget.toOptionalFilter())?.let { return it } diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/lateinitProperty.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/lateinitProperty.fir.java deleted file mode 100644 index 97c9ea86480..00000000000 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/lateinitProperty.fir.java +++ /dev/null @@ -1,90 +0,0 @@ -public class A /* A*/ { - private java.lang.String b; - - protected java.lang.String c; - - public java.lang.String a; - - public java.lang.String d; - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getA();// getA() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getB();// getB() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getC();// getC() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getD();// getD() - - protected final void setC(@org.jetbrains.annotations.NotNull() java.lang.String);// setC(java.lang.String) - - public A();// .ctor() - - public final void setA(@org.jetbrains.annotations.NotNull() java.lang.String);// setA(java.lang.String) - - public final void setD(@org.jetbrains.annotations.NotNull() java.lang.String);// setD(java.lang.String) -} - -public class B /* B*/ { - private java.lang.String b; - - protected java.lang.String c; - - public java.lang.String a; - - public java.lang.String d; - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getA$light_idea_test_case();// getA$light_idea_test_case() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getB$light_idea_test_case();// getB$light_idea_test_case() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getC$light_idea_test_case();// getC$light_idea_test_case() - - @org.jetbrains.annotations.NotNull() - public final java.lang.String getD$light_idea_test_case();// getD$light_idea_test_case() - - protected final void setC$light_idea_test_case(@org.jetbrains.annotations.NotNull() java.lang.String);// setC$light_idea_test_case(java.lang.String) - - public B();// .ctor() - - public final void setA$light_idea_test_case(@org.jetbrains.annotations.NotNull() java.lang.String);// setA$light_idea_test_case(java.lang.String) - - public final void setD$light_idea_test_case(@org.jetbrains.annotations.NotNull() java.lang.String);// setD$light_idea_test_case(java.lang.String) -} - -public class C /* C*/ { - private java.lang.String b; - - protected java.lang.String a; - - protected java.lang.String c; - - @org.jetbrains.annotations.NotNull() - protected final java.lang.String getA();// getA() - - @org.jetbrains.annotations.NotNull() - protected final java.lang.String getB();// getB() - - @org.jetbrains.annotations.NotNull() - protected final java.lang.String getC();// getC() - - protected final void setA(@org.jetbrains.annotations.NotNull() java.lang.String);// setA(java.lang.String) - - protected final void setC(@org.jetbrains.annotations.NotNull() java.lang.String);// setC(java.lang.String) - - public C();// .ctor() -} - -public class D /* D*/ { - private java.lang.String a; - - private java.lang.String b; - - public D();// .ctor() -}