JS backend: basic support for class literals.

Added:
* the ability to get KClass using class literals (`::class`);
* the ability to get KClass from JsClass and vice versa;
* the ability to get simpleName.

 #KT-13345 Fixed
This commit is contained in:
Zalim Bashorov
2016-10-04 17:39:37 +03:00
parent ace10f46b2
commit 3c520a3ce3
14 changed files with 310 additions and 21 deletions
+1 -10
View File
@@ -1,21 +1,12 @@
package foo
fun check(x: JsClass<*>, y: JsClass<*>, shouldBeEquals: Boolean = true) {
assertNotEquals(null, x)
assertNotEquals(null, y)
if (shouldBeEquals)
assertEquals(x, y)
else
assertNotEquals(x, y)
}
fun box(): String {
check(jsClass<A>(), A().jsClass)
check(jsClass<B>(), B().jsClass)
check(jsClass<O>(), O.jsClass)
assertNotEquals(null, jsClass<I>())
check(jsClass<E>(), E.X.jsClass)
check(jsClass<E>(), E.Y.jsClass, shouldBeEquals = false)
check(jsClass<E>(), E.Y.jsClass, shouldBeEqual = false)
// TODO uncomment after KT-13338 is fixed
// check(jsClass<E>(), E.Z.jsClass)