Skip to content

Commit 2bd017e

Browse files
committed
Partially fix mangling of internal functions
The other part is passing the right module names for dependencies.
1 parent 6ed123e commit 2bd017e

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/ResolverAAImpl.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -522,9 +522,7 @@ class ResolverAAImpl(
522522
}
523523

524524
val inlineSuffix = symbol?.inlineSuffix ?: ""
525-
val mangledName = if (accessor.modifiers.contains(Modifier.INTERNAL)) {
526-
"\$${ktModule.name}"
527-
} else ""
525+
val mangledName = symbol?.internalSuffix ?: ""
528526
return "${prefix}${accessor.receiver.simpleName.asString().capitalize()}$inlineSuffix$mangledName"
529527
}
530528

@@ -548,9 +546,7 @@ class ResolverAAImpl(
548546
}
549547

550548
val inlineSuffix = symbol?.inlineSuffix ?: ""
551-
val mangledName = if (declaration.modifiers.contains(Modifier.INTERNAL)) {
552-
"\$${ktModule.name}"
553-
} else ""
549+
val mangledName = symbol?.internalSuffix ?: ""
554550
return declaration.simpleName.asString() + inlineSuffix + mangledName
555551
}
556552

kotlin-analysis-api/src/main/kotlin/com/google/devtools/ksp/impl/symbol/kotlin/util.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ import org.jetbrains.kotlin.analysis.api.impl.base.types.KaBaseStarTypeProjectio
5151
import org.jetbrains.kotlin.analysis.api.impl.base.types.KaBaseTypeArgumentWithVariance
5252
import org.jetbrains.kotlin.analysis.api.platform.lifetime.KotlinAlwaysAccessibleLifetimeToken
5353
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
54+
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
55+
import org.jetbrains.kotlin.analysis.api.projectStructure.KaSourceModule
5456
import org.jetbrains.kotlin.analysis.api.symbols.*
5557
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaDeclarationContainerSymbol
5658
import org.jetbrains.kotlin.analysis.api.types.*
@@ -988,3 +990,29 @@ internal fun KaCallableSymbol.explictJvmName(): String? {
988990
it.classId == jvmNameClassId
989991
}?.arguments?.single()?.expression?.toValue() as? String
990992
}
993+
994+
internal val KaDeclarationSymbol.internalSuffix: String
995+
get() = analyze {
996+
if (visibility != KaSymbolVisibility.INTERNAL)
997+
return@analyze ""
998+
999+
// Skip top level functions and properties
1000+
when (this@internalSuffix) {
1001+
is KaPropertyAccessorSymbol -> {
1002+
if (containingDeclaration?.containingDeclaration == null)
1003+
return@analyze ""
1004+
}
1005+
is KaFunctionSymbol -> {
1006+
if (containingDeclaration == null)
1007+
return@analyze ""
1008+
}
1009+
else -> {}
1010+
}
1011+
1012+
fun String.toSuffix(): String = "\$$this"
1013+
when (val module = containingModule) {
1014+
is KaSourceModule -> module.name.toSuffix()
1015+
is KaLibraryModule -> module.libraryName.toSuffix()
1016+
else -> ""
1017+
}
1018+
}

0 commit comments

Comments
 (0)