Support serialization of builtins with ExperimentalStdlibApi

This will allow to remove OptIn and ExperimentalStdlibApi from
serialized builtins after bootstrap.

 #KT-53073
This commit is contained in:
Alexander Udalov
2022-08-24 01:46:37 +02:00
parent 686cd82327
commit ed6fe15e07
11 changed files with 143 additions and 101 deletions
@@ -16,25 +16,43 @@
package org.jetbrains.kotlin.serialization.builtins
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.builtins.BuiltInsBinaryVersion
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
import org.jetbrains.kotlin.serialization.AnnotationSerializer
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.typeUtil.isUnresolvedType
class BuiltInsSerializerExtension : KotlinSerializerExtensionBase(BuiltInSerializerProtocol) {
private val shortNameToClassId = mapOf(
"IntRange" to "kotlin/ranges/IntRange",
"LongRange" to "kotlin/ranges/LongRange",
"CharRange" to "kotlin/ranges/CharRange"
"CharRange" to "kotlin/ranges/CharRange",
"ExperimentalStdlibApi" to "kotlin/ExperimentalStdlibApi",
)
private val ignoredAnnotationShortNames = setOf(
"JvmStatic", "JvmField", "OptIn",
)
override fun createAnnotationSerializer(): AnnotationSerializer = object : AnnotationSerializer(stringTable) {
override fun ignoreAnnotation(type: KotlinType): Boolean =
type.presentableName == "JvmStatic" || type.presentableName == "JvmField" || super.ignoreAnnotation(type)
override fun getAnnotationClassId(annotation: AnnotationDescriptor): ClassId? {
val type = annotation.type
val annotationClass = annotation.annotationClass ?: error("Annotation type is not a class: $type")
if (ErrorUtils.isError(annotationClass)) {
if (type.presentableName in ignoredAnnotationShortNames) return null
return ClassId.fromString(resolveUnresolvedType(type))
}
return annotationClass.classId
}
}
override val metadataVersion: BinaryVersion
@@ -43,12 +61,17 @@ class BuiltInsSerializerExtension : KotlinSerializerExtensionBase(BuiltInSeriali
override fun shouldUseTypeTable(): Boolean = true
override fun serializeErrorType(type: KotlinType, builder: ProtoBuf.Type.Builder) {
val className = shortNameToClassId[type.presentableName]
?: throw UnsupportedOperationException("Unsupported unresolved type: ${type.unwrap()}")
val className = resolveUnresolvedType(type)
builder.className = stringTable.getQualifiedClassNameIndex(className, false)
}
private fun resolveUnresolvedType(type: KotlinType): String =
shortNameToClassId[type.presentableName]
?: throw UnsupportedOperationException(
"Unsupported unresolved type: ${type.unwrap()}.\n" +
"Consider adding it to `BuiltInsSerializerExtension.shortNameToClassId`."
)
private val KotlinType.presentableName: String
get() {
val unwrapped = unwrap()
@@ -24,20 +24,16 @@ import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value
import org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type
import org.jetbrains.kotlin.metadata.deserialization.Flags
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.resolve.constants.*
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
open class AnnotationSerializer(private val stringTable: DescriptorAwareStringTable) {
fun serializeAnnotation(annotation: AnnotationDescriptor): ProtoBuf.Annotation? = ProtoBuf.Annotation.newBuilder().apply {
val annotationClass = annotation.annotationClass ?: error("Annotation type is not a class: ${annotation.type}")
if (ErrorUtils.isError(annotationClass)) {
if (ignoreAnnotation(annotation.type)) return null
error("Unresolved annotation type: ${annotation.type} at ${annotation.source.containingFile}")
}
id = stringTable.getFqNameIndex(annotationClass)
val classId = getAnnotationClassId(annotation) ?: return null
id = stringTable.getQualifiedClassNameIndex(classId)
for ((name, value) in annotation.allValueArguments) {
val argument = ProtoBuf.Annotation.Argument.newBuilder()
@@ -47,6 +43,15 @@ open class AnnotationSerializer(private val stringTable: DescriptorAwareStringTa
}
}.build()
protected open fun getAnnotationClassId(annotation: AnnotationDescriptor): ClassId? {
val annotationClass = annotation.annotationClass ?: error("Annotation type is not a class: ${annotation.type}")
if (ErrorUtils.isError(annotationClass)) {
error("Unresolved annotation type: ${annotation.type} at ${annotation.source.containingFile}")
}
return annotationClass.classId
}
fun valueProto(constant: ConstantValue<*>): Value.Builder = Value.newBuilder().apply {
constant.accept(object : AnnotationArgumentVisitor<Unit, Unit> {
override fun visitAnnotationValue(value: AnnotationValue, data: Unit) {
@@ -175,6 +180,4 @@ open class AnnotationSerializer(private val stringTable: DescriptorAwareStringTa
}
}, Unit)
}
protected open fun ignoreAnnotation(type: KotlinType): Boolean = false
}
@@ -36,7 +36,7 @@ internal final class CharProgressionIterator : kotlin.collections.CharIterator {
public final class CharRange : kotlin.ranges.CharProgression, kotlin.ranges.ClosedRange<kotlin.Char>, kotlin.ranges.OpenEndRange<kotlin.Char> {
/*primary*/ public constructor CharRange(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Char
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Char
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Char
public open override /*1*/ val endInclusive: kotlin.Char
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Char
@@ -104,7 +104,7 @@ internal final class IntProgressionIterator : kotlin.collections.IntIterator {
public final class IntRange : kotlin.ranges.IntProgression, kotlin.ranges.ClosedRange<kotlin.Int>, kotlin.ranges.OpenEndRange<kotlin.Int> {
/*primary*/ public constructor IntRange(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Int
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Int
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Int
public open override /*1*/ val endInclusive: kotlin.Int
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Int
@@ -163,7 +163,7 @@ internal final class LongProgressionIterator : kotlin.collections.LongIterator {
public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.ClosedRange<kotlin.Long>, kotlin.ranges.OpenEndRange<kotlin.Long> {
/*primary*/ public constructor LongRange(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Long
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Long
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Long
public open override /*1*/ val endInclusive: kotlin.Long
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Long
@@ -186,7 +186,7 @@ public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.Clos
}
}
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
@kotlin.SinceKotlin(version = "1.7") public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endExclusive: T
public abstract fun `<get-endExclusive>`(): T
public abstract val start: T
+17 -17
View File
@@ -87,10 +87,10 @@ public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte> {
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -145,7 +145,7 @@ public final class Char : kotlin.Comparable<kotlin.Char> {
@kotlin.internal.IntrinsicConstEvaluation public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Char
@kotlin.internal.IntrinsicConstEvaluation public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Char
public final operator fun rangeTo(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toByte()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toByte(): kotlin.Byte
@kotlin.internal.IntrinsicConstEvaluation public final fun toChar(): kotlin.Char
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toDouble()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toDouble(): kotlin.Double
@@ -472,10 +472,10 @@ public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int> {
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -560,10 +560,10 @@ public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long> {
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Long
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -710,10 +710,10 @@ public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short> {
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
+4 -4
View File
@@ -36,7 +36,7 @@ internal final class CharProgressionIterator : kotlin.collections.CharIterator {
public final class CharRange : kotlin.ranges.CharProgression, kotlin.ranges.ClosedRange<kotlin.Char>, kotlin.ranges.OpenEndRange<kotlin.Char> {
/*primary*/ public constructor CharRange(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Char
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Char
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Char
public open override /*1*/ val endInclusive: kotlin.Char
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Char
@@ -104,7 +104,7 @@ internal final class IntProgressionIterator : kotlin.collections.IntIterator {
public final class IntRange : kotlin.ranges.IntProgression, kotlin.ranges.ClosedRange<kotlin.Int>, kotlin.ranges.OpenEndRange<kotlin.Int> {
/*primary*/ public constructor IntRange(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Int
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Int
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Int
public open override /*1*/ val endInclusive: kotlin.Int
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Int
@@ -163,7 +163,7 @@ internal final class LongProgressionIterator : kotlin.collections.LongIterator {
public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.ClosedRange<kotlin.Long>, kotlin.ranges.OpenEndRange<kotlin.Long> {
/*primary*/ public constructor LongRange(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Long
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Long
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Long
public open override /*1*/ val endInclusive: kotlin.Long
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Long
@@ -186,7 +186,7 @@ public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.Clos
}
}
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
@kotlin.SinceKotlin(version = "1.7") public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endExclusive: T
public abstract fun `<get-endExclusive>`(): T
public abstract val start: T
+17 -17
View File
@@ -89,10 +89,10 @@ public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -148,7 +148,7 @@ public final class Char : kotlin.Comparable<kotlin.Char>, java.io.Serializable {
@kotlin.internal.IntrinsicConstEvaluation public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Char
@kotlin.internal.IntrinsicConstEvaluation public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Char
public final operator fun rangeTo(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toByte()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toByte(): kotlin.Byte
@kotlin.internal.IntrinsicConstEvaluation public final fun toChar(): kotlin.Char
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toDouble()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toDouble(): kotlin.Double
@@ -486,10 +486,10 @@ public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.S
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -575,10 +575,10 @@ public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Long
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -728,10 +728,10 @@ public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
+4 -4
View File
@@ -39,7 +39,7 @@ internal final class CharProgressionIterator : kotlin.collections.CharIterator {
public final class CharRange : kotlin.ranges.CharProgression, kotlin.ranges.ClosedRange<kotlin.Char>, kotlin.ranges.OpenEndRange<kotlin.Char> {
/*primary*/ public constructor CharRange(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Char
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Char
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Char
public open override /*1*/ val endInclusive: kotlin.Char
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Char
@@ -112,7 +112,7 @@ internal final class IntProgressionIterator : kotlin.collections.IntIterator {
public final class IntRange : kotlin.ranges.IntProgression, kotlin.ranges.ClosedRange<kotlin.Int>, kotlin.ranges.OpenEndRange<kotlin.Int> {
/*primary*/ public constructor IntRange(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Int
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Int
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Int
public open override /*1*/ val endInclusive: kotlin.Int
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Int
@@ -176,7 +176,7 @@ internal final class LongProgressionIterator : kotlin.collections.LongIterator {
public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.ClosedRange<kotlin.Long>, kotlin.ranges.OpenEndRange<kotlin.Long> {
/*primary*/ public constructor LongRange(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Long
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Long
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Long
public open override /*1*/ val endInclusive: kotlin.Long
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Long
@@ -201,7 +201,7 @@ public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.Clos
}
}
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
@kotlin.SinceKotlin(version = "1.7") public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endExclusive: T
public abstract fun `<get-endExclusive>`(): T
public abstract val start: T
+17 -17
View File
@@ -89,10 +89,10 @@ public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -148,7 +148,7 @@ public final class Char : kotlin.Comparable<kotlin.Char>, java.io.Serializable {
@kotlin.internal.IntrinsicConstEvaluation public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Char
@kotlin.internal.IntrinsicConstEvaluation public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Char
public final operator fun rangeTo(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toByte()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toByte(): kotlin.Byte
@kotlin.internal.IntrinsicConstEvaluation public final fun toChar(): kotlin.Char
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toDouble()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toDouble(): kotlin.Double
@@ -488,10 +488,10 @@ public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.S
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -577,10 +577,10 @@ public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Long
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -730,10 +730,10 @@ public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -36,7 +36,7 @@ internal final class CharProgressionIterator : kotlin.collections.CharIterator {
public final class CharRange : kotlin.ranges.CharProgression, kotlin.ranges.ClosedRange<kotlin.Char>, kotlin.ranges.OpenEndRange<kotlin.Char> {
/*primary*/ public constructor CharRange(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Char
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Char type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Char
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Char
public open override /*1*/ val endInclusive: kotlin.Char
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Char
@@ -104,7 +104,7 @@ internal final class IntProgressionIterator : kotlin.collections.IntIterator {
public final class IntRange : kotlin.ranges.IntProgression, kotlin.ranges.ClosedRange<kotlin.Int>, kotlin.ranges.OpenEndRange<kotlin.Int> {
/*primary*/ public constructor IntRange(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Int
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Int type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Int
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Int
public open override /*1*/ val endInclusive: kotlin.Int
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Int
@@ -163,7 +163,7 @@ internal final class LongProgressionIterator : kotlin.collections.LongIterator {
public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.ClosedRange<kotlin.Long>, kotlin.ranges.OpenEndRange<kotlin.Long> {
/*primary*/ public constructor LongRange(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long)
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public open override /*1*/ val endExclusive: kotlin.Long
@kotlin.Deprecated(message = "Can throw an exception when it's impossible to represent the value with Long type, for example, when the range includes MAX_VALUE. It's recommended to use 'endInclusive' property that doesn't throw.") @kotlin.SinceKotlin(version = "1.7") public open override /*1*/ val endExclusive: kotlin.Long
public open override /*1*/ fun `<get-endExclusive>`(): kotlin.Long
public open override /*1*/ val endInclusive: kotlin.Long
public open override /*1*/ fun `<get-endInclusive>`(): kotlin.Long
@@ -186,7 +186,7 @@ public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.Clos
}
}
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
@kotlin.SinceKotlin(version = "1.7") public interface OpenEndRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endExclusive: T
public abstract fun `<get-endExclusive>`(): T
public abstract val start: T
+17 -17
View File
@@ -89,10 +89,10 @@ public final class Byte : kotlin.Number, kotlin.Comparable<kotlin.Byte>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -148,7 +148,7 @@ public final class Char : kotlin.Comparable<kotlin.Char>, java.io.Serializable {
@kotlin.internal.IntrinsicConstEvaluation public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Char
@kotlin.internal.IntrinsicConstEvaluation public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Char
public final operator fun rangeTo(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toByte()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toByte(): kotlin.Byte
@kotlin.internal.IntrinsicConstEvaluation public final fun toChar(): kotlin.Char
@kotlin.Deprecated(message = "Conversion of Char to Number is deprecated. Use Char.code property instead.", replaceWith = kotlin.ReplaceWith(expression = "this.code.toDouble()", imports = {})) @kotlin.DeprecatedSinceKotlin(warningSince = "1.5") @kotlin.internal.IntrinsicConstEvaluation public final fun toDouble(): kotlin.Double
@@ -486,10 +486,10 @@ public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, java.io.S
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -575,10 +575,10 @@ public final class Long : kotlin.Number, kotlin.Comparable<kotlin.Long>, java.io
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Long
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -728,10 +728,10 @@ public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, java.
public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") @kotlin.ExperimentalStdlibApi public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange
@kotlin.SinceKotlin(version = "1.7") public final operator fun rangeUntil(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Byte): kotlin.Int
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Double): kotlin.Double
@kotlin.SinceKotlin(version = "1.1") @kotlin.internal.IntrinsicConstEvaluation public final operator fun rem(/*0*/ other: kotlin.Float): kotlin.Float
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAME
import org.jetbrains.kotlin.builtins.StandardNames.COLLECTIONS_PACKAGE_FQ_NAME
import org.jetbrains.kotlin.builtins.StandardNames.RANGES_PACKAGE_FQ_NAME
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.descriptors.packageFragments
import org.jetbrains.kotlin.renderer.AnnotationArgumentsRenderingPolicy
@@ -24,6 +25,7 @@ import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparatorAdaptor
import org.jetbrains.kotlin.types.isError
import java.io.File
abstract class AbstractBuiltInsWithJDKMembersTest : KotlinTestWithEnvironment() {
@@ -60,9 +62,23 @@ abstract class AbstractBuiltInsWithJDKMembersTest : KotlinTestWithEnvironment()
annotationArgumentsRenderingPolicy = AnnotationArgumentsRenderingPolicy.UNLESS_EMPTY
modifiers = DescriptorRendererModifier.ALL
excludedTypeAnnotationClasses = setOf(StandardNames.FqNames.unsafeVariance)
annotationFilter = { !it.isSourceAnnotation }
annotationFilter = ::isSignificantAnnotation
}
)
}
private fun isSignificantAnnotation(annotation: AnnotationDescriptor): Boolean {
// Do not render annotations with error classifiers. Sometimes builtins reference annotations with missing classes, e.g. @OptIn.
if (annotation.type.isError) return false
// Do not render SOURCE-retention annotations because they are not serialized to metadata.
if (annotation.isSourceAnnotation) return false
// Do not render @ExperimentalStdlibApi, because this annotation is serialized via a hack in BuiltInsSerializerExtension, but
// when analyzing sources, it's unresolved (as should be) and thus has error type, so it's filtered out.
if (annotation.fqName?.asString() == "kotlin.ExperimentalStdlibApi") return false
return true
}
}
}