Make ClassId's relative class name FqName instead of FqNameUnsafe
It was FqNameUnsafe in times when there were classes without identifier names, specifically class objects with names like '<class-object-for-...>'
This commit is contained in:
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.load.kotlin.PackageClassUtils;
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
|
||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
||||
@@ -150,7 +150,7 @@ public class InlineCodegenUtil {
|
||||
@NotNull
|
||||
public static VirtualFile getVirtualFileForCallable(@NotNull ClassId containerClassId, @NotNull GenerationState state) {
|
||||
VirtualFileFinder fileFinder = VirtualFileFinder.SERVICE.getInstance(state.getProject());
|
||||
VirtualFile file = fileFinder.findVirtualFileWithHeader(containerClassId.asSingleFqName().toSafe());
|
||||
VirtualFile file = fileFinder.findVirtualFileWithHeader(containerClassId.asSingleFqName());
|
||||
if (file == null) {
|
||||
throw new IllegalStateException("Couldn't find declaration file for " + containerClassId);
|
||||
}
|
||||
@@ -193,7 +193,7 @@ public class InlineCodegenUtil {
|
||||
if (containerDescriptor instanceof ClassDescriptor) {
|
||||
ClassId classId = DescriptorUtilPackage.getClassId((ClassDescriptor) containerDescriptor);
|
||||
if (isTrait(containerDescriptor)) {
|
||||
FqNameUnsafe relativeClassName = classId.getRelativeClassName();
|
||||
FqName relativeClassName = classId.getRelativeClassName();
|
||||
//TODO test nested trait fun inlining
|
||||
classId = new ClassId(classId.getPackageFqName(), Name.identifier(relativeClassName.shortName().asString() + JvmAbi.TRAIT_IMPL_SUFFIX));
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl;
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct;
|
||||
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade;
|
||||
|
||||
@@ -87,14 +86,14 @@ public class JavaClassFinderImpl implements JavaClassFinder {
|
||||
@Nullable
|
||||
@Override
|
||||
public JavaClass findClass(@NotNull ClassId classId) {
|
||||
FqNameUnsafe fqName = classId.asSingleFqName();
|
||||
FqName fqName = classId.asSingleFqName();
|
||||
|
||||
PsiClass psiClass = javaFacade.findClass(fqName.asString(), javaSearchScope);
|
||||
if (psiClass == null) return null;
|
||||
|
||||
JavaClassImpl javaClass = new JavaClassImpl(psiClass);
|
||||
|
||||
if (!fqName.equalsTo(javaClass.getFqName())) {
|
||||
if (!fqName.equals(javaClass.getFqName())) {
|
||||
throw new IllegalStateException("Requested " + fqName + ", got " + javaClass.getFqName());
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
|
||||
import org.jetbrains.kotlin.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader;
|
||||
import org.jetbrains.org.objectweb.asm.ClassVisitor;
|
||||
@@ -288,7 +287,7 @@ public abstract class FileBasedKotlinClass implements KotlinJvmBinaryClass {
|
||||
Collections.reverse(classes);
|
||||
|
||||
FqName packageFqName = outermostClassFqName.parent();
|
||||
FqNameUnsafe relativeClassName = FqNameUnsafe.fromSegments(classes);
|
||||
FqName relativeClassName = FqName.fromSegments(classes);
|
||||
return new ClassId(packageFqName, relativeClassName, local);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -18,12 +18,12 @@ package org.jetbrains.kotlin.load.kotlin
|
||||
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
|
||||
public abstract class VirtualFileKotlinClassFinder : VirtualFileFinder {
|
||||
override fun findKotlinClass(classId: ClassId): KotlinJvmBinaryClass? {
|
||||
val file = findVirtualFileWithHeader(classId.asSingleFqName().toSafe()) ?: return null
|
||||
val file = findVirtualFileWithHeader(classId.asSingleFqName()) ?: return null
|
||||
return KotlinBinaryClassCache.getKotlinBinaryClass(file)
|
||||
}
|
||||
|
||||
|
||||
@@ -16,27 +16,31 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.context.TypeLazinessToken
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.diagnostics.Errors.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.codeFragmentUtil.debugTypeInfo
|
||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||
import org.jetbrains.kotlin.resolve.PossiblyBareType.type
|
||||
import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.resolve.lazy.LazyEntity
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.LazyScopeAdapter
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
|
||||
import org.jetbrains.kotlin.diagnostics.Errors.*
|
||||
import org.jetbrains.kotlin.resolve.PossiblyBareType.type
|
||||
import org.jetbrains.kotlin.types.Variance.*
|
||||
import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider
|
||||
import kotlin.platform.platformStatic
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.context.TypeLazinessToken
|
||||
import org.jetbrains.kotlin.resolve.lazy.LazyEntity
|
||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.Variance.INVARIANT
|
||||
import org.jetbrains.kotlin.types.Variance.IN_VARIANCE
|
||||
import org.jetbrains.kotlin.types.Variance.OUT_VARIANCE
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||
import org.jetbrains.kotlin.psi.codeFragmentUtil.debugTypeInfo
|
||||
import kotlin.platform.platformStatic
|
||||
|
||||
public class TypeResolver(
|
||||
private val annotationResolver: AnnotationResolver,
|
||||
@@ -175,7 +179,7 @@ public class TypeResolver(
|
||||
result = type(ErrorUtils.createErrorTypeWithArguments("" + typeConstructor, arguments))
|
||||
}
|
||||
else {
|
||||
if (Flexibility.FLEXIBLE_TYPE_CLASSIFIER.asSingleFqName() == DescriptorUtils.getFqName(classifierDescriptor)
|
||||
if (Flexibility.FLEXIBLE_TYPE_CLASSIFIER.asSingleFqName().toUnsafe() == DescriptorUtils.getFqName(classifierDescriptor)
|
||||
&& classifierDescriptor.getTypeConstructor().getParameters().size() == 2) {
|
||||
// We create flexible types by convention here
|
||||
// This is not intended to be used in normal users' environments, only for tests and debugger etc
|
||||
|
||||
+15
-16
@@ -16,25 +16,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.java.lazy.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
||||
import org.jetbrains.kotlin.load.java.structure.*
|
||||
import org.jetbrains.kotlin.resolve.constants.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.*
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.DEFAULT_ANNOTATION_MEMBER_NAME
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.isSpecialAnnotation
|
||||
import org.jetbrains.kotlin.load.java.components.DescriptorResolverUtils
|
||||
import org.jetbrains.kotlin.load.java.components.TypeUsage
|
||||
import org.jetbrains.kotlin.utils.valuesToMap
|
||||
import org.jetbrains.kotlin.utils.keysToMapExceptNulls
|
||||
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
|
||||
import org.jetbrains.kotlin.load.java.lazy.types.toAttributes
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.load.java.structure.*
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.resolve.constants.*
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
|
||||
import org.jetbrains.kotlin.resolve.jvm.PLATFORM_TYPES
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.utils.keysToMapExceptNulls
|
||||
import org.jetbrains.kotlin.utils.valuesToMap
|
||||
|
||||
private object DEPRECATED_IN_JAVA : JavaLiteralAnnotationArgument {
|
||||
override val name: Name? = null
|
||||
@@ -49,13 +50,11 @@ fun LazyJavaResolverContext.resolveAnnotation(annotation: JavaAnnotation): LazyJ
|
||||
|
||||
class LazyJavaAnnotationDescriptor(
|
||||
private val c: LazyJavaResolverContext,
|
||||
val javaAnnotation : JavaAnnotation
|
||||
val javaAnnotation: JavaAnnotation
|
||||
) : AnnotationDescriptor {
|
||||
|
||||
private val fqName = c.storageManager.createNullableLazyValue {
|
||||
javaAnnotation.getClassId().asSingleFqName().let {
|
||||
if (it.isSafe()) it.toSafe() else null
|
||||
}
|
||||
javaAnnotation.getClassId()?.asSingleFqName()
|
||||
}
|
||||
|
||||
private val type = c.storageManager.createLazyValue {(): JetType ->
|
||||
|
||||
+2
-3
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.load.java.JavaVisibilities
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import java.lang.reflect.Array
|
||||
import java.lang.reflect.Modifier
|
||||
@@ -43,7 +42,7 @@ public fun Class<*>.isEnumClassOrSpecializedEnumEntryClass(): Boolean =
|
||||
javaClass<Enum<*>>().isAssignableFrom(this)
|
||||
|
||||
public val Class<*>.fqName: FqName
|
||||
get() = classId.asSingleFqName().toSafe()
|
||||
get() = classId.asSingleFqName()
|
||||
|
||||
public val Class<*>.classId: ClassId
|
||||
get() = when {
|
||||
@@ -51,7 +50,7 @@ public val Class<*>.classId: ClassId
|
||||
isArray() -> throw IllegalArgumentException("Can't compute ClassId for array type: $this")
|
||||
getEnclosingMethod() != null, getEnclosingConstructor() != null, getSimpleName().isEmpty() -> {
|
||||
val fqName = FqName(getName())
|
||||
ClassId(fqName.parent(), FqNameUnsafe.topLevel(fqName.shortName()), /* local = */ true)
|
||||
ClassId(fqName.parent(), FqName.topLevel(fqName.shortName()), /* local = */ true)
|
||||
}
|
||||
else -> getDeclaringClass()?.classId?.createNestedClassId(Name.identifier(getSimpleName())) ?: ClassId.topLevel(FqName(getName()))
|
||||
}
|
||||
|
||||
@@ -34,10 +34,10 @@ public final class ClassId {
|
||||
}
|
||||
|
||||
private final FqName packageFqName;
|
||||
private final FqNameUnsafe relativeClassName;
|
||||
private final FqName relativeClassName;
|
||||
private final boolean local;
|
||||
|
||||
public ClassId(@NotNull FqName packageFqName, @NotNull FqNameUnsafe relativeClassName, boolean local) {
|
||||
public ClassId(@NotNull FqName packageFqName, @NotNull FqName relativeClassName, boolean local) {
|
||||
this.packageFqName = packageFqName;
|
||||
assert !relativeClassName.isRoot() :
|
||||
"Class name must not be root: " + packageFqName + (local ? " (local)" : "");
|
||||
@@ -46,7 +46,7 @@ public final class ClassId {
|
||||
}
|
||||
|
||||
public ClassId(@NotNull FqName packageFqName, @NotNull Name topLevelName) {
|
||||
this(packageFqName, FqNameUnsafe.topLevel(topLevelName), false);
|
||||
this(packageFqName, FqName.topLevel(topLevelName), false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -55,7 +55,7 @@ public final class ClassId {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public FqNameUnsafe getRelativeClassName() {
|
||||
public FqName getRelativeClassName() {
|
||||
return relativeClassName;
|
||||
}
|
||||
|
||||
@@ -83,9 +83,9 @@ public final class ClassId {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public FqNameUnsafe asSingleFqName() {
|
||||
public FqName asSingleFqName() {
|
||||
if (packageFqName.isRoot()) return relativeClassName;
|
||||
return new FqNameUnsafe(packageFqName.asString() + "." + relativeClassName.asString());
|
||||
return new FqName(packageFqName.asString() + "." + relativeClassName.asString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -120,7 +120,7 @@ public final class ClassId {
|
||||
if (lastSlash == -1) {
|
||||
throw new IllegalArgumentException("Class id should contain slash: " + string);
|
||||
}
|
||||
FqNameUnsafe relativeClassName = new FqNameUnsafe(string.substring(lastSlash + 1));
|
||||
FqName relativeClassName = new FqName(string.substring(lastSlash + 1));
|
||||
FqName packageFqName = new FqName(string.substring(0, lastSlash).replace('/', '.'));
|
||||
return new ClassId(packageFqName, relativeClassName, false);
|
||||
}
|
||||
|
||||
+1
-2
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.serialization.deserialization;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf;
|
||||
|
||||
@@ -85,7 +84,7 @@ public class NameResolver {
|
||||
index = proto.getParentQualifiedName();
|
||||
}
|
||||
|
||||
return new ClassId(FqName.fromSegments(packageFqName), FqNameUnsafe.fromSegments(relativeClassName), local);
|
||||
return new ClassId(FqName.fromSegments(packageFqName), FqName.fromSegments(relativeClassName), local);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+5
-8
@@ -16,19 +16,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization.deserialization
|
||||
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
|
||||
public data class ProtoContainer(val classProto: ProtoBuf.Class?, val packageFqName: FqName?) {
|
||||
{
|
||||
assert(classProto != null || packageFqName != null)
|
||||
assert(classProto == null || packageFqName == null)
|
||||
init {
|
||||
assert((classProto != null) xor (packageFqName != null))
|
||||
}
|
||||
|
||||
fun getFqName(nameResolver: NameResolver): FqNameUnsafe {
|
||||
if (packageFqName != null) return packageFqName.toUnsafe()
|
||||
fun getFqName(nameResolver: NameResolver): FqName {
|
||||
if (packageFqName != null) return packageFqName
|
||||
|
||||
return nameResolver.getClassId(classProto!!.getFqName()).asSingleFqName()
|
||||
}
|
||||
|
||||
+3
-2
@@ -61,7 +61,7 @@ private class ClassClsStubBuilder(
|
||||
}.let {
|
||||
supertypeIds ->
|
||||
//empty supertype list if single supertype is Any
|
||||
if (supertypeIds.singleOrNull()?.let { KotlinBuiltIns.isAny(it.asSingleFqName()) } ?: false) {
|
||||
if (supertypeIds.singleOrNull()?.let { KotlinBuiltIns.isAny(it.asSingleFqName().toUnsafe()) } ?: false) {
|
||||
listOf()
|
||||
}
|
||||
else {
|
||||
@@ -108,7 +108,8 @@ private class ClassClsStubBuilder(
|
||||
val shortName = fqName.shortName().ref()
|
||||
val superTypeRefs = supertypeIds.filter {
|
||||
//TODO: filtering function types should go away
|
||||
!KotlinBuiltIns.isExactFunctionType(it.asSingleFqName()) && !KotlinBuiltIns.isExactExtensionFunctionType(it.asSingleFqName())
|
||||
!KotlinBuiltIns.isExactFunctionType(it.asSingleFqName().toUnsafe()) &&
|
||||
!KotlinBuiltIns.isExactExtensionFunctionType(it.asSingleFqName().toUnsafe())
|
||||
}.map { it.getShortClassName().ref() }.copyToArray()
|
||||
return when (classKind) {
|
||||
ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> {
|
||||
|
||||
+17
-32
@@ -16,42 +16,27 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.decompiler.stubBuilder
|
||||
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinPlaceHolderStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinNameReferenceExpressionStubImpl
|
||||
import org.jetbrains.kotlin.psi.JetTypeReference
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetParameterList
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinParameterStubImpl
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.JetNullableType
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.psi.JetTypeArgumentList
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinTypeProjectionStubImpl
|
||||
import org.jetbrains.kotlin.psi.JetFunctionType
|
||||
import org.jetbrains.kotlin.psi.JetFunctionTypeReceiver
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
|
||||
import org.jetbrains.kotlin.psi.JetTypeParameterList
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Type
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinTypeParameterStubImpl
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance
|
||||
import org.jetbrains.kotlin.psi.JetTypeConstraintList
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinTypeConstraintStubImpl
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import java.util.ArrayList
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Callable.CallableKind
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.KotlinModifierListStubImpl
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.ModifierMaskUtils
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinUserTypeStub
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.JetStubElementTypes
|
||||
import org.jetbrains.kotlin.psi.stubs.impl.*
|
||||
import org.jetbrains.kotlin.serialization.Flags
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Callable.CallableKind
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Type
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.Type.Argument.Projection
|
||||
import org.jetbrains.kotlin.psi.JetProjectionKind
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf.TypeParameter.Variance
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoContainer
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
|
||||
import java.util.ArrayList
|
||||
|
||||
class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
|
||||
@@ -76,7 +61,7 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
|
||||
private fun createClassReferenceTypeStub(parent: StubElement<out PsiElement>, type: Type) {
|
||||
val classId = c.nameResolver.getClassId(type.getConstructor().getId())
|
||||
val fqName = classId.asSingleFqName()
|
||||
val fqName = classId.asSingleFqName().toUnsafe()
|
||||
val isFunctionType = KotlinBuiltIns.isExactFunctionType(fqName)
|
||||
val isExtensionFunctionType = KotlinBuiltIns.isExactExtensionFunctionType(fqName)
|
||||
if (isFunctionType || isExtensionFunctionType) {
|
||||
@@ -237,6 +222,6 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
return false
|
||||
}
|
||||
val classId = c.nameResolver.getClassId(constructor.getId())
|
||||
return KotlinBuiltIns.isAny(classId.asSingleFqName()) && this.getNullable()
|
||||
return KotlinBuiltIns.isAny(classId.asSingleFqName().toUnsafe()) && this.getNullable()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ fun createAnnotationStubs(annotationIds: List<ClassId>, modifierList: KotlinModi
|
||||
annotationClassId ->
|
||||
val annotationEntryStubImpl = KotlinAnnotationEntryStubImpl(
|
||||
modifierList,
|
||||
shortName = annotationClassId.asSingleFqName().shortName().ref(),
|
||||
shortName = annotationClassId.getShortClassName().ref(),
|
||||
hasValueArguments = false
|
||||
)
|
||||
val constructorCallee = KotlinPlaceHolderStubImpl<JetConstructorCalleeExpression>(annotationEntryStubImpl, JetStubElementTypes.CONSTRUCTOR_CALLEE)
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ public final class KotlinClassFileIndex extends ScalarIndexExtension<FqName> {
|
||||
try {
|
||||
KotlinJvmBinaryClass kotlinClass = KotlinBinaryClassCache.getKotlinBinaryClass(inputData.getFile());
|
||||
if (kotlinClass != null && kotlinClass.getClassHeader().getIsCompatibleAbiVersion()) {
|
||||
return Collections.singletonMap(kotlinClass.getClassId().asSingleFqName().toSafe(), null);
|
||||
return Collections.singletonMap(kotlinClass.getClassId().asSingleFqName(), null);
|
||||
}
|
||||
}
|
||||
catch (Throwable e) {
|
||||
|
||||
+15
-15
@@ -16,27 +16,27 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.decompiler.textBuilder
|
||||
|
||||
import org.jetbrains.kotlin.idea.JetLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.junit.Assert
|
||||
import org.jetbrains.kotlin.idea.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.context.GlobalContext
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
|
||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||
import org.jetbrains.kotlin.idea.JetLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils
|
||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||
import org.jetbrains.kotlin.resolve.MemberComparator
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
import org.jetbrains.kotlin.context.GlobalContext
|
||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
|
||||
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
|
||||
import org.junit.Assert
|
||||
|
||||
public class DecompiledTextConsistencyTest : JetLightCodeInsightFixtureTestCase() {
|
||||
|
||||
@@ -70,7 +70,7 @@ class ProjectBasedResolverForDecompiler(project: Project) : ResolverForDecompile
|
||||
}
|
||||
|
||||
override fun resolveTopLevelClass(classId: ClassId): ClassDescriptor? {
|
||||
return module.resolveTopLevelClass(classId.asSingleFqName().toSafe())
|
||||
return module.resolveTopLevelClass(classId.asSingleFqName())
|
||||
}
|
||||
|
||||
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
|
||||
|
||||
Reference in New Issue
Block a user