Introduce ClassId.getShortClassName() for convenience
This commit is contained in:
@@ -91,8 +91,8 @@ public class BuiltinsPackageFragment(
|
||||
|
||||
val classProto = ProtoBuf.Class.parseFrom(stream, extensionRegistry)
|
||||
|
||||
val expectedShortName = classId.getRelativeClassName().shortName()
|
||||
val actualShortName = nameResolver.getClassId(classProto.getFqName()).getRelativeClassName().shortName()
|
||||
val expectedShortName = classId.getShortClassName()
|
||||
val actualShortName = nameResolver.getClassId(classProto.getFqName()).getShortClassName()
|
||||
if (!actualShortName.isSpecial() && actualShortName != expectedShortName) {
|
||||
// Workaround for case-insensitive file systems,
|
||||
// otherwise we'd find "Collection" for "collection" etc
|
||||
|
||||
@@ -59,6 +59,11 @@ public final class ClassId {
|
||||
return relativeClassName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Name getShortClassName() {
|
||||
return relativeClassName.shortName();
|
||||
}
|
||||
|
||||
public boolean isLocal() {
|
||||
return local;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class KClassImpl<T>(override val jClass: Class<T>) : KCallableContainerImpl(), K
|
||||
return when {
|
||||
jClass.isAnonymousClass() -> null
|
||||
classId.isLocal() -> calculateLocalClassName(jClass)
|
||||
else -> classId.getRelativeClassName().shortName().asString()
|
||||
else -> classId.getShortClassName().asString()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+12
-9
@@ -16,25 +16,28 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization.deserialization.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.AbstractClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.EnumEntrySyntheticClassDescriptor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||
import org.jetbrains.kotlin.resolve.OverridingUtil
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.StaticScopeForKotlinClass
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization
|
||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.types.AbstractClassTypeConstructor
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
import org.jetbrains.kotlin.serialization.deserialization
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.utils.singletonOrEmptyList
|
||||
import java.util.*
|
||||
import java.util.ArrayList
|
||||
import java.util.HashSet
|
||||
import java.util.LinkedHashSet
|
||||
|
||||
public class DeserializedClassDescriptor(
|
||||
outerContext: DeserializationContext,
|
||||
@@ -42,7 +45,7 @@ public class DeserializedClassDescriptor(
|
||||
nameResolver: NameResolver
|
||||
) : ClassDescriptor, AbstractClassDescriptor(
|
||||
outerContext.storageManager,
|
||||
nameResolver.getClassId(classProto.getFqName()).getRelativeClassName().shortName()
|
||||
nameResolver.getClassId(classProto.getFqName()).getShortClassName()
|
||||
) {
|
||||
private val modality = deserialization.modality(Flags.MODALITY.get(classProto.getFlags()))
|
||||
private val visibility = deserialization.visibility(Flags.VISIBILITY.get(classProto.getFlags()))
|
||||
|
||||
+1
-1
@@ -147,6 +147,6 @@ private class CallableClsStubBuilder(
|
||||
private fun isProbablyNothing(callableProto: ProtoBuf.Callable): Boolean {
|
||||
val constructor = callableProto.getReturnType().getConstructor()
|
||||
return constructor.getKind() == ProtoBuf.Type.Constructor.Kind.CLASS &&
|
||||
c.nameResolver.getClassId(constructor.getId()).getRelativeClassName().shortName().asString() == "Nothing"
|
||||
c.nameResolver.getClassId(constructor.getId()).getShortClassName().asString() == "Nothing"
|
||||
}
|
||||
}
|
||||
|
||||
+21
-19
@@ -16,27 +16,29 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.decompiler.stubBuilder
|
||||
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetClassElementType
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinClassStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinObjectStubImpl
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.JetClassBody
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinPlaceHolderStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
import org.jetbrains.kotlin.psi.JetParameterList
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.INNER
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.MODALITY
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBILITY
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.psi.JetClassBody
|
||||
import org.jetbrains.kotlin.psi.JetDelegationSpecifierList
|
||||
import org.jetbrains.kotlin.psi.JetDelegatorToSuperClass
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
import org.jetbrains.kotlin.psi.JetParameterList
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetClassElementType
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinClassStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinModifierListStubImpl
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinObjectStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinPlaceHolderStubImpl
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Type
|
||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.*
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
|
||||
|
||||
fun createClassStub(parent: StubElement<out PsiElement>, classProto: ProtoBuf.Class, classId: ClassId, context: ClsStubBuilderContext) {
|
||||
@@ -49,7 +51,7 @@ private class ClassClsStubBuilder(
|
||||
private val classId: ClassId,
|
||||
private val outerContext: ClsStubBuilderContext
|
||||
) {
|
||||
private val c = outerContext.child(classProto.getTypeParameterList(), classId.getRelativeClassName().shortName())
|
||||
private val c = outerContext.child(classProto.getTypeParameterList(), classId.getShortClassName())
|
||||
private val typeStubBuilder = TypeClsStubBuilder(c)
|
||||
private val classKind = Flags.CLASS_KIND[classProto.getFlags()]
|
||||
private val supertypeIds = classProto.getSupertypeList().map {
|
||||
@@ -102,12 +104,12 @@ private class ClassClsStubBuilder(
|
||||
|
||||
private fun doCreateClassOrObjectStub(): StubElement<out PsiElement> {
|
||||
val isCompanionObject = classKind == ProtoBuf.Class.Kind.CLASS_OBJECT
|
||||
val fqName = outerContext.containerFqName.child(classId.getRelativeClassName().shortName())
|
||||
val shortName = fqName.shortName()?.ref()
|
||||
val fqName = outerContext.containerFqName.child(classId.getShortClassName())
|
||||
val shortName = fqName.shortName().ref()
|
||||
val superTypeRefs = supertypeIds.filter {
|
||||
//TODO: filtering function types should go away
|
||||
!KotlinBuiltIns.isExactFunctionType(it.asSingleFqName()) && !KotlinBuiltIns.isExactExtensionFunctionType(it.asSingleFqName())
|
||||
}.map { it.getRelativeClassName().shortName().ref() }.copyToArray()
|
||||
}.map { it.getShortClassName().ref() }.copyToArray()
|
||||
return when (classKind) {
|
||||
ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> {
|
||||
KotlinObjectStubImpl(
|
||||
|
||||
Reference in New Issue
Block a user