Skip to content

Commit 6ed123e

Browse files
committed
Handle explicit JvmName
1 parent 207b849 commit 6ed123e

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

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

+22-7
Original file line numberDiff line numberDiff line change
@@ -505,15 +505,23 @@ class ResolverAAImpl(
505505
if (accessor.receiver.closestClassDeclaration()?.classKind == ClassKind.ANNOTATION_CLASS) {
506506
return accessor.receiver.simpleName.asString()
507507
}
508+
509+
val symbol: KaPropertyAccessorSymbol? = when (accessor) {
510+
is KSPropertyAccessorImpl -> accessor.ktPropertyAccessorSymbol
511+
else -> null
512+
}
513+
514+
symbol?.explictJvmName()?.let {
515+
return it
516+
}
517+
508518
val prefix = if (accessor is KSPropertyGetter) {
509519
"get"
510520
} else {
511521
"set"
512522
}
513-
val inlineSuffix = when (accessor) {
514-
is KSPropertyAccessorImpl -> accessor.ktPropertyAccessorSymbol.inlineSuffix
515-
else -> ""
516-
}
523+
524+
val inlineSuffix = symbol?.inlineSuffix ?: ""
517525
val mangledName = if (accessor.modifiers.contains(Modifier.INTERNAL)) {
518526
"\$${ktModule.name}"
519527
} else ""
@@ -529,10 +537,17 @@ class ResolverAAImpl(
529537
}?.let {
530538
return it.name
531539
}
532-
val inlineSuffix = when (declaration) {
533-
is KSFunctionDeclarationImpl -> declaration.ktFunctionSymbol.inlineSuffix
534-
else -> ""
540+
541+
val symbol: KaFunctionSymbol? = when (declaration) {
542+
is KSFunctionDeclarationImpl -> declaration.ktFunctionSymbol
543+
else -> null
544+
}
545+
546+
symbol?.explictJvmName()?.let {
547+
return it
535548
}
549+
550+
val inlineSuffix = symbol?.inlineSuffix ?: ""
536551
val mangledName = if (declaration.modifiers.contains(Modifier.INTERNAL)) {
537552
"\$${ktModule.name}"
538553
} else ""

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

+11-2
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ internal val KaFunctionSymbol.inlineSuffix: String
965965
valueParameters.map { it.returnType },
966966
returnType,
967967
analyze {
968-
returnType.requiresMangling() && isKotlin && this@inlineSuffix.containingSymbol is KaClassSymbol
968+
returnType.requiresMangling() && isKotlin && containingDeclaration != null
969969
}
970970
)
971971

@@ -975,7 +975,16 @@ internal val KaPropertyAccessorSymbol.inlineSuffix: String
975975
mangleInlineSuffix(
976976
emptyList(),
977977
returnType,
978-
returnType.requiresMangling() && isKotlin
978+
analyze {
979+
returnType.requiresMangling() && isKotlin && containingDeclaration?.containingDeclaration != null
980+
}
979981
)
980982
is KaPropertySetterSymbol -> mangleInlineSuffix(listOf(parameter.returnType), null, false)
981983
}
984+
985+
private val jvmNameClassId = ClassId.fromString("kotlin/jvm/JvmName")
986+
internal fun KaCallableSymbol.explictJvmName(): String? {
987+
return annotations.singleOrNull() {
988+
it.classId == jvmNameClassId
989+
}?.arguments?.single()?.expression?.toValue() as? String
990+
}

0 commit comments

Comments
 (0)