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
|
||||
|
||||
@native
|
||||
interface JsClass<T> {
|
||||
interface JsClass<T : Any> {
|
||||
val name: String
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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, y)
|
||||
if (shouldBeEquals)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
inline fun <reified T> foo(): JsClass<T> {
|
||||
inline fun <reified T : Any> foo(): JsClass<T> {
|
||||
val T = 1
|
||||
return jsClass<T>()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user