From 4b7f67d976fc6249add74fae2e1ff3a6f12e96b0 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Fri, 11 Nov 2016 16:20:26 +0300 Subject: [PATCH] Fix array accessor signatures, add array test to fix. --- backend.native/tests/build.gradle | 7 +++++ backend.native/tests/runtime/basic/array1.kt | 27 ++++++++++++++++++++ runtime/src/main/cpp/Natives.cpp | 2 ++ runtime/src/main/kotlin/kotlin/Arrays.kt | 10 ++++---- 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 backend.native/tests/runtime/basic/array1.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 8c0a4dc09fc..a1655c17c9e 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -206,6 +206,13 @@ task array0(type: RunKonanTest) { source = "runtime/basic/array0.kt" } +/* +task array1(type: RunKonanTest) { + goldValue = "42\n1-1\n69\n83\n" + source = "runtime/basic/array1.kt" + }*/ + + task if_else(type: UnitKonanTest) { source = "codegen/branching/if_else.kt" } diff --git a/backend.native/tests/runtime/basic/array1.kt b/backend.native/tests/runtime/basic/array1.kt new file mode 100644 index 00000000000..471b70be3b3 --- /dev/null +++ b/backend.native/tests/runtime/basic/array1.kt @@ -0,0 +1,27 @@ +fun main(args : Array) { + val byteArray = ByteArray(5) + byteArray[1] = 2 + byteArray[3] = 4 + println(byteArray[3].toString() + " " + byteArray[1].toString()) + + val shortArray = ShortArray(2) + shortArray[0] = -1 + shortArray[1] = 1 + print(shortArray[1].toString()) + print(shortArray[0].toString()) + println() + + val intArray = IntArray(7) + intArray[1] = 9 + intArray[3] = 6 + print(intArray[3].toString()) + print(intArray[1].toString()) + println() + + val longArray = LongArray(9) + longArray[8] = 8 + longArray[3] = 3 + print(longArray[3].toString()) + print(longArray[8].toString()) + println() +} \ No newline at end of file diff --git a/runtime/src/main/cpp/Natives.cpp b/runtime/src/main/cpp/Natives.cpp index b7ea086b2d2..12ab466bb95 100644 --- a/runtime/src/main/cpp/Natives.cpp +++ b/runtime/src/main/cpp/Natives.cpp @@ -90,6 +90,8 @@ KString Kotlin_String_fromUtf8Array(const ArrayHeader* array) { KString Kotlin_String_plusImpl(KString thiz, KString other) { // TODO: support UTF-8 + RuntimeAssert(thiz != nullptr, "this cannot be null"); + RuntimeAssert(other != nullptr, "other cannot be null"); RuntimeAssert(thiz->type_info() == theStringTypeInfo, "Must be a string"); RuntimeAssert(other->type_info() == theStringTypeInfo, "Must be a string"); uint32_t result_length = thiz->count_ + other->count_; diff --git a/runtime/src/main/kotlin/kotlin/Arrays.kt b/runtime/src/main/kotlin/kotlin/Arrays.kt index 4a03fe51528..97db8631cc4 100644 --- a/runtime/src/main/kotlin/kotlin/Arrays.kt +++ b/runtime/src/main/kotlin/kotlin/Arrays.kt @@ -72,7 +72,7 @@ class IntArray : Cloneable { get() = getArrayLength() @SymbolName("Kotlin_IntArray_get") - external public operator fun get(index: Int): Char + external public operator fun get(index: Int): Int @SymbolName("Kotlin_IntArray_set") external public operator fun set(index: Int, value: Int): Unit @@ -93,7 +93,7 @@ class LongArray : Cloneable { get() = getArrayLength() @SymbolName("Kotlin_LongArray_get") - external public operator fun get(index: Int): Char + external public operator fun get(index: Int): Long @SymbolName("Kotlin_LongArray_set") external public operator fun set(index: Int, value: Long): Unit @@ -114,7 +114,7 @@ class FloatArray : Cloneable { get() = getArrayLength() @SymbolName("Kotlin_FloatArray_get") - external public operator fun get(index: Int): Char + external public operator fun get(index: Int): Float @SymbolName("Kotlin_FloatArray_set") external public operator fun set(index: Int, value: Float): Unit @@ -135,7 +135,7 @@ class DoubleArray : Cloneable { get() = getArrayLength() @SymbolName("Kotlin_DoubleArray_get") - external public operator fun get(index: Int): Char + external public operator fun get(index: Int): Double @SymbolName("Kotlin_DoubleArray_set") external public operator fun set(index: Int, value: Double): Unit @@ -156,7 +156,7 @@ class BooleanArray : Cloneable { get() = getArrayLength() @SymbolName("Kotlin_BooleanArray_get") - external public operator fun get(index: Int): Char + external public operator fun get(index: Int): Boolean @SymbolName("Kotlin_BooleanArray_set") external public operator fun set(index: Int, value: Boolean): Unit