From b839e50ee24e8c3644fb7722fa02fed743512762 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 19 Apr 2019 13:39:26 +0300 Subject: [PATCH] FIR: deserialize annotations (built-ins only, no enums & arrays yet) Problems: enums aren't deserialized correctly; array aren't done at all; Target annotation has no arguments in built-in for some reason. --- .../deserialization/ClassDeserialization.kt | 3 +- .../FirAnnotationDeserializer.kt | 188 +++++++++++++++++ .../deserialization/FirMemberDeserializer.kt | 38 ++-- .../testData/builtIns/kotlin-collections.txt | 4 +- .../fir/resolve/testData/builtIns/kotlin.txt | 192 +++++++++--------- 5 files changed, 305 insertions(+), 120 deletions(-) create mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirAnnotationDeserializer.kt diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index 46b90e1900b..d8bbccdb904 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -47,7 +47,7 @@ fun deserializeClassToSymbol( ?: FirDeserializationContext .createForClass(classId, classProto, nameResolver, session) typeParameters += context.typeDeserializer.ownTypeParameters.map { it.firUnsafe() } - //addAnnotationsFrom(classProto) ? TODO + annotations += context.annotationDeserializer.loadClassAnnotations(classProto) val typeDeserializer = context.typeDeserializer val classDeserializer = context.memberDeserializer @@ -61,7 +61,6 @@ fun deserializeClassToSymbol( FirResolvedTypeRefImpl(session, null, it, false, emptyList()) } - // TODO: properties addDeclarations(classProto.functionList.map(classDeserializer::loadFunction)) addDeclarations(classProto.propertyList.map(classDeserializer::loadProperty)) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirAnnotationDeserializer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirAnnotationDeserializer.kt new file mode 100644 index 00000000000..fe49a504ed7 --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirAnnotationDeserializer.kt @@ -0,0 +1,188 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.deserialization + +import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.declarations.FirConstructor +import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.expressions.impl.* +import org.jetbrains.kotlin.fir.references.FirErrorNamedReference +import org.jetbrains.kotlin.fir.references.FirResolvedCallableReferenceImpl +import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider +import org.jetbrains.kotlin.fir.resolve.constructType +import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols +import org.jetbrains.kotlin.fir.resolve.toSymbol +import org.jetbrains.kotlin.fir.service +import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTagImpl +import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol +import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl +import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl +import org.jetbrains.kotlin.ir.expressions.IrConstKind +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.Type.* +import org.jetbrains.kotlin.metadata.deserialization.Flags +import org.jetbrains.kotlin.metadata.deserialization.NameResolver +import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol +import org.jetbrains.kotlin.serialization.deserialization.getClassId +import org.jetbrains.kotlin.serialization.deserialization.getName + +class FirAnnotationDeserializer( + private val session: FirSession, + private val nameResolver: NameResolver +) { + private val protocol = BuiltInSerializerProtocol + + fun loadClassAnnotations(classProto: ProtoBuf.Class): List { + if (!Flags.HAS_ANNOTATIONS.get(classProto.flags)) return emptyList() + val annotations = classProto.getExtension(protocol.classAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + fun loadFunctionAnnotations(functionProto: ProtoBuf.Function): List { + if (!Flags.HAS_ANNOTATIONS.get(functionProto.flags)) return emptyList() + val annotations = functionProto.getExtension(protocol.functionAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + fun loadPropertyAnnotations(propertyProto: ProtoBuf.Property): List { + if (!Flags.HAS_ANNOTATIONS.get(propertyProto.flags)) return emptyList() + val annotations = propertyProto.getExtension(protocol.propertyAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + fun loadConstructorAnnotations(constructorProto: ProtoBuf.Constructor): List { + if (!Flags.HAS_ANNOTATIONS.get(constructorProto.flags)) return emptyList() + val annotations = constructorProto.getExtension(protocol.constructorAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + fun loadValueParameterAnnotations(valueParameterProto: ProtoBuf.ValueParameter): List { + if (!Flags.HAS_ANNOTATIONS.get(valueParameterProto.flags)) return emptyList() + val annotations = valueParameterProto.getExtension(protocol.parameterAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + fun loadTypeAnnotations(typeProto: ProtoBuf.Type): List { + if (!Flags.HAS_ANNOTATIONS.get(typeProto.flags)) return emptyList() + val annotations = typeProto.getExtension(protocol.typeAnnotation).orEmpty() + return annotations.map { deserializeAnnotation(it) } + } + + private fun deserializeAnnotation(proto: ProtoBuf.Annotation): FirAnnotationCall { + val classId = nameResolver.getClassId(proto.id) + val lookupTag = ConeClassLikeLookupTagImpl(classId) + val symbol = lookupTag.toSymbol(session) + val firAnnotationClass = (symbol as? FirClassSymbol)?.fir + + var arguments = emptyList() + if (proto.argumentCount != 0 && firAnnotationClass?.classKind == ClassKind.ANNOTATION_CLASS) { + val constructor = firAnnotationClass.declarations.firstOrNull { it is FirConstructor } + if (constructor is FirConstructor) { + val parameterByName = constructor.valueParameters.associateBy { it.name } + + arguments = proto.argumentList.mapNotNull { + val name = nameResolver.getName(it.nameId) + val parameter = parameterByName[name] ?: return@mapNotNull null + val value = resolveValue(parameter.returnTypeRef, it.value, nameResolver) ?: return@mapNotNull null + FirNamedArgumentExpressionImpl( + session, null, name, value + ) + } + } + } + + return FirAnnotationCallImpl( + session, null, null, + symbol?.let { + FirResolvedTypeRefImpl( + session, null, it.constructType(emptyList(), isNullable = false), + isMarkedNullable = false, annotations = emptyList() + ) + } ?: FirErrorTypeRefImpl(session, null, "Symbol not found for $classId") + ).apply { + this.arguments += arguments + } + } + + private fun resolveValue( + expectedType: FirTypeRef, value: ProtoBuf.Annotation.Argument.Value, nameResolver: NameResolver + ): FirExpression? { + // TODO: val isUnsigned = Flags.IS_UNSIGNED.get(value.flags) + + val result: FirExpression = when (value.type) { + BYTE -> const(IrConstKind.Byte, value.intValue.toByte()) + CHAR -> const(IrConstKind.Char, value.intValue.toChar()) + SHORT -> const(IrConstKind.Short, value.intValue.toShort()) + INT -> const(IrConstKind.Int, value.intValue.toInt()) + LONG -> const(IrConstKind.Long, value.intValue) + FLOAT -> const(IrConstKind.Float, value.floatValue) + DOUBLE -> const(IrConstKind.Double, value.doubleValue) + BOOLEAN -> const(IrConstKind.Boolean, (value.intValue != 0L)) + STRING -> const(IrConstKind.String, nameResolver.getString(value.stringValue)) + ANNOTATION -> deserializeAnnotation(value.annotation) + CLASS -> FirGetClassCallImpl(session, null).apply { + val classId = nameResolver.getClassId(value.classId) + val lookupTag = ConeClassLikeLookupTagImpl(classId) + val symbol = lookupTag.toSymbol(this@FirAnnotationDeserializer.session) ?: return null + val referencedType = symbol.constructType(emptyArray(), isNullable = false) + arguments += FirClassReferenceExpressionImpl( + this@FirAnnotationDeserializer.session, null, + FirResolvedTypeRefImpl( + this@FirAnnotationDeserializer.session, null, referencedType, + isMarkedNullable = false, annotations = emptyList() + ) + ) + } + ENUM -> FirFunctionCallImpl(session, null).apply { + val classId = nameResolver.getClassId(value.classId) + val entryName = nameResolver.getName(value.enumValueId) + val callableSymbol = + this@FirAnnotationDeserializer.session.service().getClassDeclaredCallableSymbols( + classId, entryName + ).firstOrNull() + this.calleeReference = callableSymbol?.let { + FirResolvedCallableReferenceImpl(this@FirAnnotationDeserializer.session, null, entryName, it) + } ?: FirErrorNamedReference( + this@FirAnnotationDeserializer.session, null, + errorReason = "Strange deserialized enum value: $classId.$entryName" + ) + } +// ARRAY -> { +// val expectedIsArray = KotlinBuiltIns.isArray(expectedType) || KotlinBuiltIns.isPrimitiveArray(expectedType) +// val arrayElements = value.arrayElementList +// +// val actualArrayType = +// if (arrayElements.isNotEmpty()) { +// val actualElementType = resolveArrayElementType(arrayElements.first(), nameResolver) +// builtIns.getPrimitiveArrayKotlinTypeByPrimitiveKotlinType(actualElementType) +// ?: builtIns.getArrayType(Variance.INVARIANT, actualElementType) +// } else { +// // In the case of empty array, no element has the element type, so we fall back to the expected type, if any. +// // This is not very accurate when annotation class has been changed without recompiling clients, +// // but should not in fact matter because the value is empty anyway +// if (expectedIsArray) expectedType else builtIns.getArrayType(Variance.INVARIANT, builtIns.anyType) +// } +// +// val expectedElementType = builtIns.getArrayElementType(if (expectedIsArray) expectedType else actualArrayType) +// +// ConstantValueFactory.createArrayValue( +// arrayElements.map { +// resolveValue(expectedElementType, it, nameResolver) +// }, +// actualArrayType +// ) +// } +// else -> error("Unsupported annotation argument type: ${value.type} (expected $expectedType)") + else -> return null + } + return result + } + + private fun const(kind: IrConstKind, value: T) = FirConstExpressionImpl(session, null, kind, value) +} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt index ad97cbe5f77..263d38571f4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.impl.* -import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub import org.jetbrains.kotlin.fir.resolve.transformers.firUnsafe @@ -18,7 +17,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol -import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl @@ -27,8 +25,6 @@ import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.protobuf.MessageLite -import org.jetbrains.kotlin.serialization.deserialization.AnnotatedCallableKind import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags import org.jetbrains.kotlin.serialization.deserialization.getName import org.jetbrains.kotlin.types.Variance @@ -57,6 +53,8 @@ class FirDeserializationContext( val memberDeserializer: FirMemberDeserializer = FirMemberDeserializer(this) + val annotationDeserializer: FirAnnotationDeserializer = FirAnnotationDeserializer(session, nameResolver) + companion object { fun createForPackage( fqName: FqName, @@ -152,7 +150,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { val callableName = c.nameResolver.getName(proto.name) val symbol = FirPropertySymbol(CallableId(c.packageFqName, c.relativeClassName, callableName)) val local = c.childContext(proto.typeParameterList) - val returnTypeRef = local.typeDeserializer.type(proto.returnType(c.typeTable)).toTypeRef() + val returnTypeRef = proto.returnType(c.typeTable).toTypeRef(local) val getterFlags = if (proto.hasGetterFlags()) proto.getterFlags else flags val setterFlags = if (proto.hasSetterFlags()) proto.setterFlags else flags @@ -169,7 +167,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { false, Flags.IS_CONST.get(flags), Flags.IS_LATEINIT.get(flags), - proto.receiverType(c.typeTable)?.let(local.typeDeserializer::type)?.toTypeRef(), + proto.receiverType(c.typeTable)?.toTypeRef(local), returnTypeRef, Flags.IS_VAR.get(flags), null, @@ -178,6 +176,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { null ).apply { typeParameters += local.typeDeserializer.ownTypeParameters.map { it.firUnsafe() } + annotations += c.annotationDeserializer.loadPropertyAnnotations(proto) } } @@ -213,12 +212,12 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { Flags.IS_TAILREC.get(flags), Flags.IS_EXTERNAL_FUNCTION.get(flags), Flags.IS_SUSPEND.get(flags), - proto.receiverType(c.typeTable)?.let(local.typeDeserializer::type)?.toTypeRef(), - local.typeDeserializer.type(proto.returnType(c.typeTable)).toTypeRef() + proto.receiverType(c.typeTable)?.toTypeRef(local), + proto.returnType(c.typeTable).toTypeRef(local) ).apply { typeParameters += local.typeDeserializer.ownTypeParameters.map { it.firUnsafe() } valueParameters += local.memberDeserializer.valueParameters(proto.valueParameterList) - annotations += getAnnotations(proto, flags, AnnotatedCallableKind.FUNCTION) + annotations += local.annotationDeserializer.loadFunctionAnnotations(proto) } } @@ -272,7 +271,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { }.apply { this.typeParameters += typeParameters valueParameters += local.memberDeserializer.valueParameters(proto.valueParameterList) - annotations += getAnnotations(proto, flags, AnnotatedCallableKind.FUNCTION) + annotations += local.annotationDeserializer.loadConstructorAnnotations(proto) } } @@ -287,28 +286,27 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { private fun valueParameters( valueParameters: List ): List { - return valueParameters.mapIndexed { i, proto -> + return valueParameters.map { proto -> val flags = if (proto.hasFlags()) proto.flags else 0 FirValueParameterImpl( c.session, null, c.nameResolver.getName(proto.name), - c.typeDeserializer.type(proto.type(c.typeTable)).toTypeRef(), + proto.type(c.typeTable).toTypeRef(c), defaultValue(flags), Flags.IS_CROSSINLINE.get(flags), Flags.IS_NOINLINE.get(flags), proto.varargElementType(c.typeTable) != null ).apply { - annotations += emptyList() // TODO: parameter annotations + annotations += c.annotationDeserializer.loadValueParameterAnnotations(proto) } }.toList() } - - // TODO: Annotations - private fun getAnnotations(proto: MessageLite, flags: Int, kind: AnnotatedCallableKind) = emptyList() - - private fun ConeKotlinType.toTypeRef(): FirTypeRef { - // TODO: annotations - return FirResolvedTypeRefImpl(c.session, null, this, nullability.isNullable, emptyList()) + private fun ProtoBuf.Type.toTypeRef(context: FirDeserializationContext): FirTypeRef { + val coneType = context.typeDeserializer.type(this) + return FirResolvedTypeRefImpl( + c.session, null, coneType, coneType.nullability.isNullable, + c.annotationDeserializer.loadTypeAnnotations(this) + ) } } diff --git a/compiler/fir/resolve/testData/builtIns/kotlin-collections.txt b/compiler/fir/resolve/testData/builtIns/kotlin-collections.txt index 447afe44615..e3012be285e 100644 --- a/compiler/fir/resolve/testData/builtIns/kotlin-collections.txt +++ b/compiler/fir/resolve/testData/builtIns/kotlin-collections.txt @@ -135,7 +135,7 @@ public abstract interface Map : R|kotlin/Any| { public abstract operator fun get(key: R|K|): R|V| - public open fun getOrDefault(key: R|K|, defaultValue: R|V|): R|V| + @R|kotlin/SinceKotlin|(version = String(1.1)) @R|kotlin/internal/PlatformDependent|() public open fun getOrDefault(key: R|K|, defaultValue: R|V|): R|V| public abstract fun isEmpty(): R|kotlin/Boolean| @@ -240,7 +240,7 @@ public abstract interface MutableMap : R|kotlin/collections/Map| { public abstract fun remove(key: R|K|): R|V| - public open fun remove(key: R|K|, value: R|V|): R|kotlin/Boolean| + @R|kotlin/SinceKotlin|(version = String(1.1)) @R|kotlin/internal/PlatformDependent|() public open fun remove(key: R|K|, value: R|V|): R|kotlin/Boolean| public abstract val entries: R|kotlin/collections/MutableSet>| public get(): R|kotlin/collections/MutableSet>| diff --git a/compiler/fir/resolve/testData/builtIns/kotlin.txt b/compiler/fir/resolve/testData/builtIns/kotlin.txt index 4ecd38adf2a..1ee5c8a764b 100644 --- a/compiler/fir/resolve/testData/builtIns/kotlin.txt +++ b/compiler/fir/resolve/testData/builtIns/kotlin.txt @@ -12,9 +12,9 @@ public final fun doubleArrayOf(vararg elements: R|kotlin/DoubleArray|): R|kotlin public final inline fun emptyArray(): R|kotlin/Array| -public final inline fun enumValueOf(name: R|kotlin/String|): R|T| +@R|kotlin/SinceKotlin|(version = String(1.1)) public final inline fun enumValueOf(name: R|kotlin/String|): R|T| -public final inline fun enumValues(): R|kotlin/Array| +@R|kotlin/SinceKotlin|(version = String(1.1)) public final inline fun enumValues(): R|kotlin/Array| public final fun floatArrayOf(vararg elements: R|kotlin/FloatArray|): R|kotlin/FloatArray| @@ -69,7 +69,7 @@ public final class Boolean : R|kotlin/Comparable| { private constructor(): R|kotlin/Boolean| - public final companion object Companion : R|kotlin/Any| { + @R|kotlin/SinceKotlin|(version = String(1.3)) public final companion object Companion : R|kotlin/Any| { private constructor(): R|kotlin/Boolean.Companion| } @@ -133,17 +133,17 @@ public final class Byte : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Int| @@ -165,17 +165,17 @@ public final class Byte : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Int| @@ -216,10 +216,10 @@ public final class Byte : R|kotlin/Number|, R|kotlin/Comparable| { public final const val MIN_VALUE: R|kotlin/Byte| public get(): R|kotlin/Byte| - public final const val SIZE_BITS: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BITS: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BYTES: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BYTES: R|kotlin/Int| public get(): R|kotlin/Int| private constructor(): R|kotlin/Byte.Companion| @@ -285,7 +285,7 @@ public final class Char : R|kotlin/Comparable| { public final const val MAX_SURROGATE: R|kotlin/Char| public get(): R|kotlin/Char| - public final const val MAX_VALUE: R|kotlin/Char| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val MAX_VALUE: R|kotlin/Char| public get(): R|kotlin/Char| public final const val MIN_HIGH_SURROGATE: R|kotlin/Char| @@ -297,13 +297,13 @@ public final class Char : R|kotlin/Comparable| { public final const val MIN_SURROGATE: R|kotlin/Char| public get(): R|kotlin/Char| - public final const val MIN_VALUE: R|kotlin/Char| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val MIN_VALUE: R|kotlin/Char| public get(): R|kotlin/Char| - public final const val SIZE_BITS: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BITS: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BYTES: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BYTES: R|kotlin/Int| public get(): R|kotlin/Int| private constructor(): R|kotlin/Char.Companion| @@ -348,7 +348,7 @@ public abstract interface Comparable : R|kotlin/Any| { } -public final annotation class Deprecated : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/MustBeDocumented|() public final annotation class Deprecated : R|kotlin/Annotation| { public final val level: R|kotlin/DeprecationLevel| public get(): R|kotlin/DeprecationLevel| @@ -408,17 +408,17 @@ public final class Double : R|kotlin/Number|, R|kotlin/Comparable public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Double| public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Double| @@ -432,17 +432,17 @@ public final class Double : R|kotlin/Number|, R|kotlin/Comparable public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Double| public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Double| @@ -514,7 +514,7 @@ public final class DoubleArray : R|kotlin/Any| { } -public final annotation class DslMarker : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) @R|kotlin/annotation/MustBeDocumented|() @R|kotlin/SinceKotlin|(version = String(1.1)) public final annotation class DslMarker : R|kotlin/Annotation| { public constructor(): R|kotlin/DslMarker| } @@ -545,7 +545,7 @@ public abstract class Enum : R|kotlin/Comparable| { } -public final annotation class ExtensionFunctionType : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/MustBeDocumented|() public final annotation class ExtensionFunctionType : R|kotlin/Annotation| { public constructor(): R|kotlin/ExtensionFunctionType| } @@ -591,17 +591,17 @@ public final class Float : R|kotlin/Number|, R|kotlin/Comparable| public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Float| public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Float| @@ -615,17 +615,17 @@ public final class Float : R|kotlin/Number|, R|kotlin/Comparable| public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Float| public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Float| @@ -745,17 +745,17 @@ public final class Int : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| public final infix fun or(other: R|kotlin/Int|): R|kotlin/Int| @@ -779,17 +779,17 @@ public final class Int : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| public final infix fun shl(bitCount: R|kotlin/Int|): R|kotlin/Int| @@ -838,10 +838,10 @@ public final class Int : R|kotlin/Number|, R|kotlin/Comparable| { public final const val MIN_VALUE: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BITS: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BITS: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BYTES: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BYTES: R|kotlin/Int| public get(): R|kotlin/Int| private constructor(): R|kotlin/Int.Companion| @@ -911,17 +911,17 @@ public final class Long : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Long| public final infix fun or(other: R|kotlin/Long|): R|kotlin/Long| @@ -945,17 +945,17 @@ public final class Long : R|kotlin/Number|, R|kotlin/Comparable| { public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/LongRange| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Long| public final infix fun shl(bitCount: R|kotlin/Int|): R|kotlin/Long| @@ -1004,10 +1004,10 @@ public final class Long : R|kotlin/Number|, R|kotlin/Comparable| { public final const val MIN_VALUE: R|kotlin/Long| public get(): R|kotlin/Long| - public final const val SIZE_BITS: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BITS: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BYTES: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BYTES: R|kotlin/Int| public get(): R|kotlin/Int| private constructor(): R|kotlin/Long.Companion| @@ -1056,7 +1056,7 @@ public abstract class Number : R|kotlin/Any| { } -public final annotation class ParameterName : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/MustBeDocumented|() @R|kotlin/SinceKotlin|(version = String(1.1)) public final annotation class ParameterName : R|kotlin/Annotation| { public final val name: R|kotlin/String| public get(): R|kotlin/String| @@ -1064,12 +1064,12 @@ public final annotation class ParameterName : R|kotlin/Annotation| { } -public final annotation class PublishedApi : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) @R|kotlin/annotation/MustBeDocumented|() @R|kotlin/SinceKotlin|(version = String(1.1)) public final annotation class PublishedApi : R|kotlin/Annotation| { public constructor(): R|kotlin/PublishedApi| } -public final annotation class ReplaceWith : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) @R|kotlin/annotation/MustBeDocumented|() public final annotation class ReplaceWith : R|kotlin/Annotation| { public final val expression: R|kotlin/String| public get(): R|kotlin/String| @@ -1121,17 +1121,17 @@ public final class Short : R|kotlin/Number|, R|kotlin/Comparable| public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/Deprecated|(message = String(Use rem(other) instead), replaceWith = @R|kotlin/ReplaceWith|(expression = String(rem(other))) , level = #()) public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int| public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Int| @@ -1153,17 +1153,17 @@ public final class Short : R|kotlin/Number|, R|kotlin/Comparable| public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange| - public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double| - public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float| - public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int| - public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long| - public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.1)) public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int| public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Int| @@ -1204,10 +1204,10 @@ public final class Short : R|kotlin/Number|, R|kotlin/Comparable| public final const val MIN_VALUE: R|kotlin/Short| public get(): R|kotlin/Short| - public final const val SIZE_BITS: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BITS: R|kotlin/Int| public get(): R|kotlin/Int| - public final const val SIZE_BYTES: R|kotlin/Int| + @R|kotlin/SinceKotlin|(version = String(1.3)) public final const val SIZE_BYTES: R|kotlin/Int| public get(): R|kotlin/Int| private constructor(): R|kotlin/Short.Companion| @@ -1232,7 +1232,7 @@ public final class ShortArray : R|kotlin/Any| { } -public final annotation class SinceKotlin : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) @R|kotlin/annotation/MustBeDocumented|() public final annotation class SinceKotlin : R|kotlin/Annotation| { public final val version: R|kotlin/String| public get(): R|kotlin/String| @@ -1261,7 +1261,7 @@ public final class String : R|kotlin/Comparable|, R|kotlin/CharSe } -public final annotation class Suppress : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) public final annotation class Suppress : R|kotlin/Annotation| { public final val names: R|kotlin/Array| public get(): R|kotlin/Array| @@ -1293,7 +1293,7 @@ public final object Unit : R|kotlin/Any| { } -public final annotation class UnsafeVariance : R|kotlin/Annotation| { +@R|kotlin/annotation/Target|() @R|kotlin/annotation/Retention|(value = #()) @R|kotlin/annotation/MustBeDocumented|() public final annotation class UnsafeVariance : R|kotlin/Annotation| { public constructor(): R|kotlin/UnsafeVariance| }