KT-12864: add Comparable interface to Enum metadata so that RTTI should handle is Comparable case correctly

This commit is contained in:
Alexey Andreev
2016-07-08 17:39:38 +03:00
parent 67808ef7fc
commit 4ff2b62bc0
3 changed files with 26 additions and 5 deletions
@@ -62,4 +62,8 @@ public class EnumTest extends SingleFileTranslationTest {
public void testInitializationOrder() throws Exception {
checkFooBoxIsOk();
}
public void testImplementsComparable() throws Exception {
checkFooBoxIsOk();
}
}
@@ -0,0 +1,14 @@
package foo
enum class A {
X,
Y
}
fun box(): String {
val a : Any = A.X
assertEquals(0, (a as Comparable<A>).compareTo(A.X))
assertTrue((a as Comparable<A>).compareTo(A.Y) < 0)
return "OK"
}
+8 -5
View File
@@ -340,7 +340,10 @@
}
});
Kotlin.Enum = Kotlin.createClassNow(null,
lazyInitClasses.Enum = Kotlin.createClass(
function() {
return [Kotlin.Comparable];
},
function () {
this.name$ = void 0;
this.ordinal$ = void 0;
@@ -665,19 +668,19 @@
}
});
Kotlin.Runnable = Kotlin.createClassNow(null, null, {
Kotlin.Runnable = Kotlin.createTraitNow(null, null, {
run: throwAbstractFunctionInvocationError("Runnable#run")
});
Kotlin.Comparable = Kotlin.createClassNow(null, null, {
Kotlin.Comparable = Kotlin.createTraitNow(null, null, {
compareTo: throwAbstractFunctionInvocationError("Comparable#compareTo")
});
Kotlin.Appendable = Kotlin.createClassNow(null, null, {
Kotlin.Appendable = Kotlin.createTraitNow(null, null, {
append: throwAbstractFunctionInvocationError("Appendable#append")
});
Kotlin.Closeable = Kotlin.createClassNow(null, null, {
Kotlin.Closeable = Kotlin.createTraitNow(null, null, {
close: throwAbstractFunctionInvocationError("Closeable#close")
});