diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/EnumTest.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/EnumTest.java index 23a3af2e1e6..4be7bf3acab 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/EnumTest.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/EnumTest.java @@ -62,4 +62,8 @@ public class EnumTest extends SingleFileTranslationTest { public void testInitializationOrder() throws Exception { checkFooBoxIsOk(); } + + public void testImplementsComparable() throws Exception { + checkFooBoxIsOk(); + } } diff --git a/js/js.translator/testData/enum/cases/implementsComparable.kt b/js/js.translator/testData/enum/cases/implementsComparable.kt new file mode 100644 index 00000000000..7477e54b056 --- /dev/null +++ b/js/js.translator/testData/enum/cases/implementsComparable.kt @@ -0,0 +1,14 @@ +package foo + +enum class A { + X, + Y +} + +fun box(): String { + val a : Any = A.X + assertEquals(0, (a as Comparable).compareTo(A.X)) + assertTrue((a as Comparable).compareTo(A.Y) < 0) + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/kotlin_lib.js b/js/js.translator/testData/kotlin_lib.js index 06111c172fa..bc33ca05586 100644 --- a/js/js.translator/testData/kotlin_lib.js +++ b/js/js.translator/testData/kotlin_lib.js @@ -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") });