FIR LC: mangle internal function names

This commit is contained in:
Jinseong Jeon
2022-05-14 22:35:15 -07:00
committed by Ilya Kirillov
parent c79601e616
commit 1fe574f406
7 changed files with 27 additions and 26 deletions
@@ -45,7 +45,7 @@ internal class FirLightAccessorMethodForSymbol(
val defaultName = containingPropertySymbol.name.identifier.let {
if (containingClass.isAnnotationType) it else it.abiName()
}
containingPropertySymbol.computeJvmMethodName(defaultName, accessorSite)
containingPropertySymbol.computeJvmMethodName(defaultName, containingClass, accessorSite)
}
}
@@ -20,6 +20,10 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
internal abstract class FirLightMethod(
@@ -68,7 +72,7 @@ internal abstract class FirLightMethod(
}
}
override val isMangled: Boolean = false
override val isMangled: Boolean = false // TODO: checkIsMangled ?
abstract override fun getTypeParameters(): Array<PsiTypeParameter>
abstract override fun hasTypeParameters(): Boolean
@@ -81,6 +85,7 @@ internal abstract class FirLightMethod(
protected fun <T> T.computeJvmMethodName(
defaultName: String,
containingClass: FirLightClassBase,
annotationUseSiteTarget: AnnotationUseSiteTarget? = null
): String where T : KtAnnotatedSymbol, T : KtSymbolWithVisibility, T : KtCallableSymbol {
getJvmNameFromAnnotation(annotationUseSiteTarget)?.let { return it }
@@ -90,14 +95,10 @@ internal abstract class FirLightMethod(
} ?: this.visibility
if (effectiveVisibilityIfNotInternal != Visibilities.Internal) return defaultName
if (containingClass is KtLightClassForFacade) return defaultName
if (hasPublishedApiAnnotation(annotationUseSiteTarget)) return defaultName
//TODO
// val moduleName = module?.name ?: return defaultName
return defaultName
// if (hasPublishedApiAnnotation(annotationUseSiteTarget)) return defaultName
//
// return KotlinTypeMapper.InternalNameMapper.mangleInternalName(defaultName, moduleName)
val moduleName = (getKtModule(project) as? KtSourceModule)?.moduleName ?: return defaultName
return KotlinTypeMapper.InternalNameMapper.mangleInternalName(defaultName, moduleName)
}
}
@@ -34,7 +34,7 @@ internal class FirLightSimpleMethodForSymbol(
) {
private val _name: String by lazyPub {
functionSymbol.computeJvmMethodName(functionSymbol.name.asString())
functionSymbol.computeJvmMethodName(functionSymbol.name.asString(), containingClass)
}
override fun getName(): String = _name
@@ -26,7 +26,7 @@ public abstract class Base /* Base*/ {
public final void nv();// nv()
public int getX();// getX()
public int getX$main();// getX$main()
public int getY();// getY()
@@ -43,7 +43,7 @@ public final class Derived /* Derived*/ extends Base implements IntfWithProp {
public int abs();// abs()
public int getX();// getX()
public int getX$main();// getX$main()
}
@@ -64,7 +64,7 @@ public abstract class AnotherDerived /* AnotherDerived*/ extends Base {
public abstract void noReturn(@org.jetbrains.annotations.NotNull() java.lang.String);// noReturn(java.lang.String)
public int getX();// getX()
public int getX$main();// getX$main()
public int getY();// getY()
@@ -39,24 +39,24 @@ public class B /* B*/ {
public java.lang.String d;
@org.jetbrains.annotations.NotNull()
public final java.lang.String getA();// getA()
public final java.lang.String getA$main();// getA$main()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getB();// getB()
public final java.lang.String getB$main();// getB$main()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getC();// getC()
public final java.lang.String getC$main();// getC$main()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getD();// getD()
public final java.lang.String getD$main();// getD$main()
protected final void setC(@org.jetbrains.annotations.NotNull() java.lang.String);// setC(java.lang.String)
protected final void setC$main(@org.jetbrains.annotations.NotNull() java.lang.String);// setC$main(java.lang.String)
public B();// .ctor()
public final void setA(@org.jetbrains.annotations.NotNull() java.lang.String);// setA(java.lang.String)
public final void setA$main(@org.jetbrains.annotations.NotNull() java.lang.String);// setA$main(java.lang.String)
public final void setD(@org.jetbrains.annotations.NotNull() java.lang.String);// setD(java.lang.String)
public final void setD$main(@org.jetbrains.annotations.NotNull() java.lang.String);// setD$main(java.lang.String)
}
@@ -102,7 +102,7 @@ public final class Foo /* Foo*/ {
public final java.lang.String getDelegatedProp();// getDelegatedProp()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getInternalVarPrivateSet();// getInternalVarPrivateSet()
public final java.lang.String getInternalVarPrivateSet$main();// getInternalVarPrivateSet$main()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getLazyProp();// getLazyProp()
@@ -111,7 +111,7 @@ public final class Foo /* Foo*/ {
public final java.lang.String getName();// getName()
@org.jetbrains.annotations.NotNull()
public final java.lang.String getStringRepresentation();// getStringRepresentation()
public final java.lang.String getStringRepresentation$main();// getStringRepresentation$main()
@org.jetbrains.annotations.NotNull()
public final kotlin.jvm.functions.Function1<java.lang.Integer, java.lang.Integer> getSum();// getSum()
@@ -163,7 +163,7 @@ public final class Foo /* Foo*/ {
public final int getIntProp(int);// getIntProp(int)
public final int getInternalWithPrivateSet();// getInternalWithPrivateSet()
public final int getInternalWithPrivateSet$main();// getInternalWithPrivateSet$main()
public final void setC(boolean);// setC(boolean)
@@ -187,7 +187,7 @@ public final class Foo /* Foo*/ {
public final void setName(@org.jetbrains.annotations.NotNull() java.lang.String);// setName(java.lang.String)
public final void setStringRepresentation(@org.jetbrains.annotations.NotNull() java.lang.String);// setStringRepresentation(java.lang.String)
public final void setStringRepresentation$main(@org.jetbrains.annotations.NotNull() java.lang.String);// setStringRepresentation$main(java.lang.String)
public final void setSubject(error.NonExistentClass);// setSubject(error.NonExistentClass)
@@ -16,7 +16,7 @@ public final class Foo /* Foo*/ {
public final int bar4();// bar4()
public final void bar2(error.NonExistentClass, error.NonExistentClass);// bar2(error.NonExistentClass, error.NonExistentClass)
public final void bar2$main(error.NonExistentClass, error.NonExistentClass);// bar2$main(error.NonExistentClass, error.NonExistentClass)
public void bar(int, @org.jetbrains.annotations.NotNull() java.lang.Object, @org.jetbrains.annotations.NotNull() Foo);// bar(int, java.lang.Object, Foo)