[JS IR] Add test with boolean in external interface

[JS IR] Add possibility to safely access Boolean in external declaration

[JS IR] Add diagnostic for booleans in externals
This commit is contained in:
Ilya Goncharov
2021-06-15 20:18:30 +03:00
committed by Space
parent 2e049c1208
commit 21a3494bca
20 changed files with 293 additions and 69 deletions
@@ -0,0 +1,43 @@
// SAFE_EXTERNAL_BOOLEAN
fun box(): String {
val interfaceWithBoolean: InterfaceWithBoolean = js("{}")
C().c = interfaceWithBoolean.foo
C().c = interfaceWithBoolean.bar
return "OK"
}
abstract class A<T> {
open fun get(): T {
return this.asDynamic()["attr"].unsafeCast<T>()
}
open fun set(value: T) {
this.asDynamic()["attr"] = value
}
}
class B : A<Boolean>() {
override fun set(value: Boolean) {
if (value) {
this.asDynamic()["attr"] = value
}
}
}
val b: A<Boolean> = B()
class C {
var c: Boolean
get() = b.get()
set(newValue) {
b.set(newValue)
}
}
external interface InterfaceWithBoolean {
var foo: Boolean
@JsName("goo")
var bar: Boolean
}