diff --git a/generators/builtins/unsignedTypes.kt b/generators/builtins/unsignedTypes.kt index 621da2b8cbc..ec1533589fa 100644 --- a/generators/builtins/unsignedTypes.kt +++ b/generators/builtins/unsignedTypes.kt @@ -260,9 +260,11 @@ class UnsignedArrayGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIn val storageElementType = type.asSigned.capitalized val storageArrayType = storageElementType + "Array" override fun generateBody() { - out.println("@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")") out.println("@SinceKotlin(\"1.3\")") - out.println("public inline class $arrayType internal constructor(private val storage: $storageArrayType) : Collection<$elementType> {") + out.println("public inline class $arrayType") + out.println("@Suppress(\"NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS\")") + out.println("@PublishedApi") + out.println("internal constructor(private val storage: $storageArrayType) : Collection<$elementType> {") out.println( """ /** Returns the array element at the given [index]. This method can be called using the index operator. */ @@ -294,17 +296,16 @@ class UnsignedArrayGenerator(val type: UnsignedType, out: PrintWriter) : BuiltIn out.println("}") + // TODO: Make inline constructor, like in ByteArray out.println() out.println("@SinceKotlin(\"1.3\")") - out.println("""public /*inline*/ fun $arrayType(size: Int, init: (Int) -> $elementType): $arrayType { + out.println("""public inline fun $arrayType(size: Int, init: (Int) -> $elementType): $arrayType { return $arrayType($storageArrayType(size) { index -> init(index).to$storageElementType() }) } -@Suppress("FORBIDDEN_VARARG_PARAMETER_TYPE") @SinceKotlin("1.3") -public fun $arrayTypeOf(vararg elements: $elementType): $arrayType { - return $arrayType(elements.size) { index -> elements[index] } -}""" +// TODO: @kotlin.internal.InlineOnly +public inline fun $arrayTypeOf(vararg elements: $elementType): $arrayType = elements""" ) } } diff --git a/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt b/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt index 20cc92f0bc4..fc28484d5a1 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UByteArray.kt @@ -7,9 +7,11 @@ package kotlin -@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") @SinceKotlin("1.3") -public inline class UByteArray internal constructor(private val storage: ByteArray) : Collection { +public inline class UByteArray +@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") +@PublishedApi +internal constructor(private val storage: ByteArray) : Collection { /** Returns the array element at the given [index]. This method can be called using the index operator. */ public operator fun get(index: Int): UByte = storage[index].toUByte() @@ -39,12 +41,10 @@ public inline class UByteArray internal constructor(private val storage: ByteArr } @SinceKotlin("1.3") -public /*inline*/ fun UByteArray(size: Int, init: (Int) -> UByte): UByteArray { +public inline fun UByteArray(size: Int, init: (Int) -> UByte): UByteArray { return UByteArray(ByteArray(size) { index -> init(index).toByte() }) } -@Suppress("FORBIDDEN_VARARG_PARAMETER_TYPE") @SinceKotlin("1.3") -public fun ubyteArrayOf(vararg elements: UByte): UByteArray { - return UByteArray(elements.size) { index -> elements[index] } -} +// TODO: @kotlin.internal.InlineOnly +public inline fun ubyteArrayOf(vararg elements: UByte): UByteArray = elements diff --git a/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt b/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt index c76071bd7da..a84d4efde2a 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UIntArray.kt @@ -7,9 +7,11 @@ package kotlin -@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") @SinceKotlin("1.3") -public inline class UIntArray internal constructor(private val storage: IntArray) : Collection { +public inline class UIntArray +@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") +@PublishedApi +internal constructor(private val storage: IntArray) : Collection { /** Returns the array element at the given [index]. This method can be called using the index operator. */ public operator fun get(index: Int): UInt = storage[index].toUInt() @@ -39,12 +41,10 @@ public inline class UIntArray internal constructor(private val storage: IntArray } @SinceKotlin("1.3") -public /*inline*/ fun UIntArray(size: Int, init: (Int) -> UInt): UIntArray { +public inline fun UIntArray(size: Int, init: (Int) -> UInt): UIntArray { return UIntArray(IntArray(size) { index -> init(index).toInt() }) } -@Suppress("FORBIDDEN_VARARG_PARAMETER_TYPE") @SinceKotlin("1.3") -public fun uintArrayOf(vararg elements: UInt): UIntArray { - return UIntArray(elements.size) { index -> elements[index] } -} +// TODO: @kotlin.internal.InlineOnly +public inline fun uintArrayOf(vararg elements: UInt): UIntArray = elements diff --git a/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt b/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt index 6d50d735667..df34cc36979 100644 --- a/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/ULongArray.kt @@ -7,9 +7,11 @@ package kotlin -@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") @SinceKotlin("1.3") -public inline class ULongArray internal constructor(private val storage: LongArray) : Collection { +public inline class ULongArray +@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") +@PublishedApi +internal constructor(private val storage: LongArray) : Collection { /** Returns the array element at the given [index]. This method can be called using the index operator. */ public operator fun get(index: Int): ULong = storage[index].toULong() @@ -39,12 +41,10 @@ public inline class ULongArray internal constructor(private val storage: LongArr } @SinceKotlin("1.3") -public /*inline*/ fun ULongArray(size: Int, init: (Int) -> ULong): ULongArray { +public inline fun ULongArray(size: Int, init: (Int) -> ULong): ULongArray { return ULongArray(LongArray(size) { index -> init(index).toLong() }) } -@Suppress("FORBIDDEN_VARARG_PARAMETER_TYPE") @SinceKotlin("1.3") -public fun ulongArrayOf(vararg elements: ULong): ULongArray { - return ULongArray(elements.size) { index -> elements[index] } -} +// TODO: @kotlin.internal.InlineOnly +public inline fun ulongArrayOf(vararg elements: ULong): ULongArray = elements diff --git a/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt b/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt index f0de1806fef..3f53deaae65 100644 --- a/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt +++ b/libraries/stdlib/unsigned/src/kotlin/UShortArray.kt @@ -7,9 +7,11 @@ package kotlin -@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") @SinceKotlin("1.3") -public inline class UShortArray internal constructor(private val storage: ShortArray) : Collection { +public inline class UShortArray +@Suppress("NON_PUBLIC_PRIMARY_CONSTRUCTOR_OF_INLINE_CLASS") +@PublishedApi +internal constructor(private val storage: ShortArray) : Collection { /** Returns the array element at the given [index]. This method can be called using the index operator. */ public operator fun get(index: Int): UShort = storage[index].toUShort() @@ -39,12 +41,10 @@ public inline class UShortArray internal constructor(private val storage: ShortA } @SinceKotlin("1.3") -public /*inline*/ fun UShortArray(size: Int, init: (Int) -> UShort): UShortArray { +public inline fun UShortArray(size: Int, init: (Int) -> UShort): UShortArray { return UShortArray(ShortArray(size) { index -> init(index).toShort() }) } -@Suppress("FORBIDDEN_VARARG_PARAMETER_TYPE") @SinceKotlin("1.3") -public fun ushortArrayOf(vararg elements: UShort): UShortArray { - return UShortArray(elements.size) { index -> elements[index] } -} +// TODO: @kotlin.internal.InlineOnly +public inline fun ushortArrayOf(vararg elements: UShort): UShortArray = elements