From 06a7ca557123bbe95305f635f576275513ff5827 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 30 Sep 2015 22:44:38 +0300 Subject: [PATCH] Minor, use existing utility for getting implClassName --- .../jetbrains/kotlin/codegen/state/JetTypeMapper.java | 5 +---- .../kotlin/load/kotlin/PackagePartClassUtils.kt | 10 ---------- .../navigation/DecompiledNavigationUtils.java | 11 +++-------- .../PositionManagerLibraryClassFileSearcher.kt | 9 ++++----- .../textBuilder/DecompiledTextConsistencyTest.kt | 7 +++---- 5 files changed, 11 insertions(+), 31 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java index e3f94469693..28d3df6a727 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/JetTypeMapper.java @@ -64,8 +64,6 @@ import org.jetbrains.kotlin.resolve.scopes.AbstractScopeAdapter; import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.serialization.deserialization.DeserializedType; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor; -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor; -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf; import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.expressions.OperatorConventions; import org.jetbrains.org.objectweb.asm.Type; @@ -272,9 +270,8 @@ public class JetTypeMapper { return new ContainingClassesInfo(builtinsFacadeClassId, builtinsFacadeClassId); } - assert descriptor.getProto().hasExtension(JvmProtoBuf.implClassName) - : "No implClassName for " + descriptor; Name implClassName = JvmFileClassUtil.getImplClassName(descriptor); + assert implClassName != null : "No implClassName for " + descriptor; String implSimpleName = implClassName.asString(); String facadeSimpleName; diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/PackagePartClassUtils.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/PackagePartClassUtils.kt index 3aa3d481038..9891b3f76b7 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/PackagePartClassUtils.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/PackagePartClassUtils.kt @@ -19,15 +19,12 @@ package org.jetbrains.kotlin.load.kotlin import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.annotations.TestOnly -import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetNamedFunction import org.jetbrains.kotlin.psi.JetProperty import org.jetbrains.kotlin.resolve.jvm.JvmClassName -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import java.util.* public object PackagePartClassUtils { @@ -75,13 +72,6 @@ public object PackagePartClassUtils { public fun getPackagePartFqName(file: JetFile): FqName = getPackagePartFqName(file.packageFqName, file.name) - @JvmStatic - public fun getPackagePartFqName(callable: DeserializedCallableMemberDescriptor): FqName { - val implClassName = callable.nameResolver.getName(callable.proto.getExtension(JvmProtoBuf.implClassName)) - val packageFqName = (callable.containingDeclaration as PackageFragmentDescriptor).fqName - return packageFqName.child(implClassName) - } - @JvmStatic public fun getFilesWithCallables(files: Collection): List = files.filter { fileHasTopLevelCallables(it) } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/DecompiledNavigationUtils.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/DecompiledNavigationUtils.java index 30c5a4e2c90..76dfc5abee8 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/DecompiledNavigationUtils.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/DecompiledNavigationUtils.java @@ -24,6 +24,7 @@ import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.*; +import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; import org.jetbrains.kotlin.idea.decompiler.KotlinClsFileBase; import org.jetbrains.kotlin.idea.stubindex.JetSourceFilterScope; import org.jetbrains.kotlin.idea.stubindex.StaticFacadeIndexUtil; @@ -37,11 +38,8 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.JetDeclaration; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.resolve.DescriptorUtils; -import org.jetbrains.kotlin.serialization.ProtoBuf; -import org.jetbrains.kotlin.serialization.deserialization.NameResolver; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor; import org.jetbrains.kotlin.serialization.js.KotlinJavascriptPackageFragment; -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf; import org.jetbrains.kotlin.types.ErrorUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; @@ -129,11 +127,8 @@ public final class DecompiledNavigationUtils { FqName packageFQN = ((PackageFragmentDescriptor) containerDescriptor).getFqName(); if (referencedDescriptor instanceof DeserializedCallableMemberDescriptor) { - DeserializedCallableMemberDescriptor deserializedDescriptor = (DeserializedCallableMemberDescriptor) referencedDescriptor; - ProtoBuf.Callable proto = deserializedDescriptor.getProto(); - NameResolver nameResolver = deserializedDescriptor.getNameResolver(); - if (proto.hasExtension(JvmProtoBuf.implClassName)) { - Name partClassName = nameResolver.getName(proto.getExtension(JvmProtoBuf.implClassName)); + Name partClassName = JvmFileClassUtil.getImplClassName((DeserializedCallableMemberDescriptor) referencedDescriptor); + if (partClassName != null) { FqName partFQN = packageFQN.child(partClassName); Collection multifileFacadeJetFiles = StaticFacadeIndexUtil.getMultifileClassForPart(partFQN, GlobalSearchScope.allScope(project), project); diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt index a5f1b298061..37b37d4cff8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/PositionManagerLibraryClassFileSearcher.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils @@ -37,7 +38,6 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf private val LOG = Logger.getInstance("org.jetbrains.kotlin.idea.debugger") @@ -80,10 +80,9 @@ fun findPackagePartInternalNameForLibraryFile(topLevelDeclaration: JetDeclaratio return null } - val proto = deserializedDescriptor.proto - if (proto.hasExtension(JvmProtoBuf.implClassName)) { - val name = deserializedDescriptor.nameResolver.getName(proto.getExtension(JvmProtoBuf.implClassName)!!) - return JvmClassName.byFqNameWithoutInnerClasses(packageFqName.child(name)).getInternalName() + val implClassName = JvmFileClassUtil.getImplClassName(deserializedDescriptor) + if (implClassName != null) { + return JvmClassName.byFqNameWithoutInnerClasses(packageFqName.child(implClassName)).getInternalName() } return null diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextConsistencyTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextConsistencyTest.kt index b0514fe03a3..4f19932a425 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextConsistencyTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextConsistencyTest.kt @@ -20,18 +20,17 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider import org.jetbrains.kotlin.idea.test.JetWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder -import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor -import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() { @@ -61,6 +60,6 @@ public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() { override fun isFromFacade(descriptor: CallableMemberDescriptor, facadeFqName: FqName): Boolean = descriptor is DeserializedCallableMemberDescriptor && - descriptor.proto.hasExtension(JvmProtoBuf.implClassName) && - facadeFqName == PackagePartClassUtils.getPackagePartFqName(descriptor) + JvmFileClassUtil.getImplClassName(descriptor) != null && + facadeFqName == JvmFileClassUtil.getPartFqNameForDeserializedCallable(descriptor) }