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
@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 -1
View File
@@ -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)