Minor, use existing utility for getting implClassName

This commit is contained in:
Alexander Udalov
2015-09-30 22:44:38 +03:00
parent 4f21caecc4
commit 06a7ca5571
5 changed files with 11 additions and 31 deletions
@@ -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<JetFile> multifileFacadeJetFiles =
StaticFacadeIndexUtil.getMultifileClassForPart(partFQN, GlobalSearchScope.allScope(project), project);
@@ -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
@@ -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)
}