Change Class<?> parameter to ClassId in JavaToKotlinClassMap implementations
This commit is contained in:
+3
-2
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.resolve.jvm.kotlinSignature;
|
||||
import com.google.common.collect.ImmutableBiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder;
|
||||
|
||||
public class CollectionClassMapping extends JavaToKotlinClassMapBuilder {
|
||||
@@ -42,13 +43,13 @@ public class CollectionClassMapping extends JavaToKotlinClassMapBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) {
|
||||
protected void register(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(
|
||||
@NotNull Class<?> javaClass,
|
||||
@NotNull ClassId javaClassId,
|
||||
@NotNull ClassDescriptor kotlinDescriptor,
|
||||
@NotNull ClassDescriptor kotlinMutableDescriptor
|
||||
) {
|
||||
|
||||
+5
-16
@@ -21,9 +21,7 @@ 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.FqName;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMapBuilder;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType;
|
||||
@@ -71,32 +69,23 @@ public class KotlinToJavaTypesMap extends JavaToKotlinClassMapBuilder {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) {
|
||||
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), computeClassId(javaClass));
|
||||
register(DescriptorUtils.getFqName(kotlinDescriptor), javaClassId);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(
|
||||
@NotNull Class<?> javaClass,
|
||||
@NotNull ClassId javaClassId,
|
||||
@NotNull ClassDescriptor kotlinDescriptor,
|
||||
@NotNull ClassDescriptor kotlinMutableDescriptor
|
||||
) {
|
||||
register(javaClass, kotlinDescriptor, Direction.BOTH);
|
||||
register(javaClass, kotlinMutableDescriptor, Direction.BOTH);
|
||||
register(javaClassId, kotlinDescriptor, Direction.BOTH);
|
||||
register(javaClassId, kotlinMutableDescriptor, Direction.BOTH);
|
||||
}
|
||||
|
||||
private void register(@NotNull FqNameUnsafe kotlinFqName, @NotNull ClassId javaClassId) {
|
||||
map.put(kotlinFqName, javaClassId);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static ClassId computeClassId(@NotNull Class<?> clazz) {
|
||||
assert !clazz.isPrimitive() && !clazz.isArray() : "Invalid class: " + clazz;
|
||||
Class<?> outer = clazz.getDeclaringClass();
|
||||
return outer == null
|
||||
? ClassId.topLevel(new FqName(clazz.getCanonicalName()))
|
||||
: computeClassId(outer).createNestedClassId(Name.identifier(clazz.getSimpleName()));
|
||||
}
|
||||
}
|
||||
|
||||
+11
-16
@@ -21,6 +21,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.builtins.PrimitiveType;
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
@@ -43,7 +44,7 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
||||
KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance();
|
||||
|
||||
for (JvmPrimitiveType jvmType : JvmPrimitiveType.values()) {
|
||||
register(jvmType.getWrapperFqName(), builtIns.getPrimitiveClassDescriptor(jvmType.getPrimitiveType()));
|
||||
register(ClassId.topLevel(jvmType.getWrapperFqName()), builtIns.getPrimitiveClassDescriptor(jvmType.getPrimitiveType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,35 +58,29 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
||||
return classDescriptorMapForCovariantPositions.get(fqName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static FqName fqNameByClass(@NotNull Class<?> clazz) {
|
||||
return new FqName(clazz.getCanonicalName());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) {
|
||||
protected void register(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction) {
|
||||
if (direction == Direction.BOTH || direction == Direction.JAVA_TO_KOTLIN) {
|
||||
register(fqNameByClass(javaClass), kotlinDescriptor);
|
||||
register(javaClassId, kotlinDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void register(
|
||||
@NotNull Class<?> javaClass,
|
||||
@NotNull ClassId javaClassId,
|
||||
@NotNull ClassDescriptor kotlinDescriptor,
|
||||
@NotNull ClassDescriptor kotlinMutableDescriptor
|
||||
) {
|
||||
FqName javaClassName = fqNameByClass(javaClass);
|
||||
register(javaClassName, kotlinDescriptor);
|
||||
registerCovariant(javaClassName, kotlinMutableDescriptor);
|
||||
register(javaClassId, kotlinDescriptor);
|
||||
registerCovariant(javaClassId, kotlinMutableDescriptor);
|
||||
}
|
||||
|
||||
private void register(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
classDescriptorMap.put(javaClassName, kotlinDescriptor);
|
||||
private void register(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
classDescriptorMap.put(javaClassId.asSingleFqName(), kotlinDescriptor);
|
||||
}
|
||||
|
||||
private void registerCovariant(@NotNull FqName javaClassName, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
classDescriptorMapForCovariantPositions.put(javaClassName, kotlinDescriptor);
|
||||
private void registerCovariant(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
classDescriptorMapForCovariantPositions.put(javaClassId.asSingleFqName(), kotlinDescriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+30
-8
@@ -19,6 +19,9 @@ package org.jetbrains.kotlin.platform;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
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 java.lang.annotation.Annotation;
|
||||
import java.util.*;
|
||||
@@ -43,8 +46,6 @@ public abstract class JavaToKotlinClassMapBuilder {
|
||||
register(Comparable.class, kotlinBuiltIns.getComparable());
|
||||
register(Enum.class, kotlinBuiltIns.getEnum());
|
||||
register(Annotation.class, kotlinBuiltIns.getAnnotation());
|
||||
register(Deprecated.class, kotlinBuiltIns.getDeprecatedAnnotation(), Direction.JAVA_TO_KOTLIN);
|
||||
register(Void.class, kotlinBuiltIns.getNothing(), Direction.KOTLIN_TO_JAVA);
|
||||
|
||||
register(Iterable.class, kotlinBuiltIns.getIterable(), kotlinBuiltIns.getMutableIterable());
|
||||
register(Iterator.class, kotlinBuiltIns.getIterator(), kotlinBuiltIns.getMutableIterator());
|
||||
@@ -54,17 +55,38 @@ public abstract class JavaToKotlinClassMapBuilder {
|
||||
register(Map.class, kotlinBuiltIns.getMap(), kotlinBuiltIns.getMutableMap());
|
||||
register(Map.Entry.class, kotlinBuiltIns.getMapEntry(), kotlinBuiltIns.getMutableMapEntry());
|
||||
register(ListIterator.class, kotlinBuiltIns.getListIterator(), kotlinBuiltIns.getMutableListIterator());
|
||||
|
||||
register(classId(Deprecated.class), kotlinBuiltIns.getDeprecatedAnnotation(), Direction.JAVA_TO_KOTLIN);
|
||||
|
||||
register(classId(Void.class), kotlinBuiltIns.getNothing(), Direction.KOTLIN_TO_JAVA);
|
||||
}
|
||||
|
||||
private void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
register(javaClass, kotlinDescriptor, Direction.BOTH);
|
||||
}
|
||||
|
||||
protected abstract void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction);
|
||||
protected abstract void register(@NotNull ClassId javaClassId, @NotNull ClassDescriptor kotlinDescriptor, @NotNull Direction direction);
|
||||
|
||||
protected abstract void register(
|
||||
@NotNull Class<?> javaClass,
|
||||
@NotNull ClassId javaClassId,
|
||||
@NotNull ClassDescriptor kotlinDescriptor,
|
||||
@NotNull ClassDescriptor kotlinMutableDescriptor
|
||||
);
|
||||
|
||||
@NotNull
|
||||
private static ClassId classId(@NotNull Class<?> clazz) {
|
||||
assert !clazz.isPrimitive() && !clazz.isArray() : "Invalid class: " + clazz;
|
||||
Class<?> outer = clazz.getDeclaringClass();
|
||||
return outer == null
|
||||
? ClassId.topLevel(new FqName(clazz.getCanonicalName()))
|
||||
: classId(outer).createNestedClassId(Name.identifier(clazz.getSimpleName()));
|
||||
}
|
||||
|
||||
private void register(@NotNull Class<?> javaClass, @NotNull ClassDescriptor kotlinDescriptor) {
|
||||
register(classId(javaClass), kotlinDescriptor, Direction.BOTH);
|
||||
}
|
||||
|
||||
private void register(
|
||||
@NotNull Class<?> javaClass,
|
||||
@NotNull ClassDescriptor kotlinDescriptor,
|
||||
@NotNull ClassDescriptor kotlinMutableDescriptor
|
||||
) {
|
||||
register(classId(javaClass), kotlinDescriptor, kotlinMutableDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,15 +55,15 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
|
||||
kotlinFqNameToJvmDesc[DescriptorUtils.getFqNameSafe(kotlinDescriptor)] = jvmDesc
|
||||
}
|
||||
|
||||
override fun register(javaClass: Class<*>, kotlinDescriptor: ClassDescriptor, direction: JavaToKotlinClassMapBuilder.Direction) {
|
||||
override fun register(javaClassId: ClassId, kotlinDescriptor: ClassDescriptor, direction: JavaToKotlinClassMapBuilder.Direction) {
|
||||
if (direction == BOTH || direction == KOTLIN_TO_JAVA) {
|
||||
recordKotlinToJvm(kotlinDescriptor, javaClass.classId.desc)
|
||||
recordKotlinToJvm(kotlinDescriptor, javaClassId.desc)
|
||||
}
|
||||
}
|
||||
|
||||
override fun register(javaClass: Class<*>, kotlinDescriptor: ClassDescriptor, kotlinMutableDescriptor: ClassDescriptor) {
|
||||
register(javaClass, kotlinMutableDescriptor, JavaToKotlinClassMapBuilder.Direction.BOTH)
|
||||
register(javaClass, kotlinDescriptor, JavaToKotlinClassMapBuilder.Direction.BOTH)
|
||||
override fun register(javaClassId: ClassId, kotlinDescriptor: ClassDescriptor, kotlinMutableDescriptor: ClassDescriptor) {
|
||||
register(javaClassId, kotlinMutableDescriptor, JavaToKotlinClassMapBuilder.Direction.BOTH)
|
||||
register(javaClassId, kotlinDescriptor, JavaToKotlinClassMapBuilder.Direction.BOTH)
|
||||
}
|
||||
|
||||
// TODO: this logic must be shared with JetTypeMapper
|
||||
|
||||
Reference in New Issue
Block a user