Support Nothing type in typeOf

The proper support will come in KT-15518, but that would be a breaking
change even for stable Kotlin without kotlin-reflect. Before that issue
is fixed, represent Nothing in types with the Void class, and use a flag
in the no-reflect implementation to remember that it's not actually the
Void class itself.

 #KT-39166 Fixed
This commit is contained in:
Alexander Udalov
2021-07-07 13:04:59 +02:00
parent 02774fae0c
commit ddfa94e7e9
15 changed files with 338 additions and 15 deletions
@@ -3991,6 +3991,7 @@ public class kotlin/jvm/internal/Reflection {
public static fun mutableProperty0 (Lkotlin/jvm/internal/MutablePropertyReference0;)Lkotlin/reflect/KMutableProperty0;
public static fun mutableProperty1 (Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1;
public static fun mutableProperty2 (Lkotlin/jvm/internal/MutablePropertyReference2;)Lkotlin/reflect/KMutableProperty2;
public static fun nothingType (Lkotlin/reflect/KType;)Lkotlin/reflect/KType;
public static fun nullableTypeOf (Ljava/lang/Class;)Lkotlin/reflect/KType;
public static fun nullableTypeOf (Ljava/lang/Class;Lkotlin/reflect/KTypeProjection;)Lkotlin/reflect/KType;
public static fun nullableTypeOf (Ljava/lang/Class;Lkotlin/reflect/KTypeProjection;Lkotlin/reflect/KTypeProjection;)Lkotlin/reflect/KType;
@@ -4024,6 +4025,7 @@ public class kotlin/jvm/internal/ReflectionFactory {
public fun mutableProperty0 (Lkotlin/jvm/internal/MutablePropertyReference0;)Lkotlin/reflect/KMutableProperty0;
public fun mutableProperty1 (Lkotlin/jvm/internal/MutablePropertyReference1;)Lkotlin/reflect/KMutableProperty1;
public fun mutableProperty2 (Lkotlin/jvm/internal/MutablePropertyReference2;)Lkotlin/reflect/KMutableProperty2;
public fun nothingType (Lkotlin/reflect/KType;)Lkotlin/reflect/KType;
public fun platformType (Lkotlin/reflect/KType;Lkotlin/reflect/KType;)Lkotlin/reflect/KType;
public fun property0 (Lkotlin/jvm/internal/PropertyReference0;)Lkotlin/reflect/KProperty0;
public fun property1 (Lkotlin/jvm/internal/PropertyReference1;)Lkotlin/reflect/KProperty1;
@@ -4123,19 +4125,26 @@ public final class kotlin/jvm/internal/TypeParameterReference$Companion {
}
public final class kotlin/jvm/internal/TypeReference : kotlin/reflect/KType {
public static final field Companion Lkotlin/jvm/internal/TypeReference$Companion;
public static final field IS_MARKED_NULLABLE I
public static final field IS_MUTABLE_COLLECTION_TYPE I
public static final field IS_NOTHING_TYPE I
public fun <init> (Lkotlin/reflect/KClassifier;Ljava/util/List;Lkotlin/reflect/KType;I)V
public fun <init> (Lkotlin/reflect/KClassifier;Ljava/util/List;Z)V
public fun <init> (Lkotlin/reflect/KClassifier;Ljava/util/List;ZLkotlin/reflect/KType;Z)V
public fun equals (Ljava/lang/Object;)Z
public fun getAnnotations ()Ljava/util/List;
public fun getArguments ()Ljava/util/List;
public fun getClassifier ()Lkotlin/reflect/KClassifier;
public final fun getMutableCollectionType$kotlin_stdlib ()Z
public final fun getFlags$kotlin_stdlib ()I
public final fun getPlatformTypeUpperBound$kotlin_stdlib ()Lkotlin/reflect/KType;
public fun hashCode ()I
public fun isMarkedNullable ()Z
public fun toString ()Ljava/lang/String;
}
public final class kotlin/jvm/internal/TypeReference$Companion {
}
public abstract interface class kotlin/jvm/internal/markers/KMappedMarker {
}