[light classes] replace light class dependency from analysis.decompiled.light-classes-for-decompiled to light-classes-base

^KT-53097
This commit is contained in:
Dmitry Gridin
2022-07-11 18:20:29 +02:00
committed by Space
parent 35258da509
commit 2ff1c21c8c
3 changed files with 8 additions and 3 deletions
@@ -6,7 +6,7 @@ plugins {
dependencies {
api(project(":compiler:psi"))
api(project(":analysis:decompiled:decompiler-to-psi"))
api(project(":compiler:light-classes"))
api(project(":compiler:light-classes-base"))
implementation(intellijCore())
}
@@ -12,11 +12,11 @@ import com.intellij.psi.util.MethodSignature
import com.intellij.psi.util.MethodSignatureBackedByPsiMethod
import org.jetbrains.kotlin.analysis.decompiled.light.classes.origin.LightMemberOriginForCompiledMethod
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.demangleInternalName
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
import org.jetbrains.kotlin.asJava.elements.KtLightMember
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.propertyNameByAccessor
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
import org.jetbrains.kotlin.psi.KtDeclaration
class KtLightMethodForDecompiledDeclaration(
@@ -104,7 +104,7 @@ class KtLightMethodForDecompiledDeclaration(
}
private fun KtLightMethod.checkIsMangled(): Boolean {
val demangledName = KotlinTypeMapper.InternalNameMapper.demangleInternalName(name) ?: return false
val demangledName = demangleInternalName(name) ?: return false
val originalName = propertyNameByAccessor(demangledName, this) ?: demangledName
return originalName == kotlinOrigin?.name
}
@@ -191,6 +191,11 @@ private fun PsiAnnotation.withNestedAnnotations(): Sequence<PsiAnnotation> {
return sequenceOf(this) + parameterList.attributes.asSequence().flatMap { handleValue(it.value) }
}
fun demangleInternalName(name: String): String? {
val indexOfDollar = name.indexOf('$')
return if (indexOfDollar >= 0) name.substring(0, indexOfDollar) else null
}
fun propertyNameByAccessor(name: String, accessor: KtLightMethod): String? {
val toRename = accessor.kotlinOrigin ?: return null
if (toRename !is KtProperty && toRename !is KtParameter) return null