diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index b21424be566..a86bef4875b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -262,10 +262,6 @@ public class JetTypeMapper { signatureVisitor.writeArrayEnd(); } - if (memberType.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) { - return AsmTypeConstants.getType(Object[].class); - } - return Type.getType("[" + boxType(mapType(memberType, kind)).getDescriptor()); } diff --git a/compiler/testData/codegen/boxWithStdlib/regressions/kt4262.kt b/compiler/testData/codegen/boxWithStdlib/regressions/kt4262.kt new file mode 100644 index 00000000000..9bb16cb37fc --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/regressions/kt4262.kt @@ -0,0 +1,10 @@ +fun > Byte.toEnum(clazz : Class) : E = + (clazz.getMethod("values").invoke(null) as Array)[this.toInt()] + +enum class Letters { A B C } + +fun box(): String { + val clazz = javaClass() + val r = 1.toByte().toEnum(clazz) + return if (r == Letters.B) "OK" else "Fail: $r" +} diff --git a/compiler/testData/codegen/boxWithStdlib/regressions/kt5056.kt b/compiler/testData/codegen/boxWithStdlib/regressions/kt5056.kt new file mode 100644 index 00000000000..55ebf62d250 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/regressions/kt5056.kt @@ -0,0 +1,4 @@ +fun box(): String { + val list = array("a", "c", "b").toSortedList() + return if (list.toString() == "[a, b, c]") "OK" else "Fail: $list" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index c55798a7a01..2129bcc83e6 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -1311,6 +1311,16 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/regressions/kt344.kt"); } + @TestMetadata("kt4262.kt") + public void testKt4262() throws Exception { + doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/regressions/kt4262.kt"); + } + + @TestMetadata("kt5056.kt") + public void testKt5056() throws Exception { + doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/regressions/kt5056.kt"); + } + @TestMetadata("kt528.kt") public void testKt528() throws Exception { doTestWithStdlib("compiler/testData/codegen/boxWithStdlib/regressions/kt528.kt"); diff --git a/libraries/stdlib/test/collections/ArraysTest.kt b/libraries/stdlib/test/collections/ArraysTest.kt index 7d15367d34c..16525db109a 100644 --- a/libraries/stdlib/test/collections/ArraysTest.kt +++ b/libraries/stdlib/test/collections/ArraysTest.kt @@ -202,6 +202,13 @@ class ArraysTest { assertEquals(listOf(100L, 200L, 30L), array(50L, 100L, 200L, 30L).slice(1..3)) assertEquals(listOf(true, false, true), array(true, false, true, true).slice(iter)) } + + test fun toSortedList() { + assertEquals(listOf(), array().toSortedList()) + assertEquals(listOf(1), array(1).toSortedList()) + assertEquals(listOf("aab", "aba", "ac"), array("ac", "aab", "aba").toSortedList()) + } + /* TODO FIXME ASAP: These currently fail on JS due to missing upto() method on numbers