diff --git a/js/js.libraries/src/core/reflection.kt b/js/js.libraries/src/core/reflection.kt index d39a65d9881..f9d3cc1cc4b 100644 --- a/js/js.libraries/src/core/reflection.kt +++ b/js/js.libraries/src/core/reflection.kt @@ -17,12 +17,12 @@ package kotlin.js @native -interface JsClass { +interface JsClass { val name: String } @native -fun jsClass(): JsClass = noImpl +fun jsClass(): JsClass = noImpl -val T.jsClass: JsClass +val T.jsClass: JsClass get() = js("Object").getPrototypeOf(this).constructor diff --git a/js/js.translator/testData/box/reflection/light/jsClass.kt b/js/js.translator/testData/box/reflection/light/jsClass.kt index 2a3f594a4c6..0097f0a7992 100644 --- a/js/js.translator/testData/box/reflection/light/jsClass.kt +++ b/js/js.translator/testData/box/reflection/light/jsClass.kt @@ -1,6 +1,6 @@ package foo -fun check(x: JsClass, y: JsClass, shouldBeEquals: Boolean = true) { +fun check(x: JsClass<*>, y: JsClass<*>, shouldBeEquals: Boolean = true) { assertNotEquals(null, x) assertNotEquals(null, y) if (shouldBeEquals) diff --git a/js/js.translator/testData/box/reflection/light/jsClassOnReifiedType.kt b/js/js.translator/testData/box/reflection/light/jsClassOnReifiedType.kt index d1503a4659f..a5675dc484f 100644 --- a/js/js.translator/testData/box/reflection/light/jsClassOnReifiedType.kt +++ b/js/js.translator/testData/box/reflection/light/jsClassOnReifiedType.kt @@ -1,6 +1,6 @@ package foo -inline fun foo(): JsClass { +inline fun foo(): JsClass { val T = 1 return jsClass() } diff --git a/js/js.translator/testData/box/reflection/light/jsClassSimpleName.kt b/js/js.translator/testData/box/reflection/light/jsClassSimpleName.kt index 4a9e14337d1..5facf3827ef 100644 --- a/js/js.translator/testData/box/reflection/light/jsClassSimpleName.kt +++ b/js/js.translator/testData/box/reflection/light/jsClassSimpleName.kt @@ -15,7 +15,7 @@ fun testWithInstance() { assertEquals("E", E.X.jsClass.simpleName) assertEquals("Y", E.Y.jsClass.simpleName) // TODO uncomment after KT-13338 is fixed -// assertEquals("E", E.Z.jsClass.name) +// assertEquals("E", E.Z.jsClass.simpleName) assertEquals("undefined", undefined().jsClass.simpleName) assertEquals("Nested", Outer.Nested().jsClass.simpleName) assertEquals("Inner", Outer().Inner().jsClass.simpleName)