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")
});