JS: make Any as upper bound of type parameter of JsClass and helpers

This commit is contained in:
Zalim Bashorov
2016-10-04 14:22:44 +03:00
parent e6887ea4e5
commit d31f18137d
4 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -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 -1
View File
@@ -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)