diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/caches/NullableMap.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/caches/NullableMap.kt index 7dfbfb15654..a3544028c54 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/caches/NullableMap.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/caches/NullableMap.kt @@ -11,7 +11,8 @@ import org.jetbrains.kotlin.fir.PrivateForInline * [Map] which allows store null values */ @OptIn(PrivateForInline::class) -internal inline class NullableMap(private val map: MutableMap = HashMap()) { +@JvmInline +internal value class NullableMap(private val map: MutableMap = HashMap()) { /** * Get value if it is present in map diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryCoordinates.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryCoordinates.kt index d14e315e504..5b361cd7153 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryCoordinates.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryCoordinates.kt @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.backend.common.serialization.encodings -inline class BinaryCoordinates(private val decoded: BinaryLattice) { +@JvmInline +value class BinaryCoordinates(private val decoded: BinaryLattice) { private fun diff(): Int = decoded.second val startOffset: Int get() = decoded.first diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt index c67b9af9c81..f58821d01e9 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt @@ -17,7 +17,8 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptorVisibility import org.jetbrains.kotlin.serialization.deserialization.memberKind import org.jetbrains.kotlin.types.Variance -inline class ClassFlags(val flags: Long) { +@JvmInline +value class ClassFlags(val flags: Long) { val modality: Modality get() = ProtoEnumFlags.modality(IrFlags.MODALITY.get(flags.toInt())) val visibility: DescriptorVisibility get() = ProtoEnumFlags.descriptorVisibility(IrFlags.VISIBILITY.get(flags.toInt())) @@ -50,7 +51,8 @@ inline class ClassFlags(val flags: Long) { } } -inline class FunctionFlags(val flags: Long) { +@JvmInline +value class FunctionFlags(val flags: Long) { val modality: Modality get() = ProtoEnumFlags.modality(IrFlags.MODALITY.get(flags.toInt())) val visibility: DescriptorVisibility get() = ProtoEnumFlags.descriptorVisibility(IrFlags.VISIBILITY.get(flags.toInt())) @@ -100,7 +102,8 @@ inline class FunctionFlags(val flags: Long) { } } -inline class PropertyFlags(val flags: Long) { +@JvmInline +value class PropertyFlags(val flags: Long) { val modality: Modality get() = ProtoEnumFlags.modality(IrFlags.MODALITY.get(flags.toInt())) val visibility: DescriptorVisibility get() = ProtoEnumFlags.descriptorVisibility(IrFlags.VISIBILITY.get(flags.toInt())) @@ -138,7 +141,8 @@ inline class PropertyFlags(val flags: Long) { } } -inline class ValueParameterFlags(val flags: Long) { +@JvmInline +value class ValueParameterFlags(val flags: Long) { val isCrossInline: Boolean get() = IrFlags.IS_CROSSINLINE.get(flags.toInt()) val isNoInline: Boolean get() = IrFlags.IS_NOINLINE.get(flags.toInt()) @@ -163,7 +167,8 @@ inline class ValueParameterFlags(val flags: Long) { } } -inline class TypeAliasFlags(val flags: Long) { +@JvmInline +value class TypeAliasFlags(val flags: Long) { val visibility: DescriptorVisibility get() = ProtoEnumFlags.descriptorVisibility(IrFlags.VISIBILITY.get(flags.toInt())) val isActual: Boolean get() = IrFlags.IS_ACTUAL.get(flags.toInt()) @@ -180,7 +185,8 @@ inline class TypeAliasFlags(val flags: Long) { } } -inline class TypeParameterFlags(val flags: Long) { +@JvmInline +value class TypeParameterFlags(val flags: Long) { val variance: Variance get() = ProtoEnumFlags.variance(IrFlags.VARIANCE.get(flags.toInt())) val isReified: Boolean get() = IrFlags.IS_REIFIED.get(flags.toInt()) @@ -197,7 +203,8 @@ inline class TypeParameterFlags(val flags: Long) { } } -inline class FieldFlags(val flags: Long) { +@JvmInline +value class FieldFlags(val flags: Long) { val visibility: DescriptorVisibility get() = ProtoEnumFlags.descriptorVisibility(IrFlags.VISIBILITY.get(flags.toInt())) val isFinal: Boolean get() = IrFlags.IS_FINAL.get(flags.toInt()) @@ -216,7 +223,8 @@ inline class FieldFlags(val flags: Long) { } } -inline class LocalVariableFlags(val flags: Long) { +@JvmInline +value class LocalVariableFlags(val flags: Long) { val isVar: Boolean get() = IrFlags.IS_LOCAL_VAR.get(flags.toInt()) val isConst: Boolean get() = IrFlags.IS_LOCAL_CONST.get(flags.toInt()) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryLattice.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryLattice.kt index 09d10b4765f..28968864be9 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryLattice.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryLattice.kt @@ -11,7 +11,8 @@ package org.jetbrains.kotlin.backend.common.serialization.encodings * j = j1.j2.j3.j4 * ij -> i1.j1.i2.j2.i3.j3.i4.j4 */ -inline class BinaryLattice(private val code: Long) { +@JvmInline +value class BinaryLattice(private val code: Long) { val first: Int get() = decodeInt(code) val second: Int get() = decodeInt(code ushr 1) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryNameAndType.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryNameAndType.kt index b385a34201e..f6049d6ed40 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryNameAndType.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryNameAndType.kt @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.backend.common.serialization.encodings -inline class BinaryNameAndType(private val decoded: BinaryLattice) { +@JvmInline +value class BinaryNameAndType(private val decoded: BinaryLattice) { val nameIndex: Int get() = decoded.first val typeIndex: Int get() = decoded.second diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinarySymbolData.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinarySymbolData.kt index 9431c76e35f..e20a1615d41 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinarySymbolData.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinarySymbolData.kt @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.backend.common.serialization.encodings -inline class BinarySymbolData(val code: Long) { +@JvmInline +value class BinarySymbolData(val code: Long) { enum class SymbolKind { FUNCTION_SYMBOL, CONSTRUCTOR_SYMBOL, diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryTypeProjection.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryTypeProjection.kt index 743618a095e..32daa0e61b8 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryTypeProjection.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryTypeProjection.kt @@ -7,7 +7,8 @@ package org.jetbrains.kotlin.backend.common.serialization.encodings import org.jetbrains.kotlin.types.Variance -inline class BinaryTypeProjection(val code: Long) { +@JvmInline +value class BinaryTypeProjection(val code: Long) { private fun varianceId(): Int = (code and 0x3L).toInt() - 1 diff --git a/compiler/testData/cli/jvm/internalArgOverrideLanguageFeature.out b/compiler/testData/cli/jvm/internalArgOverrideLanguageFeature.out index 24939ce5398..b46dd196f07 100644 --- a/compiler/testData/cli/jvm/internalArgOverrideLanguageFeature.out +++ b/compiler/testData/cli/jvm/internalArgOverrideLanguageFeature.out @@ -7,4 +7,7 @@ This mode is not recommended for production use, as no stability/compatibility guarantees are given on compiler or generated code. Use it at your own risk! -OK \ No newline at end of file +compiler/testData/cli/jvm/inlineClass.kt:1:1: warning: inline classes are deprecated in favor of value classes +inline class Foo(val x: Int) +^ +OK diff --git a/compiler/testData/cli/jvm/internalArgOverrideOffLanguageFeature.out b/compiler/testData/cli/jvm/internalArgOverrideOffLanguageFeature.out index b73488b3019..f5ad523eb02 100644 --- a/compiler/testData/cli/jvm/internalArgOverrideOffLanguageFeature.out +++ b/compiler/testData/cli/jvm/internalArgOverrideOffLanguageFeature.out @@ -7,7 +7,7 @@ This mode is not recommended for production use, as no stability/compatibility guarantees are given on compiler or generated code. Use it at your own risk! -compiler/testData/cli/jvm/inlineClass.kt:1:1: error: the feature "inline classes" is disabled +compiler/testData/cli/jvm/inlineClass.kt:1:1: warning: inline classes are deprecated in favor of value classes inline class Foo(val x: Int) ^ -COMPILATION_ERROR +OK diff --git a/compiler/testData/multiplatform/inlineClasses/output.txt b/compiler/testData/multiplatform/inlineClasses/output.txt index de552cbb60c..2d46af487b2 100644 --- a/compiler/testData/multiplatform/inlineClasses/output.txt +++ b/compiler/testData/multiplatform/inlineClasses/output.txt @@ -1,10 +1,10 @@ -- Common -- Exit code: OK Output: -compiler/testData/multiplatform/inlineClasses/common.kt:3:8: warning: the feature "inline classes" is experimental +compiler/testData/multiplatform/inlineClasses/common.kt:3:8: warning: inline classes are deprecated in favor of value classes expect inline class Foo1(val x: Int) ^ -compiler/testData/multiplatform/inlineClasses/common.kt:4:8: warning: the feature "inline classes" is experimental +compiler/testData/multiplatform/inlineClasses/common.kt:4:8: warning: inline classes are deprecated in favor of value classes expect inline class Foo2(val y: String) ^ diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/TableRendering.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/TableRendering.kt index d2939f1843e..1009412c945 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/TableRendering.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/TableRendering.kt @@ -131,7 +131,8 @@ enum class TableTimeUnit(val postfixText: String, val nsMultiplier: Double, val } } -inline class TableTimeUnitConversion(val value: Double) { +@JvmInline +value class TableTimeUnitConversion(val value: Double) { infix fun to(dest: TableTimeUnit): Double { return value * dest.nsMultiplier } diff --git a/generators/builtins/unsignedTypes.kt b/generators/builtins/unsignedTypes.kt index c57d92ecbfa..d0ab0a6933d 100644 --- a/generators/builtins/unsignedTypes.kt +++ b/generators/builtins/unsignedTypes.kt @@ -40,11 +40,13 @@ class UnsignedTypeGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIns override fun generateBody() { out.println("import kotlin.experimental.*") + out.println("import kotlin.jvm.*") out.println() out.println("@SinceKotlin(\"1.3\")") out.println("@ExperimentalUnsignedTypes") - out.println("public inline class $className @PublishedApi internal constructor(@PublishedApi internal val data: $storageType) : Comparable<$className> {") + out.println("@JvmInline") + out.println("public value class $className @PublishedApi internal constructor(@PublishedApi internal val data: $storageType) : Comparable<$className> {") out.println() out.println(""" companion object { /** @@ -419,9 +421,13 @@ class UnsignedArrayGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIn val storageElementType = type.asSigned.capitalized val storageArrayType = storageElementType + "Array" override fun generateBody() { + out.println("import kotlin.jvm.*") + out.println() + out.println("@SinceKotlin(\"1.3\")") out.println("@ExperimentalUnsignedTypes") - out.println("public inline class $arrayType") + out.println("@JvmInline") + out.println("public value class $arrayType") out.println("@PublishedApi") out.println("internal constructor(@PublishedApi internal val storage: $storageArrayType) : Collection<$elementType> {") out.println( diff --git a/js/js.translator/testData/lineNumbers/coroutine.kt b/js/js.translator/testData/lineNumbers/coroutine.kt index f95ad0eb35c..3f362470bac 100644 --- a/js/js.translator/testData/lineNumbers/coroutine.kt +++ b/js/js.translator/testData/lineNumbers/coroutine.kt @@ -14,4 +14,4 @@ suspend fun bar(): Unit { println(a + b) } -// LINES: 39 4 4 4 7 5 5 45 45 5 91 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9 \ No newline at end of file +// LINES: 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9 \ No newline at end of file diff --git a/libraries/stdlib/api/js-v1/kotlin.kt b/libraries/stdlib/api/js-v1/kotlin.kt index b171cf91d52..3e7b62dec9f 100644 --- a/libraries/stdlib/api/js-v1/kotlin.kt +++ b/libraries/stdlib/api/js-v1/kotlin.kt @@ -1995,6 +1995,7 @@ public final annotation class RequiresOptIn : kotlin.Annotation { } @kotlin.SinceKotlin(version = "1.3") +@kotlin.jvm.JvmInline public final inline class Result : kotlin.io.Serializable { public final val isFailure: kotlin.Boolean { get; } @@ -2242,6 +2243,7 @@ public final data class Triple : kotlin.io.Serializable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UByte : kotlin.Comparable { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UByte): kotlin.UByte @@ -2385,6 +2387,7 @@ public final inline class UByte : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UByteArray : kotlin.collections.Collection { public constructor UByteArray(size: kotlin.Int) @@ -2411,6 +2414,7 @@ public final inline class UByteArray : kotlin.collections.Collection { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UInt): kotlin.UInt @@ -2560,6 +2564,7 @@ public final inline class UInt : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UIntArray : kotlin.collections.Collection { public constructor UIntArray(size: kotlin.Int) @@ -2586,6 +2591,7 @@ public final inline class UIntArray : kotlin.collections.Collection @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class ULong : kotlin.Comparable { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.ULong): kotlin.ULong @@ -2735,6 +2741,7 @@ public final inline class ULong : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class ULongArray : kotlin.collections.Collection { public constructor ULongArray(size: kotlin.Int) @@ -2761,6 +2768,7 @@ public final inline class ULongArray : kotlin.collections.Collection { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UShort): kotlin.UShort @@ -2904,6 +2912,7 @@ public final inline class UShort : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UShortArray : kotlin.collections.Collection { public constructor UShortArray(size: kotlin.Int) @@ -2971,4 +2980,4 @@ public final annotation class UseExperimental : kotlin.Annotation { public constructor UseExperimental(vararg markerClass: kotlin.reflect.KClass) public final val markerClass: kotlin.Array> { get; } -} +} \ No newline at end of file diff --git a/libraries/stdlib/api/js-v1/kotlin.time.kt b/libraries/stdlib/api/js-v1/kotlin.time.kt index 1a6cd136902..b195dcadf61 100644 --- a/libraries/stdlib/api/js-v1/kotlin.time.kt +++ b/libraries/stdlib/api/js-v1/kotlin.time.kt @@ -158,6 +158,7 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource { @kotlin.SinceKotlin(version = "1.3") @kotlin.time.ExperimentalTime +@kotlin.jvm.JvmInline public final inline class Duration : kotlin.Comparable { public final val absoluteValue: kotlin.time.Duration { get; } diff --git a/libraries/stdlib/api/js/kotlin.kt b/libraries/stdlib/api/js/kotlin.kt index 5651e59e50d..781b8dc3cd0 100644 --- a/libraries/stdlib/api/js/kotlin.kt +++ b/libraries/stdlib/api/js/kotlin.kt @@ -1985,6 +1985,7 @@ public final annotation class RequiresOptIn : kotlin.Annotation { } @kotlin.SinceKotlin(version = "1.3") +@kotlin.jvm.JvmInline public final inline class Result : kotlin.io.Serializable { public final val isFailure: kotlin.Boolean { get; } @@ -2247,6 +2248,7 @@ public final data class Triple : kotlin.io.Serializable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UByte : kotlin.Comparable { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UByte): kotlin.UByte @@ -2390,6 +2392,7 @@ public final inline class UByte : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UByteArray : kotlin.collections.Collection { public constructor UByteArray(size: kotlin.Int) @@ -2416,6 +2419,7 @@ public final inline class UByteArray : kotlin.collections.Collection { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UInt): kotlin.UInt @@ -2565,6 +2569,7 @@ public final inline class UInt : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UIntArray : kotlin.collections.Collection { public constructor UIntArray(size: kotlin.Int) @@ -2591,6 +2596,7 @@ public final inline class UIntArray : kotlin.collections.Collection @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class ULong : kotlin.Comparable { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.ULong): kotlin.ULong @@ -2740,6 +2746,7 @@ public final inline class ULong : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class ULongArray : kotlin.collections.Collection { public constructor ULongArray(size: kotlin.Int) @@ -2766,6 +2773,7 @@ public final inline class ULongArray : kotlin.collections.Collection { @kotlin.internal.InlineOnly public final inline infix fun and(other: kotlin.UShort): kotlin.UShort @@ -2909,6 +2917,7 @@ public final inline class UShort : kotlin.Comparable { @kotlin.SinceKotlin(version = "1.3") @kotlin.ExperimentalUnsignedTypes +@kotlin.jvm.JvmInline public final inline class UShortArray : kotlin.collections.Collection { public constructor UShortArray(size: kotlin.Int) @@ -2972,4 +2981,4 @@ public final annotation class UseExperimental : kotlin.Annotation { public constructor UseExperimental(vararg markerClass: kotlin.reflect.KClass) public final val markerClass: kotlin.Array> { get; } -} +} \ No newline at end of file diff --git a/libraries/stdlib/api/js/kotlin.time.kt b/libraries/stdlib/api/js/kotlin.time.kt index 1a6cd136902..b195dcadf61 100644 --- a/libraries/stdlib/api/js/kotlin.time.kt +++ b/libraries/stdlib/api/js/kotlin.time.kt @@ -158,6 +158,7 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource { @kotlin.SinceKotlin(version = "1.3") @kotlin.time.ExperimentalTime +@kotlin.jvm.JvmInline public final inline class Duration : kotlin.Comparable { public final val absoluteValue: kotlin.time.Duration { get; } diff --git a/libraries/stdlib/src/kotlin/time/Duration.kt b/libraries/stdlib/src/kotlin/time/Duration.kt index da0c52f7ea4..604e3681bcc 100644 --- a/libraries/stdlib/src/kotlin/time/Duration.kt +++ b/libraries/stdlib/src/kotlin/time/Duration.kt @@ -6,6 +6,7 @@ package kotlin.time import kotlin.contracts.* +import kotlin.jvm.JvmInline import kotlin.math.abs @OptIn(ExperimentalTime::class) @@ -27,7 +28,8 @@ private inline val storageUnit get() = DurationUnit.NANOSECONDS */ @SinceKotlin("1.3") @ExperimentalTime -public inline class Duration internal constructor(internal val value: Double) : Comparable { +@JvmInline +public value class Duration internal constructor(internal val value: Double) : Comparable { init { require(!value.isNaN()) { "Duration value cannot be NaN." } } diff --git a/libraries/stdlib/src/kotlin/util/Result.kt b/libraries/stdlib/src/kotlin/util/Result.kt index 5f3055b0e4b..1650072df5c 100644 --- a/libraries/stdlib/src/kotlin/util/Result.kt +++ b/libraries/stdlib/src/kotlin/util/Result.kt @@ -10,6 +10,7 @@ package kotlin import kotlin.contracts.* import kotlin.internal.InlineOnly import kotlin.jvm.JvmField +import kotlin.jvm.JvmInline import kotlin.jvm.JvmName /** @@ -17,7 +18,8 @@ import kotlin.jvm.JvmName * or a failure with an arbitrary [Throwable] exception. */ @SinceKotlin("1.3") -public inline class Result @PublishedApi internal constructor( +@JvmInline +public value class Result @PublishedApi internal constructor( @PublishedApi internal val value: Any? ) : Serializable { diff --git a/libraries/stdlib/unsigned/src/kotlin/UByte.kt b/libraries/stdlib/unsigned/src/kotlin/UByte.kt index e923dd5448c..101209f29e2 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UByte.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UByte.kt @@ -8,10 +8,12 @@ package kotlin import kotlin.experimental.* +import kotlin.jvm.* @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UByte @PublishedApi internal constructor(@PublishedApi internal val data: Byte) : Comparable { +@JvmInline +public value class UByte @PublishedApi internal constructor(@PublishedApi internal val data: Byte) : Comparable { companion object { /** diff --git a/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt b/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt index 7dd7d6074c6..827af883b5b 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt @@ -7,9 +7,12 @@ package kotlin +import kotlin.jvm.* + @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UByteArray +@JvmInline +public value class UByteArray @PublishedApi internal constructor(@PublishedApi internal val storage: ByteArray) : Collection { diff --git a/libraries/stdlib/unsigned/src/kotlin/UInt.kt b/libraries/stdlib/unsigned/src/kotlin/UInt.kt index d0efa652343..0823846138a 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UInt.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UInt.kt @@ -8,10 +8,12 @@ package kotlin import kotlin.experimental.* +import kotlin.jvm.* @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UInt @PublishedApi internal constructor(@PublishedApi internal val data: Int) : Comparable { +@JvmInline +public value class UInt @PublishedApi internal constructor(@PublishedApi internal val data: Int) : Comparable { companion object { /** diff --git a/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt b/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt index b3a283bea30..3253539235c 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt @@ -7,9 +7,12 @@ package kotlin +import kotlin.jvm.* + @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UIntArray +@JvmInline +public value class UIntArray @PublishedApi internal constructor(@PublishedApi internal val storage: IntArray) : Collection { diff --git a/libraries/stdlib/unsigned/src/kotlin/ULong.kt b/libraries/stdlib/unsigned/src/kotlin/ULong.kt index 851e4625d50..4506a5290cf 100644 --- a/libraries/stdlib/unsigned/src/kotlin/ULong.kt +++ b/libraries/stdlib/unsigned/src/kotlin/ULong.kt @@ -8,10 +8,12 @@ package kotlin import kotlin.experimental.* +import kotlin.jvm.* @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class ULong @PublishedApi internal constructor(@PublishedApi internal val data: Long) : Comparable { +@JvmInline +public value class ULong @PublishedApi internal constructor(@PublishedApi internal val data: Long) : Comparable { companion object { /** diff --git a/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt b/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt index 7baf5724c61..d1056b3b4cf 100644 --- a/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt @@ -7,9 +7,12 @@ package kotlin +import kotlin.jvm.* + @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class ULongArray +@JvmInline +public value class ULongArray @PublishedApi internal constructor(@PublishedApi internal val storage: LongArray) : Collection { diff --git a/libraries/stdlib/unsigned/src/kotlin/UShort.kt b/libraries/stdlib/unsigned/src/kotlin/UShort.kt index 5933f15e74c..66571ff9971 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UShort.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UShort.kt @@ -8,10 +8,12 @@ package kotlin import kotlin.experimental.* +import kotlin.jvm.* @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UShort @PublishedApi internal constructor(@PublishedApi internal val data: Short) : Comparable { +@JvmInline +public value class UShort @PublishedApi internal constructor(@PublishedApi internal val data: Short) : Comparable { companion object { /** diff --git a/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt b/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt index b2f5c5a6c24..70661a5b0fa 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt @@ -7,9 +7,12 @@ package kotlin +import kotlin.jvm.* + @SinceKotlin("1.3") @ExperimentalUnsignedTypes -public inline class UShortArray +@JvmInline +public value class UShortArray @PublishedApi internal constructor(@PublishedApi internal val storage: ShortArray) : Collection {