JS: make Any as upper bound of type parameter of JsClass and helpers
This commit is contained in:
@@ -17,12 +17,12 @@
|
|||||||
package kotlin.js
|
package kotlin.js
|
||||||
|
|
||||||
@native
|
@native
|
||||||
interface JsClass<T> {
|
interface JsClass<T : Any> {
|
||||||
val name: String
|
val name: String
|
||||||
}
|
}
|
||||||
|
|
||||||
@native
|
@native
|
||||||
fun <T> jsClass(): JsClass<T> = noImpl
|
fun <T : Any> jsClass(): JsClass<T> = noImpl
|
||||||
|
|
||||||
val <T> T.jsClass: JsClass<T>
|
val <T : Any> T.jsClass: JsClass<T>
|
||||||
get() = js("Object").getPrototypeOf(this).constructor
|
get() = js("Object").getPrototypeOf(this).constructor
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
fun <T> check(x: JsClass<T>, y: JsClass<T>, shouldBeEquals: Boolean = true) {
|
fun check(x: JsClass<*>, y: JsClass<*>, shouldBeEquals: Boolean = true) {
|
||||||
assertNotEquals(null, x)
|
assertNotEquals(null, x)
|
||||||
assertNotEquals(null, y)
|
assertNotEquals(null, y)
|
||||||
if (shouldBeEquals)
|
if (shouldBeEquals)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
inline fun <reified T> foo(): JsClass<T> {
|
inline fun <reified T : Any> foo(): JsClass<T> {
|
||||||
val T = 1
|
val T = 1
|
||||||
return jsClass<T>()
|
return jsClass<T>()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ fun testWithInstance() {
|
|||||||
assertEquals("E", E.X.jsClass.simpleName)
|
assertEquals("E", E.X.jsClass.simpleName)
|
||||||
assertEquals("Y", E.Y.jsClass.simpleName)
|
assertEquals("Y", E.Y.jsClass.simpleName)
|
||||||
// TODO uncomment after KT-13338 is fixed
|
// 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("undefined", undefined().jsClass.simpleName)
|
||||||
assertEquals("Nested", Outer.Nested().jsClass.simpleName)
|
assertEquals("Nested", Outer.Nested().jsClass.simpleName)
|
||||||
assertEquals("Inner", Outer().Inner().jsClass.simpleName)
|
assertEquals("Inner", Outer().Inner().jsClass.simpleName)
|
||||||
|
|||||||
Reference in New Issue
Block a user