Load additional built-in classes constructors from JDK
#KT-9194 In Progress #KT-5175 In Progress #KT-10370 In Progress #KT-7127 In Progress
This commit is contained in:
@@ -33,6 +33,7 @@ public final class Array</*0*/ T> : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, java.io.Serializable {
|
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Boolean()
|
/*primary*/ private constructor Boolean()
|
||||||
|
public constructor Boolean(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Boolean): kotlin.Boolean
|
public final infix fun and(/*0*/ other: kotlin.Boolean): kotlin.Boolean
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Boolean): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Boolean): kotlin.Int
|
||||||
public final operator fun not(): kotlin.Boolean
|
public final operator fun not(): kotlin.Boolean
|
||||||
@@ -53,6 +54,7 @@ public final class BooleanArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io.Serializable {
|
public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Byte()
|
/*primary*/ private constructor Byte()
|
||||||
|
public constructor Byte(/*0*/ p0: kotlin.String!)
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -219,6 +221,7 @@ public final enum class DeprecationLevel : kotlin.Enum<kotlin.DeprecationLevel>
|
|||||||
|
|
||||||
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, java.io.Serializable {
|
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Double()
|
/*primary*/ private constructor Double()
|
||||||
|
public constructor Double(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -315,6 +318,8 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, jav
|
|||||||
|
|
||||||
public final class Float : kotlin.Number, kotlin.Comparable<kotlin.Float>, java.io.Serializable {
|
public final class Float : kotlin.Number, kotlin.Comparable<kotlin.Float>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Float()
|
/*primary*/ private constructor Float()
|
||||||
|
public constructor Float(/*0*/ p0: kotlin.Double)
|
||||||
|
public constructor Float(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -394,6 +399,7 @@ public interface Function</*0*/ out R> {
|
|||||||
|
|
||||||
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.Serializable {
|
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Int()
|
/*primary*/ private constructor Int()
|
||||||
|
public constructor Int(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Int): kotlin.Int
|
public final infix fun and(/*0*/ other: kotlin.Int): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
@@ -475,6 +481,7 @@ public final class IntArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io.Serializable {
|
public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Long()
|
/*primary*/ private constructor Long()
|
||||||
|
public constructor Long(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Long): kotlin.Long
|
public final infix fun and(/*0*/ other: kotlin.Long): kotlin.Long
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
@@ -579,6 +586,7 @@ public abstract class Number : kotlin.Any, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.io.Serializable {
|
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Short()
|
/*primary*/ private constructor Short()
|
||||||
|
public constructor Short(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -653,6 +661,17 @@ public final class ShortArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable {
|
public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable {
|
||||||
/*primary*/ public constructor String()
|
/*primary*/ public constructor String()
|
||||||
|
public constructor String(/*0*/ p0: java.lang.StringBuffer!)
|
||||||
|
public constructor String(/*0*/ p0: java.lang.StringBuilder!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: java.nio.charset.Charset!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int, /*3*/ p3: java.nio.charset.Charset!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int, /*3*/ p3: kotlin.String!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.String!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.CharArray!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.CharArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.IntArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
public open override /*1*/ val length: kotlin.Int
|
public open override /*1*/ val length: kotlin.Int
|
||||||
public open override /*1*/ fun <get-length>(): kotlin.Int
|
public open override /*1*/ fun <get-length>(): kotlin.Int
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.String): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.String): kotlin.Int
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public final class Array</*0*/ T> : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, java.io.Serializable {
|
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Boolean()
|
/*primary*/ private constructor Boolean()
|
||||||
|
public constructor Boolean(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Boolean): kotlin.Boolean
|
public final infix fun and(/*0*/ other: kotlin.Boolean): kotlin.Boolean
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Boolean): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Boolean): kotlin.Int
|
||||||
public final operator fun not(): kotlin.Boolean
|
public final operator fun not(): kotlin.Boolean
|
||||||
@@ -53,6 +54,7 @@ public final class BooleanArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io.Serializable {
|
public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Byte()
|
/*primary*/ private constructor Byte()
|
||||||
|
public constructor Byte(/*0*/ p0: kotlin.String!)
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -221,6 +223,7 @@ public final enum class DeprecationLevel : kotlin.Enum<kotlin.DeprecationLevel>
|
|||||||
|
|
||||||
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, java.io.Serializable {
|
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Double()
|
/*primary*/ private constructor Double()
|
||||||
|
public constructor Double(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -317,6 +320,8 @@ public abstract class Enum</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, jav
|
|||||||
|
|
||||||
public final class Float : kotlin.Number, kotlin.Comparable<kotlin.Float>, java.io.Serializable {
|
public final class Float : kotlin.Number, kotlin.Comparable<kotlin.Float>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Float()
|
/*primary*/ private constructor Float()
|
||||||
|
public constructor Float(/*0*/ p0: kotlin.Double)
|
||||||
|
public constructor Float(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -396,6 +401,7 @@ public interface Function</*0*/ out R> {
|
|||||||
|
|
||||||
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.Serializable {
|
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Int()
|
/*primary*/ private constructor Int()
|
||||||
|
public constructor Int(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Int): kotlin.Int
|
public final infix fun and(/*0*/ other: kotlin.Int): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
@@ -477,6 +483,7 @@ public final class IntArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io.Serializable {
|
public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Long()
|
/*primary*/ private constructor Long()
|
||||||
|
public constructor Long(/*0*/ p0: kotlin.String!)
|
||||||
public final infix fun and(/*0*/ other: kotlin.Long): kotlin.Long
|
public final infix fun and(/*0*/ other: kotlin.Long): kotlin.Long
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
@@ -581,6 +588,7 @@ public abstract class Number : kotlin.Any, java.io.Serializable {
|
|||||||
|
|
||||||
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.io.Serializable {
|
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.io.Serializable {
|
||||||
/*primary*/ private constructor Short()
|
/*primary*/ private constructor Short()
|
||||||
|
public constructor Short(/*0*/ p0: kotlin.String!)
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int
|
||||||
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int
|
||||||
@@ -655,6 +663,17 @@ public final class ShortArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
|
|
||||||
public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable {
|
public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable {
|
||||||
/*primary*/ public constructor String()
|
/*primary*/ public constructor String()
|
||||||
|
public constructor String(/*0*/ p0: java.lang.StringBuffer!)
|
||||||
|
public constructor String(/*0*/ p0: java.lang.StringBuilder!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: java.nio.charset.Charset!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int, /*3*/ p3: java.nio.charset.Charset!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int, /*3*/ p3: kotlin.String!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.ByteArray!, /*1*/ p1: kotlin.String!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.CharArray!)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.CharArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
|
public constructor String(/*0*/ p0: kotlin.IntArray!, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.Int)
|
||||||
public open override /*1*/ val length: kotlin.Int
|
public open override /*1*/ val length: kotlin.Int
|
||||||
public open override /*1*/ fun <get-length>(): kotlin.Int
|
public open override /*1*/ fun <get-length>(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun chars(): java.util.stream.IntStream!
|
public open override /*1*/ /*fake_override*/ fun chars(): java.util.stream.IntStream!
|
||||||
@@ -677,6 +696,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
|||||||
|
|
||||||
public open class Throwable : kotlin.Any, java.io.Serializable {
|
public open class Throwable : kotlin.Any, java.io.Serializable {
|
||||||
public constructor Throwable()
|
public constructor Throwable()
|
||||||
|
protected/*protected and package*/ constructor Throwable(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Throwable!, /*2*/ p2: kotlin.Boolean, /*3*/ p3: kotlin.Boolean)
|
||||||
public constructor Throwable(/*0*/ message: kotlin.String?)
|
public constructor Throwable(/*0*/ message: kotlin.String?)
|
||||||
/*primary*/ public constructor Throwable(/*0*/ message: kotlin.String?, /*1*/ cause: kotlin.Throwable?)
|
/*primary*/ public constructor Throwable(/*0*/ message: kotlin.String?, /*1*/ cause: kotlin.Throwable?)
|
||||||
public constructor Throwable(/*0*/ cause: kotlin.Throwable?)
|
public constructor Throwable(/*0*/ cause: kotlin.Throwable?)
|
||||||
|
|||||||
+53
-14
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.load.kotlin
|
package org.jetbrains.kotlin.load.kotlin
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
||||||
@@ -31,6 +32,7 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||||
import org.jetbrains.kotlin.platform.createMappedTypeParametersSubstitution
|
import org.jetbrains.kotlin.platform.createMappedTypeParametersSubstitution
|
||||||
|
import org.jetbrains.kotlin.resolve.OverridingUtil
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||||
@@ -43,6 +45,7 @@ import org.jetbrains.kotlin.types.KotlinType
|
|||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.utils.SmartSet
|
import org.jetbrains.kotlin.utils.SmartSet
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.check
|
import org.jetbrains.kotlin.utils.addToStdlib.check
|
||||||
|
import org.jetbrains.kotlin.utils.sure
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -50,6 +53,7 @@ open class BuiltInClassesAreSerializableOnJvm(
|
|||||||
private val moduleDescriptor: ModuleDescriptor,
|
private val moduleDescriptor: ModuleDescriptor,
|
||||||
deferredOwnerModuleDescriptor: () -> ModuleDescriptor
|
deferredOwnerModuleDescriptor: () -> ModuleDescriptor
|
||||||
) : AdditionalClassPartsProvider {
|
) : AdditionalClassPartsProvider {
|
||||||
|
private val j2kClassMap = JavaToKotlinClassMap.INSTANCE
|
||||||
|
|
||||||
private val ownerModuleDescriptor: ModuleDescriptor by lazy(deferredOwnerModuleDescriptor)
|
private val ownerModuleDescriptor: ModuleDescriptor by lazy(deferredOwnerModuleDescriptor)
|
||||||
|
|
||||||
@@ -106,25 +110,14 @@ open class BuiltInClassesAreSerializableOnJvm(
|
|||||||
classDescriptor: DeserializedClassDescriptor,
|
classDescriptor: DeserializedClassDescriptor,
|
||||||
functionsByScope: (MemberScope) -> Collection<SimpleFunctionDescriptor>
|
functionsByScope: (MemberScope) -> Collection<SimpleFunctionDescriptor>
|
||||||
): Collection<SimpleFunctionDescriptor> {
|
): Collection<SimpleFunctionDescriptor> {
|
||||||
// Prevents recursive dependency: memberScope(Any) -> memberScope(Object) -> memberScope(Any)
|
val javaAnalogueDescriptor = classDescriptor.getJavaAnalogue() ?: return emptyList()
|
||||||
// No additional members should be added to Any
|
|
||||||
if (classDescriptor.isAny) return emptyList()
|
|
||||||
|
|
||||||
val fqName = classDescriptor.fqNameUnsafe.check { it.isSafe }?.toSafe() ?: return emptyList()
|
|
||||||
|
|
||||||
val j2kClassMap = JavaToKotlinClassMap.INSTANCE
|
|
||||||
val javaAnalogueFqName = j2kClassMap.mapKotlinToJava(fqName.toUnsafe())?.asSingleFqName() ?: return emptyList()
|
|
||||||
|
|
||||||
if (javaAnalogueFqName in IGNORE_BY_DEFAULT_CLASS_FQ_NAMES) return emptyList()
|
|
||||||
|
|
||||||
val javaAnalogueDescriptor =
|
|
||||||
ownerModuleDescriptor.resolveClassByFqName(javaAnalogueFqName, NoLookupLocation.FROM_BUILTINS) as? LazyJavaClassDescriptor
|
|
||||||
?: return emptyList()
|
|
||||||
|
|
||||||
val platformClassDescriptors = j2kClassMap.mapPlatformClass(javaAnalogueDescriptor.fqNameSafe, DefaultBuiltIns.Instance)
|
val platformClassDescriptors = j2kClassMap.mapPlatformClass(javaAnalogueDescriptor.fqNameSafe, DefaultBuiltIns.Instance)
|
||||||
val kotlinMutableClassIfContainer = platformClassDescriptors.lastOrNull() ?: return emptyList()
|
val kotlinMutableClassIfContainer = platformClassDescriptors.lastOrNull() ?: return emptyList()
|
||||||
val platformVersions = SmartSet.create(platformClassDescriptors.map { it.fqNameSafe })
|
val platformVersions = SmartSet.create(platformClassDescriptors.map { it.fqNameSafe })
|
||||||
|
|
||||||
|
if (javaAnalogueDescriptor.fqNameSafe in IGNORE_BY_DEFAULT_CLASS_FQ_NAMES) return emptyList()
|
||||||
|
|
||||||
val isMutable = j2kClassMap.isMutable(classDescriptor)
|
val isMutable = j2kClassMap.isMutable(classDescriptor)
|
||||||
|
|
||||||
val fakeJavaClassDescriptor =
|
val fakeJavaClassDescriptor =
|
||||||
@@ -150,6 +143,52 @@ open class BuiltInClassesAreSerializableOnJvm(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun ClassDescriptor.getJavaAnalogue(): LazyJavaClassDescriptor? {
|
||||||
|
// Prevents recursive dependency: memberScope(Any) -> memberScope(Object) -> memberScope(Any)
|
||||||
|
// No additional members should be added to Any
|
||||||
|
if (isAny) return null
|
||||||
|
|
||||||
|
val fqName = fqNameUnsafe.check { it.isSafe }?.toSafe() ?: return null
|
||||||
|
val javaAnalogueFqName = j2kClassMap.mapKotlinToJava(fqName.toUnsafe())?.asSingleFqName() ?: return null
|
||||||
|
|
||||||
|
return ownerModuleDescriptor.resolveClassByFqName(javaAnalogueFqName, NoLookupLocation.FROM_BUILTINS) as? LazyJavaClassDescriptor
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getConstructors(classDescriptor: DeserializedClassDescriptor): Collection<ConstructorDescriptor> {
|
||||||
|
if (classDescriptor.kind != ClassKind.CLASS) return emptyList()
|
||||||
|
|
||||||
|
val javaAnalogueDescriptor = classDescriptor.getJavaAnalogue() ?: return emptyList()
|
||||||
|
|
||||||
|
val defaultKotlinVersion =
|
||||||
|
j2kClassMap.mapJavaToKotlin(javaAnalogueDescriptor.fqNameSafe, DefaultBuiltIns.Instance) ?: return emptyList()
|
||||||
|
|
||||||
|
val substitutor = createMappedTypeParametersSubstitution(defaultKotlinVersion, javaAnalogueDescriptor).buildSubstitutor()
|
||||||
|
|
||||||
|
fun ConstructorDescriptor.isEffectivelyTheSameAs(javaConstructor: ConstructorDescriptor) =
|
||||||
|
OverridingUtil.getBothWaysOverridability(this, javaConstructor.substitute(substitutor)) ==
|
||||||
|
OverridingUtil.OverrideCompatibilityInfo.Result.OVERRIDABLE
|
||||||
|
|
||||||
|
return javaAnalogueDescriptor.constructors.filter {
|
||||||
|
javaConstructor ->
|
||||||
|
javaConstructor.visibility.isPublicAPI &&
|
||||||
|
defaultKotlinVersion.constructors.none { it.isEffectivelyTheSameAs(javaConstructor) } &&
|
||||||
|
!javaConstructor.isTrivialCopyConstructorFor(classDescriptor) &&
|
||||||
|
!KotlinBuiltIns.isDeprecated(javaConstructor)
|
||||||
|
}.map {
|
||||||
|
javaConstructor ->
|
||||||
|
javaConstructor.newCopyBuilder().apply {
|
||||||
|
setOwner(classDescriptor)
|
||||||
|
setReturnType(classDescriptor.defaultType)
|
||||||
|
setPreserveSourceElement()
|
||||||
|
setSubstitution(substitutor.substitution)
|
||||||
|
}.build() as ConstructorDescriptor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ConstructorDescriptor.isTrivialCopyConstructorFor(classDescriptor: DeserializedClassDescriptor): Boolean
|
||||||
|
= valueParameters.size == 1 &&
|
||||||
|
valueParameters.single().type.constructor.declarationDescriptor?.fqNameUnsafe == classDescriptor.fqNameUnsafe
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun isSerializableInJava(classFqName: FqName): Boolean {
|
fun isSerializableInJava(classFqName: FqName): Boolean {
|
||||||
val fqNameUnsafe = classFqName.toUnsafe()
|
val fqNameUnsafe = classFqName.toUnsafe()
|
||||||
|
|||||||
+3
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.deserialization
|
package org.jetbrains.kotlin.serialization.deserialization
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||||
@@ -24,11 +25,13 @@ import org.jetbrains.kotlin.types.KotlinType
|
|||||||
interface AdditionalClassPartsProvider {
|
interface AdditionalClassPartsProvider {
|
||||||
fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType>
|
fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType>
|
||||||
fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor>
|
fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor>
|
||||||
|
fun getConstructors(classDescriptor: DeserializedClassDescriptor): Collection<ConstructorDescriptor>
|
||||||
fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name>
|
fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name>
|
||||||
|
|
||||||
object None : AdditionalClassPartsProvider {
|
object None : AdditionalClassPartsProvider {
|
||||||
override fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType> = emptyList()
|
override fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType> = emptyList()
|
||||||
override fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor> = emptyList()
|
override fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor> = emptyList()
|
||||||
override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name> = emptyList()
|
override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name> = emptyList()
|
||||||
|
override fun getConstructors(classDescriptor: DeserializedClassDescriptor): Collection<ConstructorDescriptor> = emptyList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -116,7 +116,8 @@ class DeserializedClassDescriptor(
|
|||||||
override fun getUnsubstitutedPrimaryConstructor(): ConstructorDescriptor? = primaryConstructor()
|
override fun getUnsubstitutedPrimaryConstructor(): ConstructorDescriptor? = primaryConstructor()
|
||||||
|
|
||||||
private fun computeConstructors(): Collection<ConstructorDescriptor> =
|
private fun computeConstructors(): Collection<ConstructorDescriptor> =
|
||||||
computeSecondaryConstructors() + getUnsubstitutedPrimaryConstructor().singletonOrEmptyList()
|
computeSecondaryConstructors() + unsubstitutedPrimaryConstructor.singletonOrEmptyList() +
|
||||||
|
c.components.additionalClassPartsProvider.getConstructors(this)
|
||||||
|
|
||||||
private fun computeSecondaryConstructors(): List<ConstructorDescriptor> =
|
private fun computeSecondaryConstructors(): List<ConstructorDescriptor> =
|
||||||
classProto.constructorList.filter { Flags.IS_SECONDARY.get(it.flags) }.map {
|
classProto.constructorList.filter { Flags.IS_SECONDARY.get(it.flags) }.map {
|
||||||
|
|||||||
Reference in New Issue
Block a user