diff --git a/libraries/stdlib/src/kotlin/collections/ArraysJVM.kt b/libraries/stdlib/src/kotlin/collections/ArraysJVM.kt index f5cf226127b..5212a1bbbba 100644 --- a/libraries/stdlib/src/kotlin/collections/ArraysJVM.kt +++ b/libraries/stdlib/src/kotlin/collections/ArraysJVM.kt @@ -35,3 +35,6 @@ public fun ByteArray.toString(charset: Charset): String = String(this, charset) [Intrinsic("kotlin.collections.copyToArray")] public fun Collection.copyToArray(): Array = throw UnsupportedOperationException() + +/** Returns the List if its not null otherwise returns the empty list */ +public inline fun Array?.orEmpty(): Array = this ?: array() diff --git a/libraries/stdlib/test/collections/ArraysJVMTest.kt b/libraries/stdlib/test/collections/ArraysJVMTest.kt index a29049e08db..cf89e7c7d76 100644 --- a/libraries/stdlib/test/collections/ArraysJVMTest.kt +++ b/libraries/stdlib/test/collections/ArraysJVMTest.kt @@ -197,4 +197,18 @@ class ArraysJVMTest { expect(3000000000000) { longArray(1000000000000, 2000000000000).sum() } expect(3.0.toFloat()) { floatArray(1.0.toFloat(), 2.0.toFloat()).sum() } } + + test fun orEmptyNull() { + val x: Array? = null + val xArray: Array = x.orEmpty() + expect(0) { xArray.size } + } + + test fun orEmptyNotNull() { + val x: Array? = array("1", "2") + val xArray: Array = x.orEmpty() + expect(2) { xArray.size } + expect("1") { xArray[0] } + expect("2") { xArray[1] } + } }