From 2ff1c21c8c3223aac01277f661a1aef022cd99cf Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Mon, 11 Jul 2022 18:20:29 +0200 Subject: [PATCH] [light classes] replace light class dependency from analysis.decompiled.light-classes-for-decompiled to light-classes-base ^KT-53097 --- .../decompiled/light-classes-for-decompiled/build.gradle.kts | 2 +- .../light/classes/KtLightMethodForDecompiledDeclaration.kt | 4 ++-- .../src/org/jetbrains/kotlin/asJava/lightClassUtils.kt | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/analysis/decompiled/light-classes-for-decompiled/build.gradle.kts b/analysis/decompiled/light-classes-for-decompiled/build.gradle.kts index 6a376e39fc1..a0acdbc4053 100644 --- a/analysis/decompiled/light-classes-for-decompiled/build.gradle.kts +++ b/analysis/decompiled/light-classes-for-decompiled/build.gradle.kts @@ -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()) } diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt index a493b1efd96..6109bcd1e31 100644 --- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt +++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt @@ -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 } \ No newline at end of file diff --git a/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index e0616f7778a..09dd2016a39 100644 --- a/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -191,6 +191,11 @@ private fun PsiAnnotation.withNestedAnnotations(): Sequence { 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