Introduce better typing for on[event-name] attributes from idl
see https://upsource.jetbrains.com/kotlin/review/KOTLIN-CR-2548
This commit is contained in:
@@ -75,62 +75,62 @@ public external open class Document : Node, GlobalEventHandlers, DocumentAndElem
|
|||||||
open val documentElement: Element?
|
open val documentElement: Element?
|
||||||
open val scrollingElement: Element?
|
open val scrollingElement: Element?
|
||||||
open val styleSheets: StyleSheetList
|
open val styleSheets: StyleSheetList
|
||||||
override var ongotpointercapture: ((Event) -> dynamic)?
|
override var ongotpointercapture: ((PointerEvent) -> dynamic)?
|
||||||
override var onlostpointercapture: ((Event) -> dynamic)?
|
override var onlostpointercapture: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerdown: ((Event) -> dynamic)?
|
override var onpointerdown: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointermove: ((Event) -> dynamic)?
|
override var onpointermove: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerup: ((Event) -> dynamic)?
|
override var onpointerup: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointercancel: ((Event) -> dynamic)?
|
override var onpointercancel: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerover: ((Event) -> dynamic)?
|
override var onpointerover: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerout: ((Event) -> dynamic)?
|
override var onpointerout: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerenter: ((Event) -> dynamic)?
|
override var onpointerenter: ((PointerEvent) -> dynamic)?
|
||||||
override var onpointerleave: ((Event) -> dynamic)?
|
override var onpointerleave: ((PointerEvent) -> dynamic)?
|
||||||
override var onabort: ((Event) -> dynamic)?
|
override var onabort: ((Event) -> dynamic)?
|
||||||
override var onblur: ((Event) -> dynamic)?
|
override var onblur: ((FocusEvent) -> dynamic)?
|
||||||
override var oncancel: ((Event) -> dynamic)?
|
override var oncancel: ((Event) -> dynamic)?
|
||||||
override var oncanplay: ((Event) -> dynamic)?
|
override var oncanplay: ((Event) -> dynamic)?
|
||||||
override var oncanplaythrough: ((Event) -> dynamic)?
|
override var oncanplaythrough: ((Event) -> dynamic)?
|
||||||
override var onchange: ((Event) -> dynamic)?
|
override var onchange: ((Event) -> dynamic)?
|
||||||
override var onclick: ((Event) -> dynamic)?
|
override var onclick: ((MouseEvent) -> dynamic)?
|
||||||
override var onclose: ((Event) -> dynamic)?
|
override var onclose: ((Event) -> dynamic)?
|
||||||
override var oncontextmenu: ((Event) -> dynamic)?
|
override var oncontextmenu: ((MouseEvent) -> dynamic)?
|
||||||
override var oncuechange: ((Event) -> dynamic)?
|
override var oncuechange: ((Event) -> dynamic)?
|
||||||
override var ondblclick: ((Event) -> dynamic)?
|
override var ondblclick: ((MouseEvent) -> dynamic)?
|
||||||
override var ondrag: ((Event) -> dynamic)?
|
override var ondrag: ((DragEvent) -> dynamic)?
|
||||||
override var ondragend: ((Event) -> dynamic)?
|
override var ondragend: ((DragEvent) -> dynamic)?
|
||||||
override var ondragenter: ((Event) -> dynamic)?
|
override var ondragenter: ((DragEvent) -> dynamic)?
|
||||||
override var ondragexit: ((Event) -> dynamic)?
|
override var ondragexit: ((DragEvent) -> dynamic)?
|
||||||
override var ondragleave: ((Event) -> dynamic)?
|
override var ondragleave: ((DragEvent) -> dynamic)?
|
||||||
override var ondragover: ((Event) -> dynamic)?
|
override var ondragover: ((DragEvent) -> dynamic)?
|
||||||
override var ondragstart: ((Event) -> dynamic)?
|
override var ondragstart: ((DragEvent) -> dynamic)?
|
||||||
override var ondrop: ((Event) -> dynamic)?
|
override var ondrop: ((DragEvent) -> dynamic)?
|
||||||
override var ondurationchange: ((Event) -> dynamic)?
|
override var ondurationchange: ((Event) -> dynamic)?
|
||||||
override var onemptied: ((Event) -> dynamic)?
|
override var onemptied: ((Event) -> dynamic)?
|
||||||
override var onended: ((Event) -> dynamic)?
|
override var onended: ((Event) -> dynamic)?
|
||||||
override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?
|
override var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?
|
||||||
override var onfocus: ((Event) -> dynamic)?
|
override var onfocus: ((FocusEvent) -> dynamic)?
|
||||||
override var oninput: ((Event) -> dynamic)?
|
override var oninput: ((InputEvent) -> dynamic)?
|
||||||
override var oninvalid: ((Event) -> dynamic)?
|
override var oninvalid: ((Event) -> dynamic)?
|
||||||
override var onkeydown: ((Event) -> dynamic)?
|
override var onkeydown: ((KeyboardEvent) -> dynamic)?
|
||||||
override var onkeypress: ((Event) -> dynamic)?
|
override var onkeypress: ((KeyboardEvent) -> dynamic)?
|
||||||
override var onkeyup: ((Event) -> dynamic)?
|
override var onkeyup: ((KeyboardEvent) -> dynamic)?
|
||||||
override var onload: ((Event) -> dynamic)?
|
override var onload: ((Event) -> dynamic)?
|
||||||
override var onloadeddata: ((Event) -> dynamic)?
|
override var onloadeddata: ((Event) -> dynamic)?
|
||||||
override var onloadedmetadata: ((Event) -> dynamic)?
|
override var onloadedmetadata: ((Event) -> dynamic)?
|
||||||
override var onloadend: ((Event) -> dynamic)?
|
override var onloadend: ((Event) -> dynamic)?
|
||||||
override var onloadstart: ((Event) -> dynamic)?
|
override var onloadstart: ((ProgressEvent) -> dynamic)?
|
||||||
override var onmousedown: ((Event) -> dynamic)?
|
override var onmousedown: ((MouseEvent) -> dynamic)?
|
||||||
override var onmouseenter: ((Event) -> dynamic)?
|
override var onmouseenter: ((MouseEvent) -> dynamic)?
|
||||||
override var onmouseleave: ((Event) -> dynamic)?
|
override var onmouseleave: ((MouseEvent) -> dynamic)?
|
||||||
override var onmousemove: ((Event) -> dynamic)?
|
override var onmousemove: ((MouseEvent) -> dynamic)?
|
||||||
override var onmouseout: ((Event) -> dynamic)?
|
override var onmouseout: ((MouseEvent) -> dynamic)?
|
||||||
override var onmouseover: ((Event) -> dynamic)?
|
override var onmouseover: ((MouseEvent) -> dynamic)?
|
||||||
override var onmouseup: ((Event) -> dynamic)?
|
override var onmouseup: ((MouseEvent) -> dynamic)?
|
||||||
override var onwheel: ((Event) -> dynamic)?
|
override var onwheel: ((WheelEvent) -> dynamic)?
|
||||||
override var onpause: ((Event) -> dynamic)?
|
override var onpause: ((Event) -> dynamic)?
|
||||||
override var onplay: ((Event) -> dynamic)?
|
override var onplay: ((Event) -> dynamic)?
|
||||||
override var onplaying: ((Event) -> dynamic)?
|
override var onplaying: ((Event) -> dynamic)?
|
||||||
override var onprogress: ((Event) -> dynamic)?
|
override var onprogress: ((ProgressEvent) -> dynamic)?
|
||||||
override var onratechange: ((Event) -> dynamic)?
|
override var onratechange: ((Event) -> dynamic)?
|
||||||
override var onreset: ((Event) -> dynamic)?
|
override var onreset: ((Event) -> dynamic)?
|
||||||
override var onresize: ((Event) -> dynamic)?
|
override var onresize: ((Event) -> dynamic)?
|
||||||
@@ -2032,7 +2032,7 @@ public external abstract class ApplicationCache : EventTarget {
|
|||||||
open var onerror: ((Event) -> dynamic)?
|
open var onerror: ((Event) -> dynamic)?
|
||||||
open var onnoupdate: ((Event) -> dynamic)?
|
open var onnoupdate: ((Event) -> dynamic)?
|
||||||
open var ondownloading: ((Event) -> dynamic)?
|
open var ondownloading: ((Event) -> dynamic)?
|
||||||
open var onprogress: ((Event) -> dynamic)?
|
open var onprogress: ((ProgressEvent) -> dynamic)?
|
||||||
open var onupdateready: ((Event) -> dynamic)?
|
open var onupdateready: ((Event) -> dynamic)?
|
||||||
open var oncached: ((Event) -> dynamic)?
|
open var oncached: ((Event) -> dynamic)?
|
||||||
open var onobsolete: ((Event) -> dynamic)?
|
open var onobsolete: ((Event) -> dynamic)?
|
||||||
@@ -2136,62 +2136,62 @@ public inline fun PromiseRejectionEventInit(promise: Promise<Any?>?, reason: Any
|
|||||||
* Exposes the JavaScript [GlobalEventHandlers](https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers) to Kotlin
|
* Exposes the JavaScript [GlobalEventHandlers](https://developer.mozilla.org/en/docs/Web/API/GlobalEventHandlers) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external interface GlobalEventHandlers {
|
public external interface GlobalEventHandlers {
|
||||||
var ongotpointercapture: ((Event) -> dynamic)?
|
var ongotpointercapture: ((PointerEvent) -> dynamic)?
|
||||||
var onlostpointercapture: ((Event) -> dynamic)?
|
var onlostpointercapture: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerdown: ((Event) -> dynamic)?
|
var onpointerdown: ((PointerEvent) -> dynamic)?
|
||||||
var onpointermove: ((Event) -> dynamic)?
|
var onpointermove: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerup: ((Event) -> dynamic)?
|
var onpointerup: ((PointerEvent) -> dynamic)?
|
||||||
var onpointercancel: ((Event) -> dynamic)?
|
var onpointercancel: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerover: ((Event) -> dynamic)?
|
var onpointerover: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerout: ((Event) -> dynamic)?
|
var onpointerout: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerenter: ((Event) -> dynamic)?
|
var onpointerenter: ((PointerEvent) -> dynamic)?
|
||||||
var onpointerleave: ((Event) -> dynamic)?
|
var onpointerleave: ((PointerEvent) -> dynamic)?
|
||||||
var onabort: ((Event) -> dynamic)?
|
var onabort: ((Event) -> dynamic)?
|
||||||
var onblur: ((Event) -> dynamic)?
|
var onblur: ((FocusEvent) -> dynamic)?
|
||||||
var oncancel: ((Event) -> dynamic)?
|
var oncancel: ((Event) -> dynamic)?
|
||||||
var oncanplay: ((Event) -> dynamic)?
|
var oncanplay: ((Event) -> dynamic)?
|
||||||
var oncanplaythrough: ((Event) -> dynamic)?
|
var oncanplaythrough: ((Event) -> dynamic)?
|
||||||
var onchange: ((Event) -> dynamic)?
|
var onchange: ((Event) -> dynamic)?
|
||||||
var onclick: ((Event) -> dynamic)?
|
var onclick: ((MouseEvent) -> dynamic)?
|
||||||
var onclose: ((Event) -> dynamic)?
|
var onclose: ((Event) -> dynamic)?
|
||||||
var oncontextmenu: ((Event) -> dynamic)?
|
var oncontextmenu: ((MouseEvent) -> dynamic)?
|
||||||
var oncuechange: ((Event) -> dynamic)?
|
var oncuechange: ((Event) -> dynamic)?
|
||||||
var ondblclick: ((Event) -> dynamic)?
|
var ondblclick: ((MouseEvent) -> dynamic)?
|
||||||
var ondrag: ((Event) -> dynamic)?
|
var ondrag: ((DragEvent) -> dynamic)?
|
||||||
var ondragend: ((Event) -> dynamic)?
|
var ondragend: ((DragEvent) -> dynamic)?
|
||||||
var ondragenter: ((Event) -> dynamic)?
|
var ondragenter: ((DragEvent) -> dynamic)?
|
||||||
var ondragexit: ((Event) -> dynamic)?
|
var ondragexit: ((DragEvent) -> dynamic)?
|
||||||
var ondragleave: ((Event) -> dynamic)?
|
var ondragleave: ((DragEvent) -> dynamic)?
|
||||||
var ondragover: ((Event) -> dynamic)?
|
var ondragover: ((DragEvent) -> dynamic)?
|
||||||
var ondragstart: ((Event) -> dynamic)?
|
var ondragstart: ((DragEvent) -> dynamic)?
|
||||||
var ondrop: ((Event) -> dynamic)?
|
var ondrop: ((DragEvent) -> dynamic)?
|
||||||
var ondurationchange: ((Event) -> dynamic)?
|
var ondurationchange: ((Event) -> dynamic)?
|
||||||
var onemptied: ((Event) -> dynamic)?
|
var onemptied: ((Event) -> dynamic)?
|
||||||
var onended: ((Event) -> dynamic)?
|
var onended: ((Event) -> dynamic)?
|
||||||
var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?
|
var onerror: ((dynamic, String, Int, Int, Any?) -> dynamic)?
|
||||||
var onfocus: ((Event) -> dynamic)?
|
var onfocus: ((FocusEvent) -> dynamic)?
|
||||||
var oninput: ((Event) -> dynamic)?
|
var oninput: ((InputEvent) -> dynamic)?
|
||||||
var oninvalid: ((Event) -> dynamic)?
|
var oninvalid: ((Event) -> dynamic)?
|
||||||
var onkeydown: ((Event) -> dynamic)?
|
var onkeydown: ((KeyboardEvent) -> dynamic)?
|
||||||
var onkeypress: ((Event) -> dynamic)?
|
var onkeypress: ((KeyboardEvent) -> dynamic)?
|
||||||
var onkeyup: ((Event) -> dynamic)?
|
var onkeyup: ((KeyboardEvent) -> dynamic)?
|
||||||
var onload: ((Event) -> dynamic)?
|
var onload: ((Event) -> dynamic)?
|
||||||
var onloadeddata: ((Event) -> dynamic)?
|
var onloadeddata: ((Event) -> dynamic)?
|
||||||
var onloadedmetadata: ((Event) -> dynamic)?
|
var onloadedmetadata: ((Event) -> dynamic)?
|
||||||
var onloadend: ((Event) -> dynamic)?
|
var onloadend: ((Event) -> dynamic)?
|
||||||
var onloadstart: ((Event) -> dynamic)?
|
var onloadstart: ((ProgressEvent) -> dynamic)?
|
||||||
var onmousedown: ((Event) -> dynamic)?
|
var onmousedown: ((MouseEvent) -> dynamic)?
|
||||||
var onmouseenter: ((Event) -> dynamic)?
|
var onmouseenter: ((MouseEvent) -> dynamic)?
|
||||||
var onmouseleave: ((Event) -> dynamic)?
|
var onmouseleave: ((MouseEvent) -> dynamic)?
|
||||||
var onmousemove: ((Event) -> dynamic)?
|
var onmousemove: ((MouseEvent) -> dynamic)?
|
||||||
var onmouseout: ((Event) -> dynamic)?
|
var onmouseout: ((MouseEvent) -> dynamic)?
|
||||||
var onmouseover: ((Event) -> dynamic)?
|
var onmouseover: ((MouseEvent) -> dynamic)?
|
||||||
var onmouseup: ((Event) -> dynamic)?
|
var onmouseup: ((MouseEvent) -> dynamic)?
|
||||||
var onwheel: ((Event) -> dynamic)?
|
var onwheel: ((WheelEvent) -> dynamic)?
|
||||||
var onpause: ((Event) -> dynamic)?
|
var onpause: ((Event) -> dynamic)?
|
||||||
var onplay: ((Event) -> dynamic)?
|
var onplay: ((Event) -> dynamic)?
|
||||||
var onplaying: ((Event) -> dynamic)?
|
var onplaying: ((Event) -> dynamic)?
|
||||||
var onprogress: ((Event) -> dynamic)?
|
var onprogress: ((ProgressEvent) -> dynamic)?
|
||||||
var onratechange: ((Event) -> dynamic)?
|
var onratechange: ((Event) -> dynamic)?
|
||||||
var onreset: ((Event) -> dynamic)?
|
var onreset: ((Event) -> dynamic)?
|
||||||
var onresize: ((Event) -> dynamic)?
|
var onresize: ((Event) -> dynamic)?
|
||||||
@@ -2215,18 +2215,18 @@ public external interface GlobalEventHandlers {
|
|||||||
public external interface WindowEventHandlers {
|
public external interface WindowEventHandlers {
|
||||||
var onafterprint: ((Event) -> dynamic)?
|
var onafterprint: ((Event) -> dynamic)?
|
||||||
var onbeforeprint: ((Event) -> dynamic)?
|
var onbeforeprint: ((Event) -> dynamic)?
|
||||||
var onbeforeunload: ((Event) -> String?)?
|
var onbeforeunload: ((BeforeUnloadEvent) -> String?)?
|
||||||
var onhashchange: ((Event) -> dynamic)?
|
var onhashchange: ((HashChangeEvent) -> dynamic)?
|
||||||
var onlanguagechange: ((Event) -> dynamic)?
|
var onlanguagechange: ((Event) -> dynamic)?
|
||||||
var onmessage: ((Event) -> dynamic)?
|
var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
var onoffline: ((Event) -> dynamic)?
|
var onoffline: ((Event) -> dynamic)?
|
||||||
var ononline: ((Event) -> dynamic)?
|
var ononline: ((Event) -> dynamic)?
|
||||||
var onpagehide: ((Event) -> dynamic)?
|
var onpagehide: ((PageTransitionEvent) -> dynamic)?
|
||||||
var onpageshow: ((Event) -> dynamic)?
|
var onpageshow: ((PageTransitionEvent) -> dynamic)?
|
||||||
var onpopstate: ((Event) -> dynamic)?
|
var onpopstate: ((PopStateEvent) -> dynamic)?
|
||||||
var onrejectionhandled: ((Event) -> dynamic)?
|
var onrejectionhandled: ((Event) -> dynamic)?
|
||||||
var onstorage: ((Event) -> dynamic)?
|
var onstorage: ((StorageEvent) -> dynamic)?
|
||||||
var onunhandledrejection: ((Event) -> dynamic)?
|
var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?
|
||||||
var onunload: ((Event) -> dynamic)?
|
var onunload: ((Event) -> dynamic)?
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2454,7 +2454,7 @@ public external open class EventSource(url: String, eventSourceInitDict: EventSo
|
|||||||
open val withCredentials: Boolean
|
open val withCredentials: Boolean
|
||||||
open val readyState: Short
|
open val readyState: Short
|
||||||
var onopen: ((Event) -> dynamic)?
|
var onopen: ((Event) -> dynamic)?
|
||||||
var onmessage: ((Event) -> dynamic)?
|
var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
var onerror: ((Event) -> dynamic)?
|
var onerror: ((Event) -> dynamic)?
|
||||||
fun close(): Unit
|
fun close(): Unit
|
||||||
|
|
||||||
@@ -2492,7 +2492,7 @@ public external open class WebSocket(url: String, protocols: dynamic = definedEx
|
|||||||
var onclose: ((Event) -> dynamic)?
|
var onclose: ((Event) -> dynamic)?
|
||||||
open val extensions: String
|
open val extensions: String
|
||||||
open val protocol: String
|
open val protocol: String
|
||||||
var onmessage: ((Event) -> dynamic)?
|
var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
var binaryType: BinaryType
|
var binaryType: BinaryType
|
||||||
fun close(code: Short = definedExternally, reason: String = definedExternally): Unit
|
fun close(code: Short = definedExternally, reason: String = definedExternally): Unit
|
||||||
fun send(data: String): Unit
|
fun send(data: String): Unit
|
||||||
@@ -2555,7 +2555,7 @@ public external open class MessageChannel {
|
|||||||
* Exposes the JavaScript [MessagePort](https://developer.mozilla.org/en/docs/Web/API/MessagePort) to Kotlin
|
* Exposes the JavaScript [MessagePort](https://developer.mozilla.org/en/docs/Web/API/MessagePort) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external abstract class MessagePort : EventTarget, UnionMessagePortOrWindow, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {
|
public external abstract class MessagePort : EventTarget, UnionMessagePortOrWindow, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker {
|
||||||
open var onmessage: ((Event) -> dynamic)?
|
open var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
||||||
fun start(): Unit
|
fun start(): Unit
|
||||||
fun close(): Unit
|
fun close(): Unit
|
||||||
@@ -2566,7 +2566,7 @@ public external abstract class MessagePort : EventTarget, UnionMessagePortOrWind
|
|||||||
*/
|
*/
|
||||||
public external open class BroadcastChannel(name: String) : EventTarget {
|
public external open class BroadcastChannel(name: String) : EventTarget {
|
||||||
open val name: String
|
open val name: String
|
||||||
var onmessage: ((Event) -> dynamic)?
|
var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
fun postMessage(message: Any?): Unit
|
fun postMessage(message: Any?): Unit
|
||||||
fun close(): Unit
|
fun close(): Unit
|
||||||
}
|
}
|
||||||
@@ -2583,7 +2583,7 @@ public external abstract class WorkerGlobalScope : EventTarget, WindowOrWorkerGl
|
|||||||
open var onoffline: ((Event) -> dynamic)?
|
open var onoffline: ((Event) -> dynamic)?
|
||||||
open var ononline: ((Event) -> dynamic)?
|
open var ononline: ((Event) -> dynamic)?
|
||||||
open var onrejectionhandled: ((Event) -> dynamic)?
|
open var onrejectionhandled: ((Event) -> dynamic)?
|
||||||
open var onunhandledrejection: ((Event) -> dynamic)?
|
open var onunhandledrejection: ((PromiseRejectionEvent) -> dynamic)?
|
||||||
fun importScripts(vararg urls: String): Unit
|
fun importScripts(vararg urls: String): Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2591,7 +2591,7 @@ public external abstract class WorkerGlobalScope : EventTarget, WindowOrWorkerGl
|
|||||||
* Exposes the JavaScript [DedicatedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/DedicatedWorkerGlobalScope) to Kotlin
|
* Exposes the JavaScript [DedicatedWorkerGlobalScope](https://developer.mozilla.org/en/docs/Web/API/DedicatedWorkerGlobalScope) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external abstract class DedicatedWorkerGlobalScope : WorkerGlobalScope {
|
public external abstract class DedicatedWorkerGlobalScope : WorkerGlobalScope {
|
||||||
open var onmessage: ((Event) -> dynamic)?
|
open var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
||||||
fun close(): Unit
|
fun close(): Unit
|
||||||
}
|
}
|
||||||
@@ -2617,7 +2617,7 @@ public external interface AbstractWorker {
|
|||||||
* Exposes the JavaScript [Worker](https://developer.mozilla.org/en/docs/Web/API/Worker) to Kotlin
|
* Exposes the JavaScript [Worker](https://developer.mozilla.org/en/docs/Web/API/Worker) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external open class Worker(scriptURL: String, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {
|
public external open class Worker(scriptURL: String, options: WorkerOptions = definedExternally) : EventTarget, AbstractWorker {
|
||||||
var onmessage: ((Event) -> dynamic)?
|
var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
override var onerror: ((Event) -> dynamic)?
|
override var onerror: ((Event) -> dynamic)?
|
||||||
fun terminate(): Unit
|
fun terminate(): Unit
|
||||||
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
fun postMessage(message: Any?, transfer: Array<dynamic> = definedExternally): Unit
|
||||||
|
|||||||
@@ -90,8 +90,8 @@ public external open class FileReader : EventTarget {
|
|||||||
open val readyState: Short
|
open val readyState: Short
|
||||||
open val result: dynamic
|
open val result: dynamic
|
||||||
open val error: dynamic
|
open val error: dynamic
|
||||||
var onloadstart: ((Event) -> dynamic)?
|
var onloadstart: ((ProgressEvent) -> dynamic)?
|
||||||
var onprogress: ((Event) -> dynamic)?
|
var onprogress: ((ProgressEvent) -> dynamic)?
|
||||||
var onload: ((Event) -> dynamic)?
|
var onload: ((Event) -> dynamic)?
|
||||||
var onabort: ((Event) -> dynamic)?
|
var onabort: ((Event) -> dynamic)?
|
||||||
var onerror: ((Event) -> dynamic)?
|
var onerror: ((Event) -> dynamic)?
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import org.w3c.xhr.*
|
|||||||
* Exposes the JavaScript [Notification](https://developer.mozilla.org/en/docs/Web/API/Notification) to Kotlin
|
* Exposes the JavaScript [Notification](https://developer.mozilla.org/en/docs/Web/API/Notification) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external open class Notification(title: String, options: NotificationOptions = definedExternally) : EventTarget {
|
public external open class Notification(title: String, options: NotificationOptions = definedExternally) : EventTarget {
|
||||||
var onclick: ((Event) -> dynamic)?
|
var onclick: ((MouseEvent) -> dynamic)?
|
||||||
var onerror: ((Event) -> dynamic)?
|
var onerror: ((Event) -> dynamic)?
|
||||||
open val title: String
|
open val title: String
|
||||||
open val dir: NotificationDirection
|
open val dir: NotificationDirection
|
||||||
|
|||||||
@@ -49,12 +49,12 @@ public external abstract class ServiceWorkerGlobalScope : WorkerGlobalScope {
|
|||||||
open val registration: ServiceWorkerRegistration
|
open val registration: ServiceWorkerRegistration
|
||||||
open var oninstall: ((Event) -> dynamic)?
|
open var oninstall: ((Event) -> dynamic)?
|
||||||
open var onactivate: ((Event) -> dynamic)?
|
open var onactivate: ((Event) -> dynamic)?
|
||||||
open var onfetch: ((Event) -> dynamic)?
|
open var onfetch: ((FetchEvent) -> dynamic)?
|
||||||
open var onforeignfetch: ((Event) -> dynamic)?
|
open var onforeignfetch: ((Event) -> dynamic)?
|
||||||
open var onmessage: ((Event) -> dynamic)?
|
open var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
open var onfunctionalevent: ((Event) -> dynamic)?
|
open var onfunctionalevent: ((Event) -> dynamic)?
|
||||||
open var onnotificationclick: ((Event) -> dynamic)?
|
open var onnotificationclick: ((NotificationEvent) -> dynamic)?
|
||||||
open var onnotificationclose: ((Event) -> dynamic)?
|
open var onnotificationclose: ((NotificationEvent) -> dynamic)?
|
||||||
fun skipWaiting(): Promise<Unit>
|
fun skipWaiting(): Promise<Unit>
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ public external abstract class ServiceWorkerContainer : EventTarget {
|
|||||||
open val controller: ServiceWorker?
|
open val controller: ServiceWorker?
|
||||||
open val ready: Promise<ServiceWorkerRegistration>
|
open val ready: Promise<ServiceWorkerRegistration>
|
||||||
open var oncontrollerchange: ((Event) -> dynamic)?
|
open var oncontrollerchange: ((Event) -> dynamic)?
|
||||||
open var onmessage: ((Event) -> dynamic)?
|
open var onmessage: ((MessageEvent) -> dynamic)?
|
||||||
fun register(scriptURL: String, options: RegistrationOptions = definedExternally): Promise<ServiceWorkerRegistration>
|
fun register(scriptURL: String, options: RegistrationOptions = definedExternally): Promise<ServiceWorkerRegistration>
|
||||||
fun getRegistration(clientURL: String = definedExternally): Promise<Any?>
|
fun getRegistration(clientURL: String = definedExternally): Promise<Any?>
|
||||||
fun getRegistrations(): Promise<dynamic>
|
fun getRegistrations(): Promise<dynamic>
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ import org.w3c.workers.*
|
|||||||
* Exposes the JavaScript [XMLHttpRequestEventTarget](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequestEventTarget) to Kotlin
|
* Exposes the JavaScript [XMLHttpRequestEventTarget](https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequestEventTarget) to Kotlin
|
||||||
*/
|
*/
|
||||||
public external abstract class XMLHttpRequestEventTarget : EventTarget {
|
public external abstract class XMLHttpRequestEventTarget : EventTarget {
|
||||||
open var onloadstart: ((Event) -> dynamic)?
|
open var onloadstart: ((ProgressEvent) -> dynamic)?
|
||||||
open var onprogress: ((Event) -> dynamic)?
|
open var onprogress: ((ProgressEvent) -> dynamic)?
|
||||||
open var onabort: ((Event) -> dynamic)?
|
open var onabort: ((Event) -> dynamic)?
|
||||||
open var onerror: ((Event) -> dynamic)?
|
open var onerror: ((Event) -> dynamic)?
|
||||||
open var onload: ((Event) -> dynamic)?
|
open var onload: ((Event) -> dynamic)?
|
||||||
|
|||||||
@@ -91,4 +91,71 @@ val kotlinBuiltinInterfaces = mapOf(
|
|||||||
primaryConstructor = null,
|
primaryConstructor = null,
|
||||||
secondaryConstructors = emptyList()
|
secondaryConstructors = emptyList()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val specifyEventMapper = mapOf<String, String>(
|
||||||
|
"onbeforeunload" to "BeforeUnloadEvent",
|
||||||
|
|
||||||
|
"ondrag" to "DragEvent",
|
||||||
|
"ondragend" to "DragEvent",
|
||||||
|
"ondragenter" to "DragEvent",
|
||||||
|
"ondragexit" to "DragEvent",
|
||||||
|
"ondragleave" to "DragEvent",
|
||||||
|
"ondragover" to "DragEvent",
|
||||||
|
"ondragstart" to "DragEvent",
|
||||||
|
"ondrop" to "DragEvent",
|
||||||
|
|
||||||
|
"onfetch" to "FetchEvent",
|
||||||
|
|
||||||
|
"onblur" to "FocusEvent",
|
||||||
|
"onfocus" to "FocusEvent",
|
||||||
|
|
||||||
|
"onhashchange" to "HashChangeEvent",
|
||||||
|
|
||||||
|
"oninput" to "InputEvent",
|
||||||
|
|
||||||
|
"onkeydown" to "KeyboardEvent",
|
||||||
|
"onkeypress" to "KeyboardEvent",
|
||||||
|
"onkeyup" to "KeyboardEvent",
|
||||||
|
|
||||||
|
"onmessage" to "MessageEvent",
|
||||||
|
|
||||||
|
"onclick" to "MouseEvent",
|
||||||
|
"oncontextmenu" to "MouseEvent",
|
||||||
|
"ondblclick" to "MouseEvent",
|
||||||
|
"onmousedown" to "MouseEvent",
|
||||||
|
"onmouseenter" to "MouseEvent",
|
||||||
|
"onmouseleave" to "MouseEvent",
|
||||||
|
"onmousemove" to "MouseEvent",
|
||||||
|
"onmouseout" to "MouseEvent",
|
||||||
|
"onmouseover" to "MouseEvent",
|
||||||
|
"onmouseup" to "MouseEvent",
|
||||||
|
|
||||||
|
"onnotificationclick" to "NotificationEvent",
|
||||||
|
"onnotificationclose" to "NotificationEvent",
|
||||||
|
|
||||||
|
"onpagehide" to "PageTransitionEvent",
|
||||||
|
"onpageshow" to "PageTransitionEvent",
|
||||||
|
|
||||||
|
"ongotpointercapture" to "PointerEvent",
|
||||||
|
"onlostpointercapture" to "PointerEvent",
|
||||||
|
"onpointercancel" to "PointerEvent",
|
||||||
|
"onpointerdown" to "PointerEvent",
|
||||||
|
"onpointerenter" to "PointerEvent",
|
||||||
|
"onpointerleave" to "PointerEvent",
|
||||||
|
"onpointermove" to "PointerEvent",
|
||||||
|
"onpointerout" to "PointerEvent",
|
||||||
|
"onpointerover" to "PointerEvent",
|
||||||
|
"onpointerup" to "PointerEvent",
|
||||||
|
|
||||||
|
"onpopstate" to "PopStateEvent",
|
||||||
|
|
||||||
|
"onloadstart" to "ProgressEvent",
|
||||||
|
"onprogress" to "ProgressEvent",
|
||||||
|
|
||||||
|
"onunhandledrejection" to "PromiseRejectionEvent",
|
||||||
|
|
||||||
|
"onstorage" to "StorageEvent",
|
||||||
|
|
||||||
|
"onwheel" to "WheelEvent"
|
||||||
|
)
|
||||||
|
|||||||
@@ -86,26 +86,26 @@ fun generateFunctions(repository: Repository, function: Operation): List<Generat
|
|||||||
return listOf(realFunction, getterOrSetterFunction, functionWithCallbackOrNull).filterNotNull()
|
return listOf(realFunction, getterOrSetterFunction, functionWithCallbackOrNull).filterNotNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun generateAttribute(putNoImpl: Boolean, repository: Repository, attribute: Attribute, nullableAttributes: Boolean): GenerateAttribute =
|
fun generateAttribute(putNoImpl: Boolean, repository: Repository, attribute: Attribute, nullableAttributes: Boolean): GenerateAttribute {
|
||||||
GenerateAttribute(attribute.name,
|
val mappedType = mapType(repository, attribute.type).let { if (nullableAttributes) it.toNullable() else it }
|
||||||
type = mapType(repository, attribute.type).let { if (nullableAttributes) it.toNullable() else it },
|
return GenerateAttribute(attribute.name,
|
||||||
initializer =
|
type = generalizeType(attribute.name, mappedType),
|
||||||
if (putNoImpl && !attribute.static) {
|
initializer =
|
||||||
mapLiteral(attribute.defaultValue, mapType(repository, attribute.type), repository.enums)
|
if (putNoImpl && !attribute.static) {
|
||||||
}
|
mapLiteral(attribute.defaultValue, mapType(repository, attribute.type), repository.enums)
|
||||||
else if (attribute.defaultValue != null) {
|
} else if (attribute.defaultValue != null) {
|
||||||
"definedExternally"
|
"definedExternally"
|
||||||
}
|
} else {
|
||||||
else {
|
null
|
||||||
null
|
},
|
||||||
},
|
getterSetterNoImpl = putNoImpl,
|
||||||
getterSetterNoImpl = putNoImpl,
|
kind = if (attribute.readOnly) AttributeKind.VAL else AttributeKind.VAR,
|
||||||
kind = if (attribute.readOnly) AttributeKind.VAL else AttributeKind.VAR,
|
override = false,
|
||||||
override = false,
|
vararg = attribute.vararg,
|
||||||
vararg = attribute.vararg,
|
static = attribute.static,
|
||||||
static = attribute.static,
|
required = attribute.required
|
||||||
required = attribute.required
|
)
|
||||||
)
|
}
|
||||||
|
|
||||||
private fun InterfaceDefinition.superTypes(repository: Repository) = superTypes.map { repository.interfaces[it] }.filterNotNull()
|
private fun InterfaceDefinition.superTypes(repository: Repository) = superTypes.map { repository.interfaces[it] }.filterNotNull()
|
||||||
private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefinition, constructors: List<ExtendedAttribute> = iface.findConstructors()): GenerateDefinitionKind =
|
private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefinition, constructors: List<ExtendedAttribute> = iface.findConstructors()): GenerateDefinitionKind =
|
||||||
@@ -259,6 +259,25 @@ private fun mapLiteral(literal: String?, expectedType: Type = DynamicType, enums
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun specifyType(name: String, type: Type): Type {
|
||||||
|
if ((type is SimpleType) && (type.type == "Event")) {
|
||||||
|
specifyEventMapper[name]?.let {
|
||||||
|
return type.copy(type = it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return type
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun generalizeType(name: String, type: Type): Type {
|
||||||
|
if ((type is FunctionType) && (type.parameterTypes.size == 1)) {
|
||||||
|
val paramAttribute = type.parameterTypes[0]
|
||||||
|
return type.copy(parameterTypes = listOf(paramAttribute.copy(type = specifyType(name, paramAttribute.type))))
|
||||||
|
}
|
||||||
|
return type
|
||||||
|
}
|
||||||
|
|
||||||
fun implementInterfaces(declarations: List<GenerateTraitOrClass>) {
|
fun implementInterfaces(declarations: List<GenerateTraitOrClass>) {
|
||||||
val unimplementedMemberMap = getUnimplementedMembers(declarations)
|
val unimplementedMemberMap = getUnimplementedMembers(declarations)
|
||||||
val nonAbstractDeclarations = declarations.filter { it.kind == GenerateDefinitionKind.CLASS }
|
val nonAbstractDeclarations = declarations.filter { it.kind == GenerateDefinitionKind.CLASS }
|
||||||
@@ -266,7 +285,7 @@ fun implementInterfaces(declarations: List<GenerateTraitOrClass>) {
|
|||||||
val unimplementedMembers = unimplementedMemberMap[declaration.name] ?: continue
|
val unimplementedMembers = unimplementedMemberMap[declaration.name] ?: continue
|
||||||
|
|
||||||
for (attribute in unimplementedMembers.attributes) {
|
for (attribute in unimplementedMembers.attributes) {
|
||||||
declaration.memberAttributes += attribute.copy(override = true)
|
declaration.memberAttributes += attribute.copy(override = true, type = generalizeType(attribute.name, attribute.type))
|
||||||
}
|
}
|
||||||
for (function in unimplementedMembers.functions) {
|
for (function in unimplementedMembers.functions) {
|
||||||
declaration.memberFunctions += function.copy(override = true)
|
declaration.memberFunctions += function.copy(override = true)
|
||||||
|
|||||||
@@ -19,42 +19,49 @@ package org.jetbrains.idl2k
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
private val typeMapper = mapOf(
|
private val typeMapper = mapOf(
|
||||||
"unsignedlong" to SimpleType("Int", false),
|
"unsignedlong" to SimpleType("Int", false),
|
||||||
"unsignedlonglong" to SimpleType("Int", false),
|
"unsignedlonglong" to SimpleType("Int", false),
|
||||||
"longlong" to SimpleType("Int", false),
|
"longlong" to SimpleType("Int", false),
|
||||||
"unsignedshort" to SimpleType("Short", false),
|
"unsignedshort" to SimpleType("Short", false),
|
||||||
"unsignedbyte" to SimpleType("Byte", false),
|
"unsignedbyte" to SimpleType("Byte", false),
|
||||||
"octet" to SimpleType("Byte", false),
|
"octet" to SimpleType("Byte", false),
|
||||||
"void" to UnitType,
|
"void" to UnitType,
|
||||||
"boolean" to SimpleType("Boolean", false),
|
"boolean" to SimpleType("Boolean", false),
|
||||||
"byte" to SimpleType("Byte", false),
|
"byte" to SimpleType("Byte", false),
|
||||||
"short" to SimpleType("Short", false),
|
"short" to SimpleType("Short", false),
|
||||||
"long" to SimpleType("Int", false),
|
"long" to SimpleType("Int", false),
|
||||||
"float" to SimpleType("Float", false),
|
"float" to SimpleType("Float", false),
|
||||||
"double" to SimpleType("Double", false),
|
"double" to SimpleType("Double", false),
|
||||||
"any" to AnyType(true),
|
"any" to AnyType(true),
|
||||||
"DOMTimeStamp" to SimpleType("Number", false),
|
"DOMTimeStamp" to SimpleType("Number", false),
|
||||||
"object" to DynamicType, // TODO map to Any?
|
"object" to DynamicType, // TODO map to Any?
|
||||||
"WindowProxy" to SimpleType("Window", false),
|
"WindowProxy" to SimpleType("Window", false),
|
||||||
"USVString" to SimpleType("String", false),
|
"USVString" to SimpleType("String", false),
|
||||||
"DOMString" to SimpleType("String", false),
|
"DOMString" to SimpleType("String", false),
|
||||||
"ByteString" to SimpleType("String", false),
|
"ByteString" to SimpleType("String", false),
|
||||||
"DOMError" to DynamicType,
|
"DOMError" to DynamicType,
|
||||||
"Elements" to DynamicType,
|
"Elements" to DynamicType,
|
||||||
"Date" to SimpleType("Date", false),
|
"Date" to SimpleType("Date", false),
|
||||||
"" to DynamicType
|
"" to DynamicType
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) = LinkedHashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
|
fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) =
|
||||||
|
LinkedHashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
|
||||||
|
|
||||||
tailrec fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
|
tailrec fun allSuperTypesImpl(
|
||||||
|
roots: List<GenerateTraitOrClass>,
|
||||||
|
all: Map<String, GenerateTraitOrClass>,
|
||||||
|
result: MutableSet<GenerateTraitOrClass>
|
||||||
|
) {
|
||||||
if (roots.isNotEmpty()) {
|
if (roots.isNotEmpty()) {
|
||||||
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] ?: all[it.substringBefore("<")] }.filterNotNull().filter { result.add(it) }, all, result)
|
allSuperTypesImpl(roots.flatMap { it.superTypes }.map {
|
||||||
|
all[it] ?: all[it.substringBefore("<")]
|
||||||
|
}.filterNotNull().filter { result.add(it) }, all, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun standardTypes() = typeMapper.values.map {it.dropNullable()}.toSet()
|
fun standardTypes() = typeMapper.values.map { it.dropNullable() }.toSet()
|
||||||
fun Type.dynamicIfUnknownType(allTypes: Set<String>, standardTypes: Set<Type> = standardTypes()): Type = when {
|
fun Type.dynamicIfUnknownType(allTypes: Set<String>, standardTypes: Set<Type> = standardTypes()): Type = when {
|
||||||
this is DynamicType || this is UnitType -> this
|
this is DynamicType || this is UnitType -> this
|
||||||
|
|
||||||
@@ -62,7 +69,16 @@ fun Type.dynamicIfUnknownType(allTypes: Set<String>, standardTypes: Set<Type> =
|
|||||||
this.dropNullable() in standardTypes -> this
|
this.dropNullable() in standardTypes -> this
|
||||||
this is ArrayType -> copy(memberType = this.memberType.dynamicIfUnknownType(allTypes, standardTypes))
|
this is ArrayType -> copy(memberType = this.memberType.dynamicIfUnknownType(allTypes, standardTypes))
|
||||||
this is UnionType -> if (this.name !in allTypes) DynamicType else this
|
this is UnionType -> if (this.name !in allTypes) DynamicType else this
|
||||||
this is FunctionType -> copy(returnType = returnType.dynamicIfUnknownType(allTypes, standardTypes), parameterTypes = parameterTypes.map { it.copy(type = it.type.dynamicIfUnknownType(allTypes, standardTypes)) })
|
this is FunctionType -> copy(
|
||||||
|
returnType = returnType.dynamicIfUnknownType(allTypes, standardTypes),
|
||||||
|
parameterTypes = parameterTypes.map {
|
||||||
|
it.copy(
|
||||||
|
type = it.type.dynamicIfUnknownType(
|
||||||
|
allTypes,
|
||||||
|
standardTypes
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
this is PromiseType ->
|
this is PromiseType ->
|
||||||
copy(valueType = valueType.dynamicIfUnknownType(allTypes, standardTypes))
|
copy(valueType = valueType.dynamicIfUnknownType(allTypes, standardTypes))
|
||||||
|
|
||||||
@@ -84,11 +100,15 @@ internal fun mapType(repository: Repository, type: Type): Type = when (type) {
|
|||||||
}
|
}
|
||||||
is PromiseType -> type.copy(valueType = mapType(repository, type.valueType))
|
is PromiseType -> type.copy(valueType = mapType(repository, type.valueType))
|
||||||
is ArrayType -> type.copy(memberType = mapType(repository, type.memberType))
|
is ArrayType -> type.copy(memberType = mapType(repository, type.memberType))
|
||||||
is UnionType -> UnionType(type.namespace, type.memberTypes.map { mt -> mapType(repository, mt) }, type.nullable).toSingleTypeIfPossible()
|
is UnionType -> UnionType(
|
||||||
|
type.namespace,
|
||||||
|
type.memberTypes.map { mt -> mapType(repository, mt) },
|
||||||
|
type.nullable
|
||||||
|
).toSingleTypeIfPossible()
|
||||||
is FunctionType -> type.copy(
|
is FunctionType -> type.copy(
|
||||||
// TODO: Remove takeWhile { !vararg } when we have varargs supported. See KT-3115
|
// TODO: Remove takeWhile { !vararg } when we have varargs supported. See KT-3115
|
||||||
returnType = mapType(repository, type.returnType).dynamicIfAnyType(),
|
returnType = mapType(repository, type.returnType).dynamicIfAnyType(),
|
||||||
parameterTypes = type.parameterTypes.takeWhile { !it.vararg }.map { it.copy(type = mapType(repository, it.type)) }
|
parameterTypes = type.parameterTypes.takeWhile { !it.vararg }.map { it.copy(type = mapType(repository, it.type)) }
|
||||||
)
|
)
|
||||||
|
|
||||||
is AnyType,
|
is AnyType,
|
||||||
@@ -100,30 +120,39 @@ private fun mapTypedef(repository: Repository, type: SimpleType): Type {
|
|||||||
val typedef = repository.typeDefs[type.type]!!
|
val typedef = repository.typeDefs[type.type]!!
|
||||||
|
|
||||||
return when {
|
return when {
|
||||||
typedef.types is UnionType && typedef.types.memberTypes.size == 1 -> mapType(repository, typedef.types.memberTypes.single().withNullability(type.nullable))
|
typedef.types is UnionType && typedef.types.memberTypes.size == 1 -> mapType(
|
||||||
|
repository,
|
||||||
|
typedef.types.memberTypes.single().withNullability(type.nullable)
|
||||||
|
)
|
||||||
typedef.types is UnionType -> SimpleType(typedef.name, type.nullable)
|
typedef.types is UnionType -> SimpleType(typedef.name, type.nullable)
|
||||||
else -> mapType(repository, typedef.types.withNullability(type.nullable))
|
else -> mapType(repository, typedef.types.withNullability(type.nullable))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun GenerateFunction?.allTypes() = if (this != null) sequenceOf(returnType) + arguments.asSequence().map { it.type } else emptySequence()
|
private fun GenerateFunction?.allTypes() =
|
||||||
|
if (this != null) sequenceOf(returnType) + arguments.asSequence().map { it.type } else emptySequence()
|
||||||
|
|
||||||
internal fun collectUnionTypes(allTypes: Map<String, GenerateTraitOrClass>) =
|
internal fun collectUnionTypes(allTypes: Map<String, GenerateTraitOrClass>) =
|
||||||
allTypes.values.asSequence()
|
allTypes.values.asSequence()
|
||||||
.flatMap {
|
.flatMap {
|
||||||
it.secondaryConstructors.asSequence().flatMap { it.constructor.allTypes() } +
|
it.secondaryConstructors.asSequence().flatMap { it.constructor.allTypes() } +
|
||||||
sequenceOf(it.primaryConstructor).filterNotNull().flatMap { it.constructor.allTypes() } +
|
sequenceOf(it.primaryConstructor).filterNotNull().flatMap { it.constructor.allTypes() } +
|
||||||
it.memberAttributes.asSequence().map { it.type } +
|
it.memberAttributes.asSequence().map { it.type } +
|
||||||
it.memberFunctions.asSequence().flatMap { it.allTypes() }
|
it.memberFunctions.asSequence().flatMap { it.allTypes() }
|
||||||
}
|
}
|
||||||
.filterIsInstance<UnionType>()
|
.filterIsInstance<UnionType>()
|
||||||
.map { it.dropNullable() }
|
.map { it.dropNullable() }
|
||||||
.filter { it.memberTypes.all { unionMember -> unionMember is SimpleType && unionMember.type in allTypes } }
|
.filter { it.memberTypes.all { unionMember -> unionMember is SimpleType && unionMember.type in allTypes } }
|
||||||
.distinct()
|
.distinct()
|
||||||
.map { it.copy(namespace = guessPackage(it.memberTypes.filterIsInstance<SimpleType>().map { it.type }, allTypes), types = it.memberTypes) }
|
.map {
|
||||||
|
it.copy(
|
||||||
|
namespace = guessPackage(it.memberTypes.filterIsInstance<SimpleType>().map { it.type }, allTypes),
|
||||||
|
types = it.memberTypes
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun guessPackage(types : List<String>, allTypes: Map<String, GenerateTraitOrClass>) =
|
private fun guessPackage(types: List<String>, allTypes: Map<String, GenerateTraitOrClass>) =
|
||||||
types.map { allTypes[it] }
|
types.map { allTypes[it] }
|
||||||
.map { it?.namespace }
|
.map { it?.namespace }
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.filter { it.isNotEmpty() }
|
.filter { it.isNotEmpty() }
|
||||||
|
|||||||
Reference in New Issue
Block a user