From e17321e1f620a0dc1874cbc3db590c698586e52f Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Fri, 30 Sep 2016 19:29:42 +0300 Subject: [PATCH] JS: fix some code in stdlib that attempts to to `is` check against native interface --- js/js.libraries/src/dom/DomEvents.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/js/js.libraries/src/dom/DomEvents.kt b/js/js.libraries/src/dom/DomEvents.kt index ca59a90cf20..9c34c41324d 100644 --- a/js/js.libraries/src/dom/DomEvents.kt +++ b/js/js.libraries/src/dom/DomEvents.kt @@ -40,9 +40,13 @@ public fun Node.on(name: String, capture: Boolean, handler: (Event) -> Unit): Cl * Registers an [EventListener] on the named event */ public fun Node?.on(name: String, capture: Boolean, listener: EventListener): Closeable? { - return if (this is EventTarget) { - addEventListener(name, listener, capture) - CloseableEventListener(this, listener, name, capture) + // TODO: instanceof EventTarget is a very bad idea! + // TODO: nullable target is a very bad idea! + // TODO: receiver should be EventTarget + val target = this as? EventTarget + return if (target != null) { + target.addEventListener(name, listener, capture) + CloseableEventListener(target, listener, name, capture) } else { null }