diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/types/KotlinToJavaTypesMap.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/types/KotlinToJavaTypesMap.java index 82ae5dfbebc..be339b491f2 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/types/KotlinToJavaTypesMap.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/types/KotlinToJavaTypesMap.java @@ -18,13 +18,11 @@ package org.jetbrains.kotlin.resolve.jvm.types; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder; import org.jetbrains.kotlin.resolve.DescriptorUtils; -import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType; import java.util.HashMap; import java.util.Map; @@ -44,16 +42,6 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder { private KotlinToJavaTypesMap() { init(); - initPrimitives(); - } - - private void initPrimitives() { - for (JvmPrimitiveType type : JvmPrimitiveType.values()) { - register( - KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.child(type.getPrimitiveType().getTypeName()).toUnsafe(), - ClassId.topLevel(type.getWrapperFqName()) - ); - } } /** @@ -71,7 +59,7 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder { @Override protected void register(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) { if (direction == Direction.BOTH || direction == Direction.KOTLIN_TO_JAVA) { - register(DescriptorUtils.getFqName(kotlinDescriptor), javaClassId); + map.put(DescriptorUtils.getFqName(kotlinDescriptor), javaClassId); } } @@ -84,8 +72,4 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder { register(javaClassId, kotlinDescriptor, Direction.BOTH); register(javaClassId, kotlinMutableDescriptor, Direction.BOTH); } - - private void register(@NotNull FqNameUnsafe kotlinFqName, @NotNull ClassId javaClassId) { - map.put(kotlinFqName, javaClassId); - } } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java index 5043c2c1f9c..0f153a8bdca 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMap.java @@ -25,7 +25,6 @@ import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqNameUnsafe; import org.jetbrains.kotlin.resolve.DescriptorUtils; -import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType; import java.util.*; @@ -37,15 +36,6 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements private JavaToKotlinClassMap() { init(); - initPrimitives(); - } - - private void initPrimitives() { - KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); - - for (JvmPrimitiveType jvmType : JvmPrimitiveType.values()) { - register(ClassId.topLevel(jvmType.getWrapperFqName()), builtIns.getPrimitiveClassDescriptor(jvmType.getPrimitiveType())); - } } @Nullable diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMapBuilder.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMapBuilder.java index a54520e4e42..39b66057269 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMapBuilder.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/platform/JavaToKotlinClassMapBuilder.java @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; +import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType; import java.lang.annotation.Annotation; import java.util.*; @@ -56,6 +57,14 @@ public abstract class JavaToKotlinClassMapBuilder { register(Map.Entry.class, kotlinBuiltIns.getMapEntry(), kotlinBuiltIns.getMutableMapEntry()); register(ListIterator.class, kotlinBuiltIns.getListIterator(), kotlinBuiltIns.getMutableListIterator()); + for (JvmPrimitiveType jvmType : JvmPrimitiveType.values()) { + register( + ClassId.topLevel(jvmType.getWrapperFqName()), + kotlinBuiltIns.getPrimitiveClassDescriptor(jvmType.getPrimitiveType()), + Direction.BOTH + ); + } + register(classId(Deprecated.class), kotlinBuiltIns.getDeprecatedAnnotation(), Direction.JAVA_TO_KOTLIN); register(classId(Void.class), kotlinBuiltIns.getNothing(), Direction.KOTLIN_TO_JAVA); diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt index 156ad8665a8..08d90fcf862 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.load.java.structure.reflect.classId import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.FqNameUnsafe import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder import org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder.Direction.BOTH @@ -36,28 +36,15 @@ import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.TypeUtils object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() { - private val kotlinFqNameToJvmDesc = linkedMapOf() + private val kotlinFqNameToJvmDesc = linkedMapOf() init { init() - initPrimitives() - } - - private fun initPrimitives() { - val builtIns = KotlinBuiltIns.getInstance() - - for (type in JvmPrimitiveType.values()) { - recordKotlinToJvm(builtIns.getPrimitiveClassDescriptor(type.getPrimitiveType()), type.getDesc()) - } - } - - private fun recordKotlinToJvm(kotlinDescriptor: ClassDescriptor, jvmDesc: String) { - kotlinFqNameToJvmDesc[DescriptorUtils.getFqNameSafe(kotlinDescriptor)] = jvmDesc } override fun register(javaClassId: ClassId, kotlinDescriptor: ClassDescriptor, direction: JavaToKotlinClassMapBuilder.Direction) { if (direction == BOTH || direction == KOTLIN_TO_JAVA) { - recordKotlinToJvm(kotlinDescriptor, javaClassId.desc) + kotlinFqNameToJvmDesc[DescriptorUtils.getFqName(kotlinDescriptor)] = javaClassId.desc } } @@ -81,20 +68,18 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() { } val classDescriptor = classifier as ClassDescriptor - val fqNameUnsafe = DescriptorUtils.getFqName(classDescriptor) + val fqName = DescriptorUtils.getFqName(classDescriptor) - KotlinBuiltIns.getPrimitiveTypeByFqName(fqNameUnsafe)?.let { primitiveType -> + KotlinBuiltIns.getPrimitiveTypeByFqName(fqName)?.let { primitiveType -> val jvmType = JvmPrimitiveType.get(primitiveType) return if (TypeUtils.isNullableType(type)) ClassId.topLevel(jvmType.getWrapperFqName()).desc else jvmType.getDesc() } - KotlinBuiltIns.getPrimitiveTypeByArrayClassFqName(fqNameUnsafe)?.let { primitiveType -> + KotlinBuiltIns.getPrimitiveTypeByArrayClassFqName(fqName)?.let { primitiveType -> return "[" + JvmPrimitiveType.get(primitiveType).getDesc() } - if (fqNameUnsafe.isSafe()) { - kotlinFqNameToJvmDesc[fqNameUnsafe.toSafe()]?.let { return it } - } + kotlinFqNameToJvmDesc[fqName]?.let { return it } if (classDescriptor.isCompanionObject()) { IntrinsicObjects.mapType(classDescriptor)?.let { fqName ->