diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java
index 88f61b39bcd..58e37c4b956 100644
--- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java
+++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegenUtil.java
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.load.java.JvmAbi;
-import org.jetbrains.kotlin.load.kotlin.DeserializedResolverUtils;
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils;
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder;
@@ -56,8 +55,7 @@ import java.io.StringWriter;
import java.util.Arrays;
import java.util.ListIterator;
-import static org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName;
-import static org.jetbrains.kotlin.resolve.DescriptorUtils.isTrait;
+import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
public class InlineCodegenUtil {
public static final int API = Opcodes.ASM5;
@@ -146,7 +144,7 @@ public class InlineCodegenUtil {
return PackageClassUtils.getPackageClassFqName(getFqName(containerDescriptor).toSafe());
}
if (containerDescriptor instanceof ClassDescriptor) {
- FqName fqName = DeserializedResolverUtils.kotlinFqNameToJavaFqName(getFqName(containerDescriptor));
+ FqName fqName = getFqNameSafe(containerDescriptor);
if (isTrait(containerDescriptor)) {
return fqName.parent().child(Name.identifier(fqName.shortName() + JvmAbi.TRAIT_IMPL_SUFFIX));
}
diff --git a/compiler/builtins-serializer/src/BuiltInsSerializer.kt b/compiler/builtins-serializer/src/BuiltInsSerializer.kt
index d6805f54543..2e3385ca7ef 100644
--- a/compiler/builtins-serializer/src/BuiltInsSerializer.kt
+++ b/compiler/builtins-serializer/src/BuiltInsSerializer.kt
@@ -37,12 +37,13 @@ import org.jetbrains.kotlin.context.GlobalContext
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
import org.jetbrains.kotlin.analyzer.ModuleContent
-import org.jetbrains.kotlin.load.kotlin.DeserializedResolverUtils
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.JVMConfigurationKeys
import org.jetbrains.kotlin.resolve.constants.NullValue
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
+import org.jetbrains.kotlin.name.ClassId
+import org.jetbrains.kotlin.resolve.descriptorUtil.classId
private object BuiltInsSerializerExtension : SerializerExtension() {
override fun serializeClass(descriptor: ClassDescriptor, proto: ProtoBuf.Class.Builder, stringTable: StringTable) {
@@ -216,6 +217,6 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
}
private fun getFileName(classDescriptor: ClassDescriptor): String {
- return BuiltInsSerializationUtil.getClassMetadataPath(DeserializedResolverUtils.getClassId(classDescriptor))!!
+ return BuiltInsSerializationUtil.getClassMetadataPath(classDescriptor.classId)
}
}
diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt
index d3f4f9b5f69..b564f2ae225 100644
--- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt
+++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaAnnotationDescriptor.kt
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.load.java.lazy.types.toAttributes
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
-import org.jetbrains.kotlin.load.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName
import org.jetbrains.kotlin.resolve.jvm.PLATFORM_TYPES
private object DEPRECATED_IN_JAVA : JavaLiteralAnnotationArgument {
@@ -54,9 +53,9 @@ class LazyJavaAnnotationDescriptor(
) : AnnotationDescriptor {
private val fqName = c.storageManager.createNullableLazyValue {
- val classId = javaAnnotation.getClassId()
- if (classId == null) null
- else kotlinFqNameToJavaFqName(classId.asSingleFqName())
+ javaAnnotation.getClassId().asSingleFqName().let {
+ if (it.isSafe()) it.toSafe() else null
+ }
}
private val type = c.storageManager.createLazyValue {(): JetType ->
diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt
index e0d75ee2e22..1576e2cdfec 100644
--- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt
+++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt
@@ -62,7 +62,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader {
val classId = nameResolver.getClassId(classProto.getFqName())
- val kotlinClass = findKotlinClassById(classId)
+ val kotlinClass = kotlinClassFinder.findKotlinClass(classId)
if (kotlinClass == null) {
// This means that the resource we're constructing the descriptor from is no longer present: KotlinClassFinder had found the
// class earlier, but it can't now
@@ -160,19 +160,19 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader segments = kotlinFqName.pathSegments();
- List correctedSegments = new ArrayList(segments.size());
- for (Name segment : segments) {
- correctedSegments.add(segment.getIdentifier());
- }
- return FqName.fromSegments(correctedSegments);
- }
-
- @NotNull
- public static ClassId kotlinClassIdToJavaClassId(@NotNull ClassId kotlinClassId) {
- return new ClassId(kotlinClassId.getPackageFqName(), kotlinFqNameToJavaFqName(kotlinClassId.getRelativeClassName()).toUnsafe());
- }
-
- //TODO_R: remove usages
- @NotNull
- public static FqNameUnsafe javaFqNameToKotlinFqName(@NotNull FqName javaFqName) {
- if (javaFqName.isRoot()) {
- return javaFqName.toUnsafe();
- }
- List segments = javaFqName.pathSegments();
- List correctedSegments = new ArrayList(segments.size());
- correctedSegments.add(segments.get(0));
- for (int i = 1; i < segments.size(); i++) {
- correctedSegments.add(segments.get(i));
- }
- return FqNameUnsafe.fromSegments(correctedSegments);
- }
-
- //TODO_R: remove usages
- @NotNull
- public static ClassId javaClassIdToKotlinClassId(@NotNull ClassId javaClassId) {
- return new ClassId(javaClassId.getPackageFqName(), javaFqNameToKotlinFqName(javaClassId.getRelativeClassName().toSafe()));
- }
-
- @NotNull
- public static ClassId getClassId(@NotNull ClassDescriptor descriptor) {
- DeclarationDescriptor owner = descriptor.getContainingDeclaration();
- if (owner instanceof PackageFragmentDescriptor) {
- return new ClassId(((PackageFragmentDescriptor) owner).getFqName(), descriptor.getName());
- }
- else if (owner instanceof ClassDescriptor) {
- return getClassId((ClassDescriptor) owner).createNestedClassId(descriptor.getName());
- }
- else {
- throw new IllegalStateException("Illegal container: " + descriptor);
- }
- }
-}
diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JavaClassDataFinder.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JavaClassDataFinder.kt
index c00f8f2d8c1..8ec5245a569 100644
--- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JavaClassDataFinder.kt
+++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JavaClassDataFinder.kt
@@ -27,8 +27,7 @@ public class JavaClassDataFinder(
private val deserializedDescriptorResolver: DeserializedDescriptorResolver
) : ClassDataFinder {
override fun findClassData(classId: ClassId): ClassData? {
- val javaClassId = DeserializedResolverUtils.kotlinClassIdToJavaClassId(classId)
- val kotlinJvmBinaryClass = kotlinClassFinder.findKotlinClass(javaClassId) ?: return null
+ val kotlinJvmBinaryClass = kotlinClassFinder.findKotlinClass(classId) ?: return null
val data = deserializedDescriptorResolver.readData(kotlinJvmBinaryClass, KotlinClassHeader.Kind.CLASS) ?: return null
return JvmProtoBufUtil.readClassDataFrom(data)
}
diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInsSerializationUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInsSerializationUtil.kt
index c75375573e8..96bf07631b1 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInsSerializationUtil.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/BuiltInsSerializationUtil.kt
@@ -25,7 +25,7 @@ public object BuiltInsSerializationUtil {
private val STRING_TABLE_FILE_NAME = ".kotlin_string_table"
private val CLASS_NAMES_FILE_NAME = ".kotlin_class_names"
- platformStatic public fun getClassMetadataPath(classId: ClassId): String? {
+ platformStatic public fun getClassMetadataPath(classId: ClassId): String {
return packageFqNameToPath(classId.getPackageFqName()) + "/" + classId.getRelativeClassName().asString() +
"." + CLASS_METADATA_FILE_EXTENSION
}
diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
index 51117639eea..6e57db0391a 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.descriptors.ClassKind.*
import org.jetbrains.kotlin.name.FqName
+import org.jetbrains.kotlin.name.ClassId
public fun ClassDescriptor.getClassObjectReferenceTarget(): ClassDescriptor {
val classObjectDescriptor = getClassObjectDescriptor()
@@ -46,4 +47,16 @@ public fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName): C
assert(!topLevelClassFqName.isRoot())
return getPackage(topLevelClassFqName.parent())?.getMemberScope()
?.getClassifier(topLevelClassFqName.shortName()) as? ClassDescriptor
-}
\ No newline at end of file
+}
+
+public val ClassDescriptor.classId: ClassId
+ get() {
+ val owner = getContainingDeclaration()
+ if (owner is PackageFragmentDescriptor) {
+ return ClassId(owner.fqName, getName())
+ }
+ else if (owner is ClassDescriptor) {
+ return owner.classId.createNestedClassId(getName())
+ }
+ throw IllegalStateException("Illegal container: $owner")
+ }
\ No newline at end of file
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/LocalClassFinder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/LocalClassFinder.kt
index cf81dba593f..b3cef0b0d57 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/LocalClassFinder.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/LocalClassFinder.kt
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
-import org.jetbrains.kotlin.load.kotlin.DeserializedResolverUtils
import org.jetbrains.kotlin.idea.decompiler.isKotlinWithCompatibleAbiVersion
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
import com.intellij.openapi.vfs.VirtualFile
@@ -40,8 +39,7 @@ class LocalClassFinder(
if (classId.getPackageFqName() != directoryPackageFqName) {
return null
}
- val segments = DeserializedResolverUtils.kotlinFqNameToJavaFqName(classId.getRelativeClassName()).pathSegments()
- val targetName = segments.joinToString("$", postfix = ".class")
+ val targetName = classId.getRelativeClassName().pathSegments().joinToString("$", postfix = ".class")
val virtualFile = packageDirectory.findChild(targetName)
if (virtualFile != null && isKotlinWithCompatibleAbiVersion(virtualFile)) {
return KotlinBinaryClassCache.getKotlinBinaryClass(virtualFile)
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java
index a4706379636..b07ac2bc734 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/BuiltInsReferenceResolver.java
@@ -57,8 +57,8 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
-import static org.jetbrains.kotlin.load.kotlin.DeserializedResolverUtils.getClassId;
import static org.jetbrains.kotlin.resolve.DescriptorUtils.unwrapFakeOverride;
+import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage.getClassId;
import static org.jetbrains.kotlin.serialization.deserialization.DeserializationPackage.findClassAcrossModuleDependencies;
public class BuiltInsReferenceResolver extends AbstractProjectComponent {