// DONT_TARGET_EXACT_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1331 package foo class undefined class Outer { class Nested inner class Inner } @Suppress("DEPRECATION_ERROR") fun testWithInstance() { assertEquals("A", A().jsClass.simpleName) assertEquals("B", B().jsClass.simpleName) assertEquals("O", O.jsClass.simpleName) assertEquals("E", E.X.jsClass.simpleName) assertEquals("Y", E.Y.jsClass.simpleName) // TODO uncomment after KT-13338 is fixed // assertEquals("E", E.Z.jsClass.simpleName) assertEquals("undefined", undefined().jsClass.simpleName) assertEquals("Nested", Outer.Nested().jsClass.simpleName) assertEquals("Inner", Outer().Inner().jsClass.simpleName) } @Suppress("DEPRECATION_ERROR") fun testWithClassReference() { assertEquals("A", jsClass().simpleName) assertEquals("B", jsClass().simpleName) assertEquals("O", jsClass().simpleName) assertEquals("I", jsClass().simpleName) assertEquals("E", jsClass().simpleName) assertEquals("undefined", jsClass().simpleName) assertEquals("Nested", jsClass().simpleName) assertEquals("Inner", jsClass().simpleName) } val JsClass<*>.simpleName: String get() { val dynClass: dynamic = this return dynClass.`$metadata$`.simpleName as? String ?: "" } fun box(): String { testWithInstance() testWithClassReference() return "OK" }