From 0ce1edd41799d1537b4948547e60eac9b5b8e2f1 Mon Sep 17 00:00:00 2001 From: Sergey Mashkov Date: Wed, 13 May 2015 15:03:11 +0300 Subject: [PATCH] JS IDL2K better callbacks support + bugfixes according to review --- .../src/generated/org.khronos.webgl.kt | 105 +-- .../src/generated/org.w3c.dom.css.kt | 6 +- .../src/generated/org.w3c.dom.events.kt | 1 + js/js.libraries/src/generated/org.w3c.dom.kt | 724 +++++++++--------- .../src/generated/org.w3c.dom.parsing.kt | 1 + .../src/generated/org.w3c.dom.svg.kt | 1 + .../src/generated/org.w3c.fetch.kt | 3 +- .../src/generated/org.w3c.files.kt | 17 +- .../src/generated/org.w3c.notifications.kt | 12 +- js/js.libraries/src/generated/org.w3c.time.kt | 25 + .../src/generated/org.w3c.workers.kt | 51 +- js/js.libraries/src/generated/org.w3c.xhr.kt | 21 +- libraries/idl/org.w3c.dom.css.ext.idl | 2 +- libraries/idl/org.w3c.dom.idl | 6 + libraries/idl/org.w3c.time.idl | 8 + libraries/idl/org.w3c.webidl.idl | 7 + libraries/stdlib/src/kotlin/dom/Dom.kt | 2 +- .../main/antlr4/org/antlr/webidl/WebIDL.g4 | 2 +- .../tools/idl2k/src/main/kotlin/download.kt | 3 + libraries/tools/idl2k/src/main/kotlin/gen.kt | 48 +- libraries/tools/idl2k/src/main/kotlin/idl.kt | 95 ++- libraries/tools/idl2k/src/main/kotlin/main.kt | 19 +- .../tools/idl2k/src/main/kotlin/model.kt | 13 +- .../tools/idl2k/src/main/kotlin/render.kt | 26 +- .../idl2k/src/main/kotlin/typeMappings.kt | 55 +- .../tools/idl2k/src/main/kotlin/utils.kt | 43 ++ 26 files changed, 708 insertions(+), 588 deletions(-) create mode 100644 js/js.libraries/src/generated/org.w3c.time.kt create mode 100644 libraries/idl/org.w3c.time.idl create mode 100644 libraries/idl/org.w3c.webidl.idl create mode 100644 libraries/tools/idl2k/src/main/kotlin/utils.kt diff --git a/js/js.libraries/src/generated/org.khronos.webgl.kt b/js/js.libraries/src/generated/org.khronos.webgl.kt index 0eceda2c77b..e1cfc030044 100644 --- a/js/js.libraries/src/generated/org.khronos.webgl.kt +++ b/js/js.libraries/src/generated/org.khronos.webgl.kt @@ -15,6 +15,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* @@ -77,7 +78,7 @@ native public trait WebGLShaderPrecisionFormat { set(value) = noImpl } -native public trait WebGLRenderingContext { +native public trait WebGLRenderingContext : RenderingContext { var canvas: HTMLCanvasElement get() = noImpl set(value) = noImpl @@ -89,7 +90,7 @@ native public trait WebGLRenderingContext { set(value) = noImpl fun getContextAttributes(): WebGLContextAttributes? = noImpl fun isContextLost(): Boolean = noImpl - fun getSupportedExtensions(): Any? = noImpl + fun getSupportedExtensions(): Array = noImpl fun getExtension(name: String): dynamic = noImpl fun activeTexture(texture: Int): Unit = noImpl fun attachShader(program: WebGLProgram?, shader: WebGLShader?): Unit = noImpl @@ -113,8 +114,8 @@ native public trait WebGLRenderingContext { fun clearStencil(s: Int): Unit = noImpl fun colorMask(red: Boolean, green: Boolean, blue: Boolean, alpha: Boolean): Unit = noImpl fun compileShader(shader: WebGLShader?): Unit = noImpl - fun compressedTexImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, data: dynamic): Unit = noImpl - fun compressedTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, data: dynamic): Unit = noImpl + fun compressedTexImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, data: ArrayBufferView): Unit = noImpl + fun compressedTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, data: ArrayBufferView): Unit = noImpl fun copyTexImage2D(target: Int, level: Int, internalformat: Int, x: Int, y: Int, width: Int, height: Int, border: Int): Unit = noImpl fun copyTexSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, x: Int, y: Int, width: Int, height: Int): Unit = noImpl fun createBuffer(): WebGLBuffer? = noImpl @@ -148,23 +149,23 @@ native public trait WebGLRenderingContext { fun generateMipmap(target: Int): Unit = noImpl fun getActiveAttrib(program: WebGLProgram?, index: Int): WebGLActiveInfo? = noImpl fun getActiveUniform(program: WebGLProgram?, index: Int): WebGLActiveInfo? = noImpl - fun getAttachedShaders(program: WebGLProgram?): Any? = noImpl + fun getAttachedShaders(program: WebGLProgram?): Array = noImpl fun getAttribLocation(program: WebGLProgram?, name: String): Int = noImpl - fun getBufferParameter(target: Int, pname: Int): Any? = noImpl - fun getParameter(pname: Int): Any? = noImpl + fun getBufferParameter(target: Int, pname: Int): dynamic = noImpl + fun getParameter(pname: Int): dynamic = noImpl fun getError(): Int = noImpl - fun getFramebufferAttachmentParameter(target: Int, attachment: Int, pname: Int): Any? = noImpl - fun getProgramParameter(program: WebGLProgram?, pname: Int): Any? = noImpl + fun getFramebufferAttachmentParameter(target: Int, attachment: Int, pname: Int): dynamic = noImpl + fun getProgramParameter(program: WebGLProgram?, pname: Int): dynamic = noImpl fun getProgramInfoLog(program: WebGLProgram?): String? = noImpl - fun getRenderbufferParameter(target: Int, pname: Int): Any? = noImpl - fun getShaderParameter(shader: WebGLShader?, pname: Int): Any? = noImpl + fun getRenderbufferParameter(target: Int, pname: Int): dynamic = noImpl + fun getShaderParameter(shader: WebGLShader?, pname: Int): dynamic = noImpl fun getShaderPrecisionFormat(shadertype: Int, precisiontype: Int): WebGLShaderPrecisionFormat? = noImpl fun getShaderInfoLog(shader: WebGLShader?): String? = noImpl fun getShaderSource(shader: WebGLShader?): String? = noImpl - fun getTexParameter(target: Int, pname: Int): Any? = noImpl - fun getUniform(program: WebGLProgram?, location: WebGLUniformLocation?): Any? = noImpl + fun getTexParameter(target: Int, pname: Int): dynamic = noImpl + fun getUniform(program: WebGLProgram?, location: WebGLUniformLocation?): dynamic = noImpl fun getUniformLocation(program: WebGLProgram?, name: String): WebGLUniformLocation? = noImpl - fun getVertexAttrib(index: Int, pname: Int): Any? = noImpl + fun getVertexAttrib(index: Int, pname: Int): dynamic = noImpl fun getVertexAttribOffset(index: Int, pname: Int): Long = noImpl fun hint(target: Int, mode: Int): Unit = noImpl fun isBuffer(buffer: WebGLBuffer?): Boolean = noImpl @@ -178,7 +179,7 @@ native public trait WebGLRenderingContext { fun linkProgram(program: WebGLProgram?): Unit = noImpl fun pixelStorei(pname: Int, param: Int): Unit = noImpl fun polygonOffset(factor: Float, units: Float): Unit = noImpl - fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, pixels: dynamic): Unit = noImpl + fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit = noImpl fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int): Unit = noImpl fun sampleCoverage(value: Float, invert: Boolean): Unit = noImpl fun scissor(x: Int, y: Int, width: Int, height: Int): Unit = noImpl @@ -189,56 +190,56 @@ native public trait WebGLRenderingContext { fun stencilMaskSeparate(face: Int, mask: Int): Unit = noImpl fun stencilOp(fail: Int, zfail: Int, zpass: Int): Unit = noImpl fun stencilOpSeparate(face: Int, fail: Int, zfail: Int, zpass: Int): Unit = noImpl - fun texImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, pixels: dynamic): Unit = noImpl + fun texImage2D(target: Int, level: Int, internalformat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit = noImpl fun texImage2D(target: Int, level: Int, internalformat: Int, format: Int, type: Int, source: dynamic): Unit = noImpl fun texParameterf(target: Int, pname: Int, param: Float): Unit = noImpl fun texParameteri(target: Int, pname: Int, param: Int): Unit = noImpl - fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, type: Int, pixels: dynamic): Unit = noImpl + fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, width: Int, height: Int, format: Int, type: Int, pixels: ArrayBufferView?): Unit = noImpl fun texSubImage2D(target: Int, level: Int, xoffset: Int, yoffset: Int, format: Int, type: Int, source: dynamic): Unit = noImpl fun uniform1f(location: WebGLUniformLocation?, x: Float): Unit = noImpl fun uniform1fv(location: WebGLUniformLocation?, v: Float32Array): Unit = noImpl - fun uniform1fv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform1fv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform1i(location: WebGLUniformLocation?, x: Int): Unit = noImpl fun uniform1iv(location: WebGLUniformLocation?, v: Int32Array): Unit = noImpl - fun uniform1iv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform1iv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform2f(location: WebGLUniformLocation?, x: Float, y: Float): Unit = noImpl fun uniform2fv(location: WebGLUniformLocation?, v: Float32Array): Unit = noImpl - fun uniform2fv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform2fv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform2i(location: WebGLUniformLocation?, x: Int, y: Int): Unit = noImpl fun uniform2iv(location: WebGLUniformLocation?, v: Int32Array): Unit = noImpl - fun uniform2iv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform2iv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform3f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float): Unit = noImpl fun uniform3fv(location: WebGLUniformLocation?, v: Float32Array): Unit = noImpl - fun uniform3fv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform3fv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform3i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int): Unit = noImpl fun uniform3iv(location: WebGLUniformLocation?, v: Int32Array): Unit = noImpl - fun uniform3iv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform3iv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform4f(location: WebGLUniformLocation?, x: Float, y: Float, z: Float, w: Float): Unit = noImpl fun uniform4fv(location: WebGLUniformLocation?, v: Float32Array): Unit = noImpl - fun uniform4fv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform4fv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniform4i(location: WebGLUniformLocation?, x: Int, y: Int, z: Int, w: Int): Unit = noImpl fun uniform4iv(location: WebGLUniformLocation?, v: Int32Array): Unit = noImpl - fun uniform4iv(location: WebGLUniformLocation?, v: Any): Unit = noImpl + fun uniform4iv(location: WebGLUniformLocation?, v: Array): Unit = noImpl fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit = noImpl - fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Any): Unit = noImpl + fun uniformMatrix2fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit = noImpl fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit = noImpl - fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Any): Unit = noImpl + fun uniformMatrix3fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit = noImpl fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Float32Array): Unit = noImpl - fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Any): Unit = noImpl + fun uniformMatrix4fv(location: WebGLUniformLocation?, transpose: Boolean, value: Array): Unit = noImpl fun useProgram(program: WebGLProgram?): Unit = noImpl fun validateProgram(program: WebGLProgram?): Unit = noImpl fun vertexAttrib1f(indx: Int, x: Float): Unit = noImpl fun vertexAttrib1fv(indx: Int, values: Float32Array): Unit = noImpl - fun vertexAttrib1fv(indx: Int, values: Any): Unit = noImpl + fun vertexAttrib1fv(indx: Int, values: Array): Unit = noImpl fun vertexAttrib2f(indx: Int, x: Float, y: Float): Unit = noImpl fun vertexAttrib2fv(indx: Int, values: Float32Array): Unit = noImpl - fun vertexAttrib2fv(indx: Int, values: Any): Unit = noImpl + fun vertexAttrib2fv(indx: Int, values: Array): Unit = noImpl fun vertexAttrib3f(indx: Int, x: Float, y: Float, z: Float): Unit = noImpl fun vertexAttrib3fv(indx: Int, values: Float32Array): Unit = noImpl - fun vertexAttrib3fv(indx: Int, values: Any): Unit = noImpl + fun vertexAttrib3fv(indx: Int, values: Array): Unit = noImpl fun vertexAttrib4f(indx: Int, x: Float, y: Float, z: Float, w: Float): Unit = noImpl fun vertexAttrib4fv(indx: Int, values: Float32Array): Unit = noImpl - fun vertexAttrib4fv(indx: Int, values: Any): Unit = noImpl + fun vertexAttrib4fv(indx: Int, values: Array): Unit = noImpl fun vertexAttribPointer(indx: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Long): Unit = noImpl fun viewport(x: Int, y: Int, width: Int, height: Int): Unit = noImpl @@ -553,14 +554,14 @@ native public open class WebGLContextEventInit : EventInit() { var statusMessage: String } -native public open class ArrayBuffer(length: Int) { +native public open class ArrayBuffer(length: Int) : Transferable { var byteLength: Int get() = noImpl set(value) = noImpl fun slice(begin: Int, end: Int = noImpl): ArrayBuffer = noImpl } -native public open class Int8Array(length: Int) { +native public open class Int8Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -576,7 +577,7 @@ native public open class Int8Array(length: Int) { fun get(index: Int): Byte = noImpl fun set(index: Int, value: Byte): Unit = noImpl fun set(array: Int8Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Int8Array = noImpl companion object { @@ -584,7 +585,7 @@ native public open class Int8Array(length: Int) { } } -native public open class Uint8Array(length: Int) { +native public open class Uint8Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -600,7 +601,7 @@ native public open class Uint8Array(length: Int) { fun get(index: Int): Byte = noImpl fun set(index: Int, value: Byte): Unit = noImpl fun set(array: Uint8Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Uint8Array = noImpl companion object { @@ -608,7 +609,7 @@ native public open class Uint8Array(length: Int) { } } -native public open class Uint8ClampedArray(length: Int) { +native public open class Uint8ClampedArray(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -624,7 +625,7 @@ native public open class Uint8ClampedArray(length: Int) { fun get(index: Int): Byte = noImpl fun set(index: Int, value: Byte): Unit = noImpl fun set(array: Uint8ClampedArray, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Uint8ClampedArray = noImpl companion object { @@ -632,7 +633,7 @@ native public open class Uint8ClampedArray(length: Int) { } } -native public open class Int16Array(length: Int) { +native public open class Int16Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -648,7 +649,7 @@ native public open class Int16Array(length: Int) { fun get(index: Int): Short = noImpl fun set(index: Int, value: Short): Unit = noImpl fun set(array: Int16Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Int16Array = noImpl companion object { @@ -656,7 +657,7 @@ native public open class Int16Array(length: Int) { } } -native public open class Uint16Array(length: Int) { +native public open class Uint16Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -672,7 +673,7 @@ native public open class Uint16Array(length: Int) { fun get(index: Int): Short = noImpl fun set(index: Int, value: Short): Unit = noImpl fun set(array: Uint16Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Uint16Array = noImpl companion object { @@ -680,7 +681,7 @@ native public open class Uint16Array(length: Int) { } } -native public open class Int32Array(length: Int) { +native public open class Int32Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -696,7 +697,7 @@ native public open class Int32Array(length: Int) { fun get(index: Int): Int = noImpl fun set(index: Int, value: Int): Unit = noImpl fun set(array: Int32Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Int32Array = noImpl companion object { @@ -704,7 +705,7 @@ native public open class Int32Array(length: Int) { } } -native public open class Uint32Array(length: Int) { +native public open class Uint32Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -720,7 +721,7 @@ native public open class Uint32Array(length: Int) { fun get(index: Int): Int = noImpl fun set(index: Int, value: Int): Unit = noImpl fun set(array: Uint32Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Uint32Array = noImpl companion object { @@ -728,7 +729,7 @@ native public open class Uint32Array(length: Int) { } } -native public open class Float32Array(length: Int) { +native public open class Float32Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -744,7 +745,7 @@ native public open class Float32Array(length: Int) { fun get(index: Int): Float = noImpl fun set(index: Int, value: Float): Unit = noImpl fun set(array: Float32Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Float32Array = noImpl companion object { @@ -752,7 +753,7 @@ native public open class Float32Array(length: Int) { } } -native public open class Float64Array(length: Int) { +native public open class Float64Array(length: Int) : ArrayBufferView { var length: Int get() = noImpl set(value) = noImpl @@ -768,7 +769,7 @@ native public open class Float64Array(length: Int) { fun get(index: Int): Double = noImpl fun set(index: Int, value: Double): Unit = noImpl fun set(array: Float64Array, offset: Int = noImpl): Unit = noImpl - fun set(array: dynamic, offset: Int = noImpl): Unit = noImpl + fun set(array: Array, offset: Int = noImpl): Unit = noImpl fun subarray(start: Int, end: Int): Float64Array = noImpl companion object { @@ -776,7 +777,7 @@ native public open class Float64Array(length: Int) { } } -native public open class DataView(buffer: ArrayBuffer, byteOffset: Int = noImpl, byteLength: Int = noImpl) { +native public open class DataView(buffer: ArrayBuffer, byteOffset: Int = noImpl, byteLength: Int = noImpl) : ArrayBufferView { var buffer: ArrayBuffer get() = noImpl set(value) = noImpl diff --git a/js/js.libraries/src/generated/org.w3c.dom.css.kt b/js/js.libraries/src/generated/org.w3c.dom.css.kt index 25f1876fe88..23c0f7a3a0f 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.css.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.css.kt @@ -15,6 +15,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* @@ -444,7 +445,7 @@ native public trait CSSStyleDeclaration { var flexWrap: String get() = noImpl set(value) = noImpl - var attribute: String + var cssFloat: String get() = noImpl set(value) = noImpl var font: String @@ -852,9 +853,6 @@ native public trait CSSStyleDeclaration { var parentRule: CSSRule? get() = noImpl set(value) = noImpl - var cssFloat: String - get() = noImpl - set(value) = noImpl var _dashed_attribute: String get() = noImpl set(value) = noImpl diff --git a/js/js.libraries/src/generated/org.w3c.dom.events.kt b/js/js.libraries/src/generated/org.w3c.dom.events.kt index 2023d0be3aa..46613fe72c6 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.events.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.events.kt @@ -15,6 +15,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* diff --git a/js/js.libraries/src/generated/org.w3c.dom.kt b/js/js.libraries/src/generated/org.w3c.dom.kt index 3f8a90e0964..1cc9167a675 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.kt @@ -15,6 +15,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* @@ -39,13 +40,13 @@ native public trait HTMLOptionsCollection : HTMLCollection { var selectedIndex: Int get() = noImpl set(value) = noImpl - fun set(index: Int, option: HTMLOptionElement?): Unit? = noImpl + nativeSetter fun set(index: Int, option: HTMLOptionElement?): Unit = noImpl fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = null): Unit = noImpl fun remove(index: Int): Unit = noImpl } native public trait HTMLPropertiesCollection : HTMLCollection { - var names: dynamic + var names: Array get() = noImpl set(value) = noImpl // override fun namedItem(name: String): PropertyNodeList? = noImpl @@ -53,20 +54,17 @@ native public trait HTMLPropertiesCollection : HTMLCollection { } native public trait PropertyNodeList : NodeList { - fun getValues(): Any = noImpl + fun getValues(): Array = noImpl } native public trait DOMStringMap { nativeGetter fun get(name: String): String? = noImpl - fun set(name: String, value: String): Unit? = noImpl + nativeSetter fun set(name: String, value: String): Unit = noImpl } native public trait DOMElementMap { nativeGetter fun get(name: String): Element? = noImpl - fun set(name: String, value: Element): Unit? = noImpl -} - -native public trait FileCallback { + nativeSetter fun set(name: String, value: Element): Unit = noImpl } native public open class Document : Node { @@ -76,10 +74,10 @@ native public open class Document : Node { var fullscreenElement: Element? get() = noImpl set(value) = noImpl - var onfullscreenchange: (Event) -> Unit + var onfullscreenchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onfullscreenerror: (Event) -> Unit + var onfullscreenerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var styleSheets: StyleSheetList @@ -94,7 +92,7 @@ native public open class Document : Node { var preferredStyleSheetSet: String? get() = noImpl set(value) = noImpl - var styleSheetSets: dynamic + var styleSheetSets: Array get() = noImpl set(value) = noImpl var location: Location? @@ -163,7 +161,7 @@ native public open class Document : Node { var commands: HTMLCollection get() = noImpl set(value) = noImpl - var onreadystatechange: (Event) -> Unit + var onreadystatechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var fgColor: String @@ -220,193 +218,193 @@ native public open class Document : Node { var documentElement: Element? get() = noImpl set(value) = noImpl - var onabort: (Event) -> Unit + var onabort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocomplete: (Event) -> Unit + var onautocomplete: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocompleteerror: (Event) -> Unit + var onautocompleteerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onblur: (Event) -> Unit + var onblur: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncancel: (Event) -> Unit + var oncancel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplay: (Event) -> Unit + var oncanplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplaythrough: (Event) -> Unit + var oncanplaythrough: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclick: (Event) -> Unit + var onclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclose: (Event) -> Unit + var onclose: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncontextmenu: (Event) -> Unit + var oncontextmenu: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncuechange: (Event) -> Unit + var oncuechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondblclick: (Event) -> Unit + var ondblclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrag: (Event) -> Unit + var ondrag: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragend: (Event) -> Unit + var ondragend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragenter: (Event) -> Unit + var ondragenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragexit: (Event) -> Unit + var ondragexit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragleave: (Event) -> Unit + var ondragleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragover: (Event) -> Unit + var ondragover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragstart: (Event) -> Unit + var ondragstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrop: (Event) -> Unit + var ondrop: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondurationchange: (Event) -> Unit + var ondurationchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onemptied: (Event) -> Unit + var onemptied: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onended: (Event) -> Unit + var onended: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: OnErrorEventHandlerNonNull? + var onerror: ((dynamic,dynamic,String,Int,Int,dynamic) -> dynamic)? get() = noImpl set(value) = noImpl - var onfocus: (Event) -> Unit + var onfocus: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninput: (Event) -> Unit + var oninput: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninvalid: (Event) -> Unit + var oninvalid: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeydown: (Event) -> Unit + var onkeydown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeypress: (Event) -> Unit + var onkeypress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeyup: (Event) -> Unit + var onkeyup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onload: (Event) -> Unit + var onload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadeddata: (Event) -> Unit + var onloadeddata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadedmetadata: (Event) -> Unit + var onloadedmetadata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadstart: (Event) -> Unit + var onloadstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousedown: (Event) -> Unit + var onmousedown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseenter: (Event) -> Unit + var onmouseenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseleave: (Event) -> Unit + var onmouseleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousemove: (Event) -> Unit + var onmousemove: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseout: (Event) -> Unit + var onmouseout: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseover: (Event) -> Unit + var onmouseover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseup: (Event) -> Unit + var onmouseup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousewheel: (Event) -> Unit + var onmousewheel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpause: (Event) -> Unit + var onpause: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplay: (Event) -> Unit + var onplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplaying: (Event) -> Unit + var onplaying: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onratechange: (Event) -> Unit + var onratechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onreset: (Event) -> Unit + var onreset: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onresize: (Event) -> Unit + var onresize: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onscroll: (Event) -> Unit + var onscroll: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeked: (Event) -> Unit + var onseeked: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeking: (Event) -> Unit + var onseeking: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onselect: (Event) -> Unit + var onselect: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onshow: (Event) -> Unit + var onshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsort: (Event) -> Unit + var onsort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstalled: (Event) -> Unit + var onstalled: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsubmit: (Event) -> Unit + var onsubmit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsuspend: (Event) -> Unit + var onsuspend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontimeupdate: (Event) -> Unit + var ontimeupdate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontoggle: (Event) -> Unit + var ontoggle: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onvolumechange: (Event) -> Unit + var onvolumechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onwaiting: (Event) -> Unit + var onwaiting: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var children: HTMLCollection @@ -508,7 +506,7 @@ native public trait HTMLElement : Element { var properties: HTMLPropertiesCollection get() = noImpl set(value) = noImpl - var itemValue: Any? + var itemValue: dynamic get() = noImpl set(value) = noImpl var hidden: Boolean @@ -553,193 +551,193 @@ native public trait HTMLElement : Element { var commandChecked: Boolean? get() = noImpl set(value) = noImpl - var onabort: (Event) -> Unit + var onabort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocomplete: (Event) -> Unit + var onautocomplete: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocompleteerror: (Event) -> Unit + var onautocompleteerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onblur: (Event) -> Unit + var onblur: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncancel: (Event) -> Unit + var oncancel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplay: (Event) -> Unit + var oncanplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplaythrough: (Event) -> Unit + var oncanplaythrough: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclick: (Event) -> Unit + var onclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclose: (Event) -> Unit + var onclose: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncontextmenu: (Event) -> Unit + var oncontextmenu: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncuechange: (Event) -> Unit + var oncuechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondblclick: (Event) -> Unit + var ondblclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrag: (Event) -> Unit + var ondrag: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragend: (Event) -> Unit + var ondragend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragenter: (Event) -> Unit + var ondragenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragexit: (Event) -> Unit + var ondragexit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragleave: (Event) -> Unit + var ondragleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragover: (Event) -> Unit + var ondragover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragstart: (Event) -> Unit + var ondragstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrop: (Event) -> Unit + var ondrop: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondurationchange: (Event) -> Unit + var ondurationchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onemptied: (Event) -> Unit + var onemptied: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onended: (Event) -> Unit + var onended: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: OnErrorEventHandlerNonNull? + var onerror: ((dynamic,dynamic,String,Int,Int,dynamic) -> dynamic)? get() = noImpl set(value) = noImpl - var onfocus: (Event) -> Unit + var onfocus: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninput: (Event) -> Unit + var oninput: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninvalid: (Event) -> Unit + var oninvalid: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeydown: (Event) -> Unit + var onkeydown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeypress: (Event) -> Unit + var onkeypress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeyup: (Event) -> Unit + var onkeyup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onload: (Event) -> Unit + var onload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadeddata: (Event) -> Unit + var onloadeddata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadedmetadata: (Event) -> Unit + var onloadedmetadata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadstart: (Event) -> Unit + var onloadstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousedown: (Event) -> Unit + var onmousedown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseenter: (Event) -> Unit + var onmouseenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseleave: (Event) -> Unit + var onmouseleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousemove: (Event) -> Unit + var onmousemove: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseout: (Event) -> Unit + var onmouseout: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseover: (Event) -> Unit + var onmouseover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseup: (Event) -> Unit + var onmouseup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousewheel: (Event) -> Unit + var onmousewheel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpause: (Event) -> Unit + var onpause: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplay: (Event) -> Unit + var onplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplaying: (Event) -> Unit + var onplaying: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onratechange: (Event) -> Unit + var onratechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onreset: (Event) -> Unit + var onreset: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onresize: (Event) -> Unit + var onresize: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onscroll: (Event) -> Unit + var onscroll: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeked: (Event) -> Unit + var onseeked: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeking: (Event) -> Unit + var onseeking: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onselect: (Event) -> Unit + var onselect: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onshow: (Event) -> Unit + var onshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsort: (Event) -> Unit + var onsort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstalled: (Event) -> Unit + var onstalled: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsubmit: (Event) -> Unit + var onsubmit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsuspend: (Event) -> Unit + var onsuspend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontimeupdate: (Event) -> Unit + var ontimeupdate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontoggle: (Event) -> Unit + var ontoggle: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onvolumechange: (Event) -> Unit + var onvolumechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onwaiting: (Event) -> Unit + var onwaiting: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var contentEditable: String @@ -872,43 +870,43 @@ native public trait HTMLBodyElement : HTMLElement { var background: String get() = noImpl set(value) = noImpl - var onafterprint: (Event) -> Unit + var onafterprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeprint: (Event) -> Unit + var onbeforeprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeunload: OnBeforeUnloadEventHandlerNonNull? + var onbeforeunload: ((Event) -> String?)? get() = noImpl set(value) = noImpl - var onhashchange: (Event) -> Unit + var onhashchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onlanguagechange: (Event) -> Unit + var onlanguagechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onoffline: (Event) -> Unit + var onoffline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ononline: (Event) -> Unit + var ononline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpagehide: (Event) -> Unit + var onpagehide: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpageshow: (Event) -> Unit + var onpageshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpopstate: (Event) -> Unit + var onpopstate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstorage: (Event) -> Unit + var onstorage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onunload: (Event) -> Unit + var onunload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } @@ -1237,7 +1235,7 @@ native public trait HTMLParamElement : HTMLElement { set(value) = noImpl } -native public trait HTMLVideoElement : HTMLMediaElement { +native public trait HTMLVideoElement : HTMLMediaElement, CanvasImageSource, ImageBitmapSource { var width: Int get() = noImpl set(value) = noImpl @@ -1433,13 +1431,13 @@ native public trait AudioTrackList : EventTarget { var length: Int get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onaddtrack: (Event) -> Unit + var onaddtrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onremovetrack: (Event) -> Unit + var onremovetrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl nativeGetter fun get(index: Int): AudioTrack? = noImpl @@ -1471,13 +1469,13 @@ native public trait VideoTrackList : EventTarget { var selectedIndex: Int get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onaddtrack: (Event) -> Unit + var onaddtrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onremovetrack: (Event) -> Unit + var onremovetrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl nativeGetter fun get(index: Int): VideoTrack? = noImpl @@ -1539,46 +1537,46 @@ native public open class MediaController : EventTarget { var muted: Boolean get() = noImpl set(value) = noImpl - var onemptied: (Event) -> Unit + var onemptied: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadedmetadata: (Event) -> Unit + var onloadedmetadata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadeddata: (Event) -> Unit + var onloadeddata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplay: (Event) -> Unit + var oncanplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplaythrough: (Event) -> Unit + var oncanplaythrough: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplaying: (Event) -> Unit + var onplaying: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onended: (Event) -> Unit + var onended: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onwaiting: (Event) -> Unit + var onwaiting: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondurationchange: (Event) -> Unit + var ondurationchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontimeupdate: (Event) -> Unit + var ontimeupdate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplay: (Event) -> Unit + var onplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpause: (Event) -> Unit + var onpause: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onratechange: (Event) -> Unit + var onratechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onvolumechange: (Event) -> Unit + var onvolumechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun pause(): Unit = noImpl @@ -1590,13 +1588,13 @@ native public trait TextTrackList : EventTarget { var length: Int get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onaddtrack: (Event) -> Unit + var onaddtrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onremovetrack: (Event) -> Unit + var onremovetrack: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl nativeGetter fun get(index: Int): TextTrack? = noImpl @@ -1628,7 +1626,7 @@ native public trait TextTrack : EventTarget, UnionAudioTrackOrTextTrackOrVideoTr var activeCues: TextTrackCueList? get() = noImpl set(value) = noImpl - var oncuechange: (Event) -> Unit + var oncuechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun addCue(cue: TextTrackCue): Unit = noImpl @@ -1659,10 +1657,10 @@ native public trait TextTrackCue : EventTarget { var pauseOnExit: Boolean get() = noImpl set(value) = noImpl - var onenter: (Event) -> Unit + var onenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onexit: (Event) -> Unit + var onexit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } @@ -2256,7 +2254,7 @@ native public trait HTMLSelectElement : HTMLElement { fun namedItem(name: String): HTMLOptionElement? = noImpl fun add(element: UnionHTMLOptGroupElementOrHTMLOptionElement, before: dynamic = null): Unit = noImpl fun remove(index: Int): Unit = noImpl - fun set(index: Int, option: HTMLOptionElement?): Unit? = noImpl + nativeSetter fun set(index: Int, option: HTMLOptionElement?): Unit = noImpl fun checkValidity(): Boolean = noImpl fun reportValidity(): Boolean = noImpl fun setCustomValidity(error: String): Unit = noImpl @@ -2694,22 +2692,22 @@ native public trait HTMLTemplateElement : HTMLElement { set(value) = noImpl } -native public trait HTMLCanvasElement : HTMLElement { +native public trait HTMLCanvasElement : HTMLElement, CanvasImageSource, ImageBitmapSource { var width: Int get() = noImpl set(value) = noImpl var height: Int get() = noImpl set(value) = noImpl - fun getContext(contextId: String, vararg arguments: Any?): RenderingContext? = noImpl - fun probablySupportsContext(contextId: String, vararg arguments: Any?): Boolean = noImpl + fun getContext(contextId: String, vararg arguments: dynamic): RenderingContext? = noImpl + fun probablySupportsContext(contextId: String, vararg arguments: dynamic): Boolean = noImpl fun setContext(context: RenderingContext): Unit = noImpl fun transferControlToProxy(): CanvasProxy = noImpl - fun toDataURL(type: String = noImpl, vararg arguments: Any?): String = noImpl - fun toBlob(_callback: ((dynamic) -> Unit)?, type: String = noImpl, vararg arguments: Any?): Unit = noImpl + fun toDataURL(type: String = noImpl, vararg arguments: dynamic): String = noImpl + fun toBlob(_callback: ((File) -> Unit)?, type: String = noImpl, vararg arguments: dynamic): Unit = noImpl } -native public trait CanvasProxy { +native public trait CanvasProxy : Transferable { fun setContext(context: RenderingContext): Unit = noImpl } @@ -2717,7 +2715,7 @@ native public open class CanvasRenderingContext2DSettings { var alpha: Boolean = true } -native public open class CanvasRenderingContext2D { +native public open class CanvasRenderingContext2D : RenderingContext, CanvasImageSource, ImageBitmapSource { var canvas: HTMLCanvasElement get() = noImpl set(value) = noImpl @@ -2829,8 +2827,8 @@ native public open class CanvasRenderingContext2D { fun getImageData(sx: Double, sy: Double, sw: Double, sh: Double): ImageData = noImpl fun putImageData(imagedata: ImageData, dx: Double, dy: Double): Unit = noImpl fun putImageData(imagedata: ImageData, dx: Double, dy: Double, dirtyX: Double, dirtyY: Double, dirtyWidth: Double, dirtyHeight: Double): Unit = noImpl - fun setLineDash(segments: Any): Unit = noImpl - fun getLineDash(): Any = noImpl + fun setLineDash(segments: Array): Unit = noImpl + fun getLineDash(): Array = noImpl fun closePath(): Unit = noImpl fun moveTo(x: Double, y: Double): Unit = noImpl fun lineTo(x: Double, y: Double): Unit = noImpl @@ -2901,7 +2899,7 @@ native public open class HitRegionOptions { var role: String? = null } -native public open class ImageData(sw: Int, sh: Int) { +native public open class ImageData(sw: Int, sh: Int) : ImageBitmapSource { var width: Int get() = noImpl set(value) = noImpl @@ -2941,8 +2939,8 @@ native public open class DrawingStyle(scope: Element = noImpl) { var direction: String get() = noImpl set(value) = noImpl - fun setLineDash(segments: Any): Unit = noImpl - fun getLineDash(): Any = noImpl + fun setLineDash(segments: Array): Unit = noImpl + fun getLineDash(): Array = noImpl } native public open class Path2D { @@ -2980,7 +2978,7 @@ native public trait DataTransfer { var items: DataTransferItemList get() = noImpl set(value) = noImpl - var types: dynamic + var types: Array get() = noImpl set(value) = noImpl var files: FileList @@ -3010,13 +3008,10 @@ native public trait DataTransferItem { var type: String get() = noImpl set(value) = noImpl - fun getAsString(_callback: ((dynamic) -> Unit)?): Unit = noImpl + fun getAsString(_callback: ((String) -> Unit)?): Unit = noImpl fun getAsFile(): File? = noImpl } -native public trait FunctionStringCallback { -} - native public open class DragEvent(type: String, eventInitDict: DragEventInit = noImpl) : MouseEvent(noImpl, noImpl) { var dataTransfer: DataTransfer? get() = noImpl @@ -3082,7 +3077,7 @@ native public trait Window : EventTarget { var top: Window get() = noImpl set(value) = noImpl - var opener: Any? + var opener: dynamic get() = noImpl set(value) = noImpl var parent: Window @@ -3100,232 +3095,232 @@ native public trait Window : EventTarget { var applicationCache: ApplicationCache get() = noImpl set(value) = noImpl - var onabort: (Event) -> Unit + var onabort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocomplete: (Event) -> Unit + var onautocomplete: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onautocompleteerror: (Event) -> Unit + var onautocompleteerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onblur: (Event) -> Unit + var onblur: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncancel: (Event) -> Unit + var oncancel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplay: (Event) -> Unit + var oncanplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncanplaythrough: (Event) -> Unit + var oncanplaythrough: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onchange: (Event) -> Unit + var onchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclick: (Event) -> Unit + var onclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclose: (Event) -> Unit + var onclose: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncontextmenu: (Event) -> Unit + var oncontextmenu: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncuechange: (Event) -> Unit + var oncuechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondblclick: (Event) -> Unit + var ondblclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrag: (Event) -> Unit + var ondrag: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragend: (Event) -> Unit + var ondragend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragenter: (Event) -> Unit + var ondragenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragexit: (Event) -> Unit + var ondragexit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragleave: (Event) -> Unit + var ondragleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragover: (Event) -> Unit + var ondragover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondragstart: (Event) -> Unit + var ondragstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondrop: (Event) -> Unit + var ondrop: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondurationchange: (Event) -> Unit + var ondurationchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onemptied: (Event) -> Unit + var onemptied: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onended: (Event) -> Unit + var onended: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: OnErrorEventHandlerNonNull? + var onerror: ((dynamic,dynamic,String,Int,Int,dynamic) -> dynamic)? get() = noImpl set(value) = noImpl - var onfocus: (Event) -> Unit + var onfocus: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninput: (Event) -> Unit + var oninput: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oninvalid: (Event) -> Unit + var oninvalid: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeydown: (Event) -> Unit + var onkeydown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeypress: (Event) -> Unit + var onkeypress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onkeyup: (Event) -> Unit + var onkeyup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onload: (Event) -> Unit + var onload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadeddata: (Event) -> Unit + var onloadeddata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadedmetadata: (Event) -> Unit + var onloadedmetadata: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadstart: (Event) -> Unit + var onloadstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousedown: (Event) -> Unit + var onmousedown: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseenter: (Event) -> Unit + var onmouseenter: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseleave: (Event) -> Unit + var onmouseleave: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousemove: (Event) -> Unit + var onmousemove: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseout: (Event) -> Unit + var onmouseout: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseover: (Event) -> Unit + var onmouseover: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmouseup: (Event) -> Unit + var onmouseup: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmousewheel: (Event) -> Unit + var onmousewheel: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpause: (Event) -> Unit + var onpause: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplay: (Event) -> Unit + var onplay: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onplaying: (Event) -> Unit + var onplaying: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onratechange: (Event) -> Unit + var onratechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onreset: (Event) -> Unit + var onreset: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onresize: (Event) -> Unit + var onresize: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onscroll: (Event) -> Unit + var onscroll: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeked: (Event) -> Unit + var onseeked: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onseeking: (Event) -> Unit + var onseeking: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onselect: (Event) -> Unit + var onselect: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onshow: (Event) -> Unit + var onshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsort: (Event) -> Unit + var onsort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstalled: (Event) -> Unit + var onstalled: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsubmit: (Event) -> Unit + var onsubmit: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onsuspend: (Event) -> Unit + var onsuspend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontimeupdate: (Event) -> Unit + var ontimeupdate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontoggle: (Event) -> Unit + var ontoggle: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onvolumechange: (Event) -> Unit + var onvolumechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onwaiting: (Event) -> Unit + var onwaiting: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onafterprint: (Event) -> Unit + var onafterprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeprint: (Event) -> Unit + var onbeforeprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeunload: OnBeforeUnloadEventHandlerNonNull? + var onbeforeunload: ((Event) -> String?)? get() = noImpl set(value) = noImpl - var onhashchange: (Event) -> Unit + var onhashchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onlanguagechange: (Event) -> Unit + var onlanguagechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onoffline: (Event) -> Unit + var onoffline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ononline: (Event) -> Unit + var ononline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpagehide: (Event) -> Unit + var onpagehide: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpageshow: (Event) -> Unit + var onpageshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpopstate: (Event) -> Unit + var onpopstate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstorage: (Event) -> Unit + var onstorage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onunload: (Event) -> Unit + var onunload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var sessionStorage: Storage @@ -3347,20 +3342,20 @@ native public trait Window : EventTarget { fun confirm(message: String = ""): Boolean = noImpl fun prompt(message: String = "", default: String = ""): String? = noImpl fun print(): Unit = noImpl - fun showModalDialog(url: String, argument: Any? = noImpl): Any? = noImpl - fun requestAnimationFrame(callback: (dynamic) -> Unit): Int = noImpl + fun showModalDialog(url: String, argument: dynamic = noImpl): dynamic = noImpl + fun requestAnimationFrame(callback: (Double) -> Unit): Int = noImpl fun cancelAnimationFrame(handle: Int): Unit = noImpl - fun postMessage(message: Any?, targetOrigin: String, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, targetOrigin: String, transfer: Array = noImpl): Unit = noImpl fun captureEvents(): Unit = noImpl fun releaseEvents(): Unit = noImpl fun getSelection(): Selection = noImpl fun btoa(btoa: String): String = noImpl fun atob(atob: String): String = noImpl - fun setTimeout(handler: (dynamic) -> dynamic, timeout: Int = 0, vararg arguments: Any?): Int = noImpl - fun setTimeout(handler: String, timeout: Int = 0, vararg arguments: Any?): Int = noImpl + fun setTimeout(handler: () -> dynamic, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl + fun setTimeout(handler: String, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl fun clearTimeout(handle: Int = 0): Unit = noImpl - fun setInterval(handler: (dynamic) -> dynamic, timeout: Int = 0, vararg arguments: Any?): Int = noImpl - fun setInterval(handler: String, timeout: Int = 0, vararg arguments: Any?): Int = noImpl + fun setInterval(handler: () -> dynamic, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl + fun setInterval(handler: String, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl fun clearInterval(handle: Int = 0): Unit = noImpl fun createImageBitmap(image: ImageBitmapSource): dynamic = noImpl fun createImageBitmap(image: ImageBitmapSource, sx: Int, sy: Int, sw: Int, sh: Int): dynamic = noImpl @@ -3377,18 +3372,18 @@ native public trait History { var length: Int get() = noImpl set(value) = noImpl - var state: Any? + var state: dynamic get() = noImpl set(value) = noImpl fun go(delta: Int = noImpl): Unit = noImpl fun back(): Unit = noImpl fun forward(): Unit = noImpl - fun pushState(data: Any?, title: String, url: String? = null): Unit = noImpl - fun replaceState(data: Any?, title: String, url: String? = null): Unit = noImpl + fun pushState(data: dynamic, title: String, url: String? = null): Unit = noImpl + fun replaceState(data: dynamic, title: String, url: String? = null): Unit = noImpl } native public trait Location { - var ancestorOrigins: dynamic + var ancestorOrigins: Array get() = noImpl set(value) = noImpl fun assign(url: String): Unit = noImpl @@ -3397,13 +3392,13 @@ native public trait Location { } native public open class PopStateEvent(type: String, eventInitDict: PopStateEventInit = noImpl) : Event(type, eventInitDict) { - var state: Any? + var state: dynamic get() = noImpl set(value) = noImpl } native public open class PopStateEventInit : EventInit() { - var state: Any? + var state: dynamic } native public open class HashChangeEvent(type: String, eventInitDict: HashChangeEventInit = noImpl) : Event(type, eventInitDict) { @@ -3440,28 +3435,28 @@ native public trait ApplicationCache : EventTarget { var status: Short get() = noImpl set(value) = noImpl - var onchecking: (Event) -> Unit + var onchecking: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onnoupdate: (Event) -> Unit + var onnoupdate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ondownloading: (Event) -> Unit + var ondownloading: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onupdateready: (Event) -> Unit + var onupdateready: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var oncached: (Event) -> Unit + var oncached: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onobsolete: (Event) -> Unit + var onobsolete: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun update(): Unit = noImpl @@ -3491,7 +3486,7 @@ native public open class ErrorEvent(type: String, eventInitDict: ErrorEventInit var colno: Int get() = noImpl set(value) = noImpl - var error: Any? + var error: dynamic get() = noImpl set(value) = noImpl } @@ -3501,16 +3496,7 @@ native public open class ErrorEventInit : EventInit() { var filename: String var lineno: Int var colno: Int - var error: Any? -} - -native public trait EventHandlerNonNull { -} - -native public trait OnErrorEventHandlerNonNull { -} - -native public trait OnBeforeUnloadEventHandlerNonNull { + var error: dynamic } native public trait Navigator { @@ -3541,7 +3527,7 @@ native public trait Navigator { var language: String? get() = noImpl set(value) = noImpl - var languages: dynamic + var languages: Array get() = noImpl set(value) = noImpl var onLine: Boolean @@ -3630,7 +3616,7 @@ native public trait External { fun IsSearchProviderInstalled(engineURL: String): Int = noImpl } -native public trait ImageBitmap { +native public trait ImageBitmap : CanvasImageSource, ImageBitmapSource { var width: Int get() = noImpl set(value) = noImpl @@ -3640,7 +3626,7 @@ native public trait ImageBitmap { } native public open class MessageEvent(type: String, eventInitDict: MessageEventInit = noImpl) : Event(type, eventInitDict) { - var data: Any? + var data: dynamic get() = noImpl set(value) = noImpl var origin: String @@ -3652,18 +3638,18 @@ native public open class MessageEvent(type: String, eventInitDict: MessageEventI var source: dynamic get() = noImpl set(value) = noImpl - var ports: dynamic + var ports: Array get() = noImpl set(value) = noImpl - fun initMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: dynamic, portsArg: Any?): Unit = noImpl + fun initMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: dynamic, originArg: String, lastEventIdArg: String, sourceArg: dynamic, portsArg: Array): Unit = noImpl } native public open class MessageEventInit : EventInit() { - var data: Any? + var data: dynamic var origin: String var lastEventId: String var source: dynamic - var ports: Any + var ports: Array } native public open class EventSource(url: String, eventSourceInitDict: EventSourceInit = noImpl) : EventTarget { @@ -3676,13 +3662,13 @@ native public open class EventSource(url: String, eventSourceInitDict: EventSour var readyState: Short get() = noImpl set(value) = noImpl - var onopen: (Event) -> Unit + var onopen: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun close(): Unit = noImpl @@ -3708,13 +3694,13 @@ native public open class WebSocket(url: String, protocols: dynamic = noImpl) : E var bufferedAmount: Int get() = noImpl set(value) = noImpl - var onopen: (Event) -> Unit + var onopen: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onclose: (Event) -> Unit + var onclose: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var extensions: String @@ -3723,7 +3709,7 @@ native public open class WebSocket(url: String, protocols: dynamic = noImpl) : E var protocol: String get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var binaryType: String @@ -3770,11 +3756,11 @@ native public open class MessageChannel { set(value) = noImpl } -native public trait MessagePort : EventTarget, UnionMessagePortOrServiceWorker, UnionClientOrMessagePortOrServiceWorker { - var onmessage: (Event) -> Unit +native public trait MessagePort : EventTarget, Transferable { + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - fun postMessage(message: Any?, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, transfer: Array = noImpl): Unit = noImpl fun start(): Unit = noImpl fun close(): Unit = noImpl } @@ -3783,20 +3769,17 @@ native public open class PortCollection { fun add(port: MessagePort): Unit = noImpl fun remove(port: MessagePort): Unit = noImpl fun clear(): Unit = noImpl - fun iterate(callback: (dynamic) -> Unit): Unit = noImpl -} - -native public trait PortCollectionCallback { + fun iterate(callback: (MessagePort) -> Unit): Unit = noImpl } native public open class BroadcastChannel(channel: String) : EventTarget { var name: String get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - fun postMessage(message: Any?): Unit = noImpl + fun postMessage(message: dynamic): Unit = noImpl fun close(): Unit = noImpl } @@ -3810,16 +3793,16 @@ native public trait WorkerGlobalScope : EventTarget { var location: WorkerLocation get() = noImpl set(value) = noImpl - var onerror: OnErrorEventHandlerNonNull? + var onerror: ((dynamic,dynamic,String,Int,Int,dynamic) -> dynamic)? get() = noImpl set(value) = noImpl - var onlanguagechange: (Event) -> Unit + var onlanguagechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onoffline: (Event) -> Unit + var onoffline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ononline: (Event) -> Unit + var ononline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var navigator: WorkerNavigator @@ -3829,11 +3812,11 @@ native public trait WorkerGlobalScope : EventTarget { fun importScripts(vararg urls: String): Unit = noImpl fun createImageBitmap(image: ImageBitmapSource): dynamic = noImpl fun createImageBitmap(image: ImageBitmapSource, sx: Int, sy: Int, sw: Int, sh: Int): dynamic = noImpl - fun setTimeout(handler: (dynamic) -> dynamic, timeout: Int = 0, vararg arguments: Any?): Int = noImpl - fun setTimeout(handler: String, timeout: Int = 0, vararg arguments: Any?): Int = noImpl + fun setTimeout(handler: () -> dynamic, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl + fun setTimeout(handler: String, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl fun clearTimeout(handle: Int = 0): Unit = noImpl - fun setInterval(handler: (dynamic) -> dynamic, timeout: Int = 0, vararg arguments: Any?): Int = noImpl - fun setInterval(handler: String, timeout: Int = 0, vararg arguments: Any?): Int = noImpl + fun setInterval(handler: () -> dynamic, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl + fun setInterval(handler: String, timeout: Int = 0, vararg arguments: dynamic): Int = noImpl fun clearInterval(handle: Int = 0): Unit = noImpl fun btoa(btoa: String): String = noImpl fun atob(atob: String): String = noImpl @@ -3841,10 +3824,10 @@ native public trait WorkerGlobalScope : EventTarget { } native public trait DedicatedWorkerGlobalScope : WorkerGlobalScope { - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - fun postMessage(message: Any?, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, transfer: Array = noImpl): Unit = noImpl } native public trait SharedWorkerGlobalScope : WorkerGlobalScope { @@ -3854,27 +3837,27 @@ native public trait SharedWorkerGlobalScope : WorkerGlobalScope { var applicationCache: ApplicationCache get() = noImpl set(value) = noImpl - var onconnect: (Event) -> Unit + var onconnect: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } native public open class Worker(scriptURL: String) : EventTarget { - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun terminate(): Unit = noImpl - fun postMessage(message: Any?, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, transfer: Array = noImpl): Unit = noImpl } native public open class SharedWorker(scriptURL: String, name: String = noImpl) : EventTarget { var port: MessagePort get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } @@ -3907,7 +3890,7 @@ native public trait WorkerNavigator { var language: String? get() = noImpl set(value) = noImpl - var languages: dynamic + var languages: Array get() = noImpl set(value) = noImpl var onLine: Boolean @@ -3927,7 +3910,7 @@ native public trait Storage { fun getItem(key: String): String? = noImpl nativeGetter fun get(key: String): String? = noImpl fun setItem(key: String, value: String): Unit = noImpl - fun set(key: String, value: String): Unit? = noImpl + nativeSetter fun set(key: String, value: String): Unit = noImpl fun removeItem(key: String): Unit = noImpl fun clear(): Unit = noImpl } @@ -4028,13 +4011,13 @@ native public trait HTMLMarqueeElement : HTMLElement { var width: String get() = noImpl set(value) = noImpl - var onbounce: (Event) -> Unit + var onbounce: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onfinish: (Event) -> Unit + var onfinish: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstart: (Event) -> Unit + var onstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun start(): Unit = noImpl @@ -4048,43 +4031,43 @@ native public trait HTMLFrameSetElement : HTMLElement { var rows: String get() = noImpl set(value) = noImpl - var onafterprint: (Event) -> Unit + var onafterprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeprint: (Event) -> Unit + var onbeforeprint: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onbeforeunload: OnBeforeUnloadEventHandlerNonNull? + var onbeforeunload: ((Event) -> String?)? get() = noImpl set(value) = noImpl - var onhashchange: (Event) -> Unit + var onhashchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onlanguagechange: (Event) -> Unit + var onlanguagechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onoffline: (Event) -> Unit + var onoffline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ononline: (Event) -> Unit + var ononline: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpagehide: (Event) -> Unit + var onpagehide: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpageshow: (Event) -> Unit + var onpageshow: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onpopstate: (Event) -> Unit + var onpopstate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onstorage: (Event) -> Unit + var onstorage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onunload: (Event) -> Unit + var onunload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } @@ -4140,7 +4123,7 @@ native public trait HTMLFontElement : HTMLElement { set(value) = noImpl } -native public trait HTMLImageElement : HTMLElement { +native public trait HTMLImageElement : HTMLElement, CanvasImageSource, ImageBitmapSource { var name: String get() = noImpl set(value) = noImpl @@ -4253,14 +4236,14 @@ native public open class EventInit { } native public open class CustomEvent(type: String, eventInitDict: CustomEventInit = noImpl) : Event(type, eventInitDict) { - var detail: Any? + var detail: dynamic get() = noImpl set(value) = noImpl - fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: Any?): Unit = noImpl + fun initCustomEvent(type: String, bubbles: Boolean, cancelable: Boolean, detail: dynamic): Unit = noImpl } native public open class CustomEventInit : EventInit() { - var detail: Any? = null + var detail: dynamic = null } native public trait EventTarget { @@ -4293,13 +4276,10 @@ native public trait HTMLCollection : UnionElementOrHTMLCollection { nativeGetter fun get(name: String): Element? = noImpl } -native public open class MutationObserver(callback: (dynamic) -> Unit) { +native public open class MutationObserver(callback: (Array,MutationObserver) -> Unit) { fun observe(target: Node, options: MutationObserverInit): Unit = noImpl fun disconnect(): Unit = noImpl - fun takeRecords(): Any = noImpl -} - -native public trait MutationCallback { + fun takeRecords(): Array = noImpl } native public open class MutationObserverInit { @@ -4309,7 +4289,7 @@ native public open class MutationObserverInit { var subtree: Boolean = false var attributeOldValue: Boolean var characterDataOldValue: Boolean - var attributeFilter: Any + var attributeFilter: Array } native public trait MutationRecord { diff --git a/js/js.libraries/src/generated/org.w3c.dom.parsing.kt b/js/js.libraries/src/generated/org.w3c.dom.parsing.kt index 62db5710d28..b5a98d497a1 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.parsing.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.parsing.kt @@ -15,6 +15,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* diff --git a/js/js.libraries/src/generated/org.w3c.dom.svg.kt b/js/js.libraries/src/generated/org.w3c.dom.svg.kt index b9d6b49c672..815ebfe6ce6 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.svg.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.svg.kt @@ -15,6 +15,7 @@ import org.w3c.dom.parsing.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* diff --git a/js/js.libraries/src/generated/org.w3c.fetch.kt b/js/js.libraries/src/generated/org.w3c.fetch.kt index 25cff15e1ac..37ffd4d2b5d 100644 --- a/js/js.libraries/src/generated/org.w3c.fetch.kt +++ b/js/js.libraries/src/generated/org.w3c.fetch.kt @@ -15,6 +15,7 @@ import org.w3c.dom.parsing.* import org.w3c.dom.svg.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* @@ -22,7 +23,7 @@ native public open class Headers(init: dynamic = noImpl) { fun append(name: String, value: String): Unit = noImpl fun delete(name: String): Unit = noImpl fun get(name: String): String? = noImpl - fun getAll(name: String): Any = noImpl + fun getAll(name: String): Array = noImpl fun has(name: String): Boolean = noImpl fun set(name: String, value: String): Unit = noImpl } diff --git a/js/js.libraries/src/generated/org.w3c.files.kt b/js/js.libraries/src/generated/org.w3c.files.kt index 3fbf3f65733..c2cd922f7af 100644 --- a/js/js.libraries/src/generated/org.w3c.files.kt +++ b/js/js.libraries/src/generated/org.w3c.files.kt @@ -15,10 +15,11 @@ import org.w3c.dom.parsing.* import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* -native public open class Blob { +native public open class Blob : ImageBitmapSource { var size: Long get() = noImpl set(value) = noImpl @@ -36,7 +37,7 @@ native public open class BlobPropertyBag { var type: String = "" } -native public open class File(fileBits: Any, fileName: String, options: FilePropertyBag = noImpl) : Blob() { +native public open class File(fileBits: Array, fileName: String, options: FilePropertyBag = noImpl) : Blob() { var name: String get() = noImpl set(value) = noImpl @@ -68,22 +69,22 @@ native public open class FileReader : EventTarget { var error: dynamic get() = noImpl set(value) = noImpl - var onloadstart: (Event) -> Unit + var onloadstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onload: (Event) -> Unit + var onload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onabort: (Event) -> Unit + var onabort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadend: (Event) -> Unit + var onloadend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun readAsArrayBuffer(blob: Blob): Unit = noImpl diff --git a/js/js.libraries/src/generated/org.w3c.notifications.kt b/js/js.libraries/src/generated/org.w3c.notifications.kt index ac3513656ed..d4596a883ed 100644 --- a/js/js.libraries/src/generated/org.w3c.notifications.kt +++ b/js/js.libraries/src/generated/org.w3c.notifications.kt @@ -15,6 +15,7 @@ import org.w3c.dom.parsing.* import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* +import org.w3c.time.* import org.w3c.workers.* import org.w3c.xhr.* @@ -22,10 +23,10 @@ native public open class Notification(title: String, options: NotificationOption var permission: String get() = noImpl set(value) = noImpl - var onclick: (Event) -> Unit + var onclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var title: String @@ -61,7 +62,7 @@ native public open class Notification(title: String, options: NotificationOption var sticky: Boolean get() = noImpl set(value) = noImpl - var data: Any? + var data: dynamic get() = noImpl set(value) = noImpl fun close(): Unit = noImpl @@ -79,10 +80,7 @@ native public open class NotificationOptions { var silent: Boolean = false var noscreen: Boolean = false var sticky: Boolean = false - var data: Any? = null -} - -native public trait NotificationPermissionCallback { + var data: dynamic = null } native public open class GetNotificationOptions { diff --git a/js/js.libraries/src/generated/org.w3c.time.kt b/js/js.libraries/src/generated/org.w3c.time.kt new file mode 100644 index 00000000000..33a7217239b --- /dev/null +++ b/js/js.libraries/src/generated/org.w3c.time.kt @@ -0,0 +1,25 @@ +/* + * Generated file + * DO NOT EDIT + * + * See libraries/tools/idl2k for details + */ + +package org.w3c.time + +import org.khronos.webgl.* +import org.w3c.dom.* +import org.w3c.dom.css.* +import org.w3c.dom.events.* +import org.w3c.dom.parsing.* +import org.w3c.dom.svg.* +import org.w3c.fetch.* +import org.w3c.files.* +import org.w3c.notifications.* +import org.w3c.workers.* +import org.w3c.xhr.* + +native public trait Performance { + fun now(): Double = noImpl +} + diff --git a/js/js.libraries/src/generated/org.w3c.workers.kt b/js/js.libraries/src/generated/org.w3c.workers.kt index adc59cf78dd..e853b74eebf 100644 --- a/js/js.libraries/src/generated/org.w3c.workers.kt +++ b/js/js.libraries/src/generated/org.w3c.workers.kt @@ -16,6 +16,7 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.xhr.* native public trait ServiceWorkerRegistration : EventTarget { @@ -31,7 +32,7 @@ native public trait ServiceWorkerRegistration : EventTarget { var scope: String get() = noImpl set(value) = noImpl - var onupdatefound: (Event) -> Unit + var onupdatefound: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var APISpace: dynamic @@ -51,22 +52,22 @@ native public trait ServiceWorkerGlobalScope : WorkerGlobalScope { var registration: ServiceWorkerRegistration get() = noImpl set(value) = noImpl - var oninstall: (Event) -> Unit + var oninstall: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onactivate: (Event) -> Unit + var onactivate: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onfetch: (Event) -> Unit + var onfetch: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onfunctionalevent: (Event) -> Unit + var onfunctionalevent: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onnotificationclick: (Event) -> Unit + var onnotificationclick: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun skipWaiting(): dynamic = noImpl @@ -82,13 +83,13 @@ native public trait ServiceWorker : EventTarget, UnionMessagePortOrServiceWorker var id: String get() = noImpl set(value) = noImpl - var onstatechange: (Event) -> Unit + var onstatechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - fun postMessage(message: Any?, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, transfer: Array = noImpl): Unit = noImpl } native public trait ServiceWorkerContainer : EventTarget { @@ -98,13 +99,13 @@ native public trait ServiceWorkerContainer : EventTarget { var ready: dynamic get() = noImpl set(value) = noImpl - var oncontrollerchange: (Event) -> Unit + var oncontrollerchange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onmessage: (Event) -> Unit + var onmessage: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl fun register(scriptURL: String, options: RegistrationOptions = noImpl): dynamic = noImpl @@ -117,7 +118,7 @@ native public open class RegistrationOptions { } native public open class ServiceWorkerMessageEvent(type: String, eventInitDict: ServiceWorkerMessageEventInit = noImpl) : Event(type, eventInitDict) { - var data: Any? + var data: dynamic get() = noImpl set(value) = noImpl var origin: String @@ -129,18 +130,18 @@ native public open class ServiceWorkerMessageEvent(type: String, eventInitDict: var source: UnionMessagePortOrServiceWorker? get() = noImpl set(value) = noImpl - var ports: dynamic + var ports: Array get() = noImpl set(value) = noImpl - fun initServiceWorkerMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrServiceWorker, portsArg: Any?): Unit = noImpl + fun initServiceWorkerMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: dynamic, originArg: String, lastEventIdArg: String, sourceArg: UnionMessagePortOrServiceWorker, portsArg: Array): Unit = noImpl } native public open class ServiceWorkerMessageEventInit : EventInit() { - var data: Any? + var data: dynamic var origin: String var lastEventId: String var source: UnionMessagePortOrServiceWorker? - var ports: Any + var ports: Array } native public trait Client : UnionClientOrMessagePortOrServiceWorker { @@ -153,7 +154,7 @@ native public trait Client : UnionClientOrMessagePortOrServiceWorker { var id: String get() = noImpl set(value) = noImpl - fun postMessage(message: Any?, transfer: Any = noImpl): Unit = noImpl + fun postMessage(message: dynamic, transfer: Array = noImpl): Unit = noImpl } native public trait WindowClient : Client { @@ -204,7 +205,7 @@ native public open class FetchEventInit : ExtendableEventInit() { } native public open class ExtendableMessageEvent(type: String, eventInitDict: ExtendableMessageEventInit = noImpl) : ExtendableEvent(type, eventInitDict) { - var data: Any? + var data: dynamic get() = noImpl set(value) = noImpl var origin: String @@ -216,25 +217,25 @@ native public open class ExtendableMessageEvent(type: String, eventInitDict: Ext var source: UnionClientOrMessagePortOrServiceWorker? get() = noImpl set(value) = noImpl - var ports: dynamic + var ports: Array get() = noImpl set(value) = noImpl - fun initExtendableMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: Any?, originArg: String, lastEventIdArg: String, sourceArg: UnionClientOrMessagePortOrServiceWorker, portsArg: Any?): Unit = noImpl + fun initExtendableMessageEvent(typeArg: String, canBubbleArg: Boolean, cancelableArg: Boolean, dataArg: dynamic, originArg: String, lastEventIdArg: String, sourceArg: UnionClientOrMessagePortOrServiceWorker, portsArg: Array): Unit = noImpl } native public open class ExtendableMessageEventInit : ExtendableEventInit() { - var data: Any? + var data: dynamic var origin: String var lastEventId: String var source: UnionClientOrMessagePortOrServiceWorker? - var ports: Any + var ports: Array } native public trait Cache { fun match(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl fun matchAll(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl fun add(request: dynamic): dynamic = noImpl - fun addAll(requests: Any): dynamic = noImpl + fun addAll(requests: Array): dynamic = noImpl fun put(request: dynamic, response: Response): dynamic = noImpl fun delete(request: dynamic, options: CacheQueryOptions = noImpl): dynamic = noImpl fun keys(request: dynamic = noImpl, options: CacheQueryOptions = noImpl): dynamic = noImpl diff --git a/js/js.libraries/src/generated/org.w3c.xhr.kt b/js/js.libraries/src/generated/org.w3c.xhr.kt index 92e1a809706..3166aaea5d4 100644 --- a/js/js.libraries/src/generated/org.w3c.xhr.kt +++ b/js/js.libraries/src/generated/org.w3c.xhr.kt @@ -16,28 +16,29 @@ import org.w3c.dom.svg.* import org.w3c.fetch.* import org.w3c.files.* import org.w3c.notifications.* +import org.w3c.time.* import org.w3c.workers.* native public trait XMLHttpRequestEventTarget : EventTarget { - var onloadstart: (Event) -> Unit + var onloadstart: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onprogress: (Event) -> Unit + var onprogress: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onabort: (Event) -> Unit + var onabort: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onerror: (Event) -> Unit + var onerror: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onload: (Event) -> Unit + var onload: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var ontimeout: (Event) -> Unit + var ontimeout: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl - var onloadend: (Event) -> Unit + var onloadend: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl } @@ -46,7 +47,7 @@ native public trait XMLHttpRequestUpload : XMLHttpRequestEventTarget { } native public open class XMLHttpRequest : XMLHttpRequestEventTarget { - var onreadystatechange: (Event) -> Unit + var onreadystatechange: ((Event) -> dynamic)? get() = noImpl set(value) = noImpl var readyState: Short @@ -73,7 +74,7 @@ native public open class XMLHttpRequest : XMLHttpRequestEventTarget { var responseType: String get() = noImpl set(value) = noImpl - var response: Any? + var response: dynamic get() = noImpl set(value) = noImpl var responseText: String @@ -104,7 +105,7 @@ native public open class FormData(form: HTMLFormElement = noImpl) { fun append(name: String, value: dynamic): Unit = noImpl fun delete(name: String): Unit = noImpl fun get(name: String): dynamic = noImpl - fun getAll(name: String): Any = noImpl + fun getAll(name: String): Array = noImpl fun has(name: String): Boolean = noImpl fun set(name: String, value: dynamic): Unit = noImpl } diff --git a/libraries/idl/org.w3c.dom.css.ext.idl b/libraries/idl/org.w3c.dom.css.ext.idl index c480baa518d..a02ad8f002d 100644 --- a/libraries/idl/org.w3c.dom.css.ext.idl +++ b/libraries/idl/org.w3c.dom.css.ext.idl @@ -93,7 +93,7 @@ partial interface CSSStyleDeclaration { attribute String flexGrow; attribute String flexShrink; attribute String flexWrap; - attribute String float; + attribute String cssFloat; attribute String font; attribute String fontFamily; attribute String fontFeatureSettings; diff --git a/libraries/idl/org.w3c.dom.idl b/libraries/idl/org.w3c.dom.idl index cd643b3ff6c..2e884354a62 100644 --- a/libraries/idl/org.w3c.dom.idl +++ b/libraries/idl/org.w3c.dom.idl @@ -5100,4 +5100,10 @@ dictionary EditingInputEventInit : EventInit { DOMString command; DOMString value; }; +partial interface Window { + long requestAnimationFrame(FrameRequestCallback callback); + void cancelAnimationFrame(long handle); +}; + +callback FrameRequestCallback = void (DOMHighResTimeStamp time); diff --git a/libraries/idl/org.w3c.time.idl b/libraries/idl/org.w3c.time.idl new file mode 100644 index 00000000000..b510b849ce3 --- /dev/null +++ b/libraries/idl/org.w3c.time.idl @@ -0,0 +1,8 @@ +namespace org.w3c.time; + + +typedef double DOMHighResTimeStamp; +partial interface Performance { + DOMHighResTimeStamp now(); +}; + diff --git a/libraries/idl/org.w3c.webidl.idl b/libraries/idl/org.w3c.webidl.idl new file mode 100644 index 00000000000..27bb74b904c --- /dev/null +++ b/libraries/idl/org.w3c.webidl.idl @@ -0,0 +1,7 @@ +namespace org.w3c.webidl; + +/** written by WebIDL spec */ + +typedef unsigned long long DOMTimeStamp; +callback Function = any (any... arguments); +callback VoidFunction = void (); diff --git a/libraries/stdlib/src/kotlin/dom/Dom.kt b/libraries/stdlib/src/kotlin/dom/Dom.kt index d1bad57d82b..b2d4e4066ab 100644 --- a/libraries/stdlib/src/kotlin/dom/Dom.kt +++ b/libraries/stdlib/src/kotlin/dom/Dom.kt @@ -170,7 +170,7 @@ public fun Element.addClass(vararg cssClasses: String): Boolean { val presentClasses = classes.trim() classes = StringBuilder { append(presentClasses) - if (presentClasses != "") { + if (!presentClasses.isEmpty()) { append(" ") } missingClasses.joinTo(this, " ") diff --git a/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/WebIDL.g4 b/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/WebIDL.g4 index d820a4f88ab..4b9e381d93f 100644 --- a/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/WebIDL.g4 +++ b/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/WebIDL.g4 @@ -74,7 +74,7 @@ definition ; module - : 'module' IDENTIFIER_WEBIDL '{' definitions '}' ';'? + : 'module' IDENTIFIER_WEBIDL '{' definitions '}' ';' ; callbackOrInterface diff --git a/libraries/tools/idl2k/src/main/kotlin/download.kt b/libraries/tools/idl2k/src/main/kotlin/download.kt index 6f00133cda9..459724f8fb3 100644 --- a/libraries/tools/idl2k/src/main/kotlin/download.kt +++ b/libraries/tools/idl2k/src/main/kotlin/download.kt @@ -23,11 +23,14 @@ import java.io.File import java.net.URL val urls = listOf( +// "http://heycam.github.io/webidl/" to "org.w3c.webidl" "https://raw.githubusercontent.com/whatwg/html-mirror/master/source" to "org.w3c.dom", "https://html.spec.whatwg.org/" to "org.w3c.dom", "https://raw.githubusercontent.com/whatwg/dom/master/dom.html" to "org.w3c.dom", "http://www.w3.org/TR/uievents/" to "org.w3c.dom.events", "https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html" to "org.w3c.dom", + "http://www.w3.org/TR/animation-timing/" to "org.w3c.dom", + "http://www.w3.org/TR/hr-time/" to "org.w3c.time", "https://raw.githubusercontent.com/whatwg/xhr/master/Overview.src.html" to "org.w3c.xhr", "https://raw.githubusercontent.com/w3c/FileAPI/gh-pages/index.html" to "org.w3c.files", "https://raw.githubusercontent.com/whatwg/notifications/master/notifications.html" to "org.w3c.notifications", diff --git a/libraries/tools/idl2k/src/main/kotlin/gen.kt b/libraries/tools/idl2k/src/main/kotlin/gen.kt index 99b6ea8f456..ef278d300e1 100644 --- a/libraries/tools/idl2k/src/main/kotlin/gen.kt +++ b/libraries/tools/idl2k/src/main/kotlin/gen.kt @@ -10,21 +10,24 @@ private fun Operation.getterOrSetter() = this.attributes.map { it.call }.toSet() } } +fun String.isNullable() = endsWith(")?") || (endsWith("?") && !contains("->")) + fun String.ensureNullable() = when { - endsWith("?") -> this this == "dynamic" -> this + isNullable() -> this contains("->") -> "($this)?" else -> "$this?" } fun String.dropNullable() = when { endsWith(")?") -> this.removeSuffix("?").removeSurrounding("(", ")") + contains("->") -> this endsWith("?") -> this.removeSuffix("?") else -> this } fun String.copyNullabilityFrom(type : String) = when { - type.endsWith("?") -> ensureNullable() + type.isNullable() -> ensureNullable() else -> this } @@ -32,7 +35,7 @@ fun generateFunction(repository: Repository, function: Operation, functionName: function.attributes.map { it.call }.toSet().let { attributes -> GenerateFunction( name = functionName, - returnType = mapType(repository, function.returnType).let { mapped -> if (nativeGetterOrSetter != NativeGetterOrSetter.NONE) mapped.ensureNullable() else mapped }, + returnType = mapType(repository, function.returnType).let { mapped -> if (nativeGetterOrSetter == NativeGetterOrSetter.GETTER) mapped.ensureNullable() else mapped }, arguments = function.parameters.map { GenerateAttribute( name = it.name, @@ -59,9 +62,11 @@ fun generateFunctions(repository: Repository, function: Operation): List it + interfaceType.operations.size() != 1 -> it interfaceType.callback -> interfaceType.operations.single().let { callbackFunction -> it.copy(type = callbackFunction.parameters - .map { mapType(repository, it.type) } + .map { it.copy(type = mapType(repository, it.type)) } + .map { it.formatFunctionTypePart() } .join(",", "(", ") -> ${mapType(repository, callbackFunction.returnType)}") .copyNullabilityFrom(it.type)) } @@ -71,7 +76,8 @@ fun generateFunctions(repository: Repository, function: Operation): List null - else -> generateFunction(repository, function.copy(parameters = callbackArgumentsAsLambdas), function.name, NativeGetterOrSetter.NONE) + realFunction != null -> generateFunction(repository, function.copy(parameters = callbackArgumentsAsLambdas), function.name, NativeGetterOrSetter.NONE) + else -> null } return listOf(realFunction, getterOrSetterFunction, functionWithCallbackOrNull).filterNotNull() @@ -88,8 +94,8 @@ fun generateAttribute(putNoImpl: Boolean, repository: Repository, attribute: Att ) private fun InterfaceDefinition.superTypes(repository: Repository) = superTypes.map { repository.interfaces[it] }.filterNotNull() -private fun resolveDefinitionType(repository: Repository, iface: InterfaceDefinition, constructor: ExtendedAttribute? = iface.findConstructor()): GenerateDefinitionKind = - if (iface.dictionary || constructor != null || iface.superTypes(repository).any { resolveDefinitionType(repository, it) == GenerateDefinitionKind.CLASS }) { +private fun resolveDefinitionKind(repository: Repository, iface: InterfaceDefinition, constructor: ExtendedAttribute? = iface.findConstructor()): GenerateDefinitionKind = + if (iface.dictionary || constructor != null || iface.superTypes(repository).any { resolveDefinitionKind(repository, it) == GenerateDefinitionKind.CLASS }) { GenerateDefinitionKind.CLASS } else { @@ -108,7 +114,7 @@ fun generateTrait(repository: Repository, iface: InterfaceDefinition): GenerateT val constructorSuperCalls = iface.superTypes .map { repository.interfaces[it] } .filterNotNull() - .filter { resolveDefinitionType(repository, it) == GenerateDefinitionKind.CLASS } + .filter { resolveDefinitionKind(repository, it) == GenerateDefinitionKind.CLASS } .map { val superConstructor = it.findConstructor() GenerateFunctionCall( @@ -123,10 +129,10 @@ fun generateTrait(repository: Repository, iface: InterfaceDefinition): GenerateT ) } - val entityType = resolveDefinitionType(repository, iface, constructor) + val entityKind = resolveDefinitionKind(repository, iface, constructor) val extensions = repository.externals[iface.name]?.map { repository.interfaces[it] }?.filterNotNull() ?: emptyList() - return GenerateTraitOrClass(iface.name, iface.namespace, entityType, iface.superTypes, + return GenerateTraitOrClass(iface.name, iface.namespace, entityKind, iface.superTypes, memberAttributes = (iface.mapAttributes(repository) + extensions.flatMap { it.mapAttributes(repository) }).distinct().toList(), memberFunctions = (iface.mapOperations(repository) + extensions.flatMap { it.mapOperations(repository) }).distinct().toList(), constants = (iface.constants.map {it.mapConstant(repository)} + extensions.flatMap { it.constants.map {it.mapConstant(repository)} }.distinct().toList()), @@ -151,3 +157,25 @@ fun generateUnionTypeTraits(allUnionTypes : Iterable): List) = definitions.filter { "NoInterfaceObject" !in it.extendedAttributes.map { it.call } }.map { generateTrait(repository, it) } + +fun generateUnions(ifaces: List, typedefs: Iterable) : GenerateUnionTypes { + val declaredTypes = ifaces.toMap { it.name } + + val anonymousUnionTypes = collectUnionTypes(declaredTypes) + val anonymousUnionTypeTraits = generateUnionTypeTraits(anonymousUnionTypes) + val anonymousUnionsMap = anonymousUnionTypeTraits.toMap { it.name } + + val typedefsToBeGenerated = typedefs.filter { it.types.startsWith("Union<") } + .map { NamedValue(it.name, UnionType(it.namespace, splitUnionType(it.types))) } + .filter { it.value.memberTypes.all { type -> type in declaredTypes } } + val typedefsMarkersMap = typedefsToBeGenerated.groupBy { it.name }.mapValues { mapUnionType(it.value.first().value).copy(name = it.key) } + + val typeNamesToUnions = anonymousUnionTypes.flatMap { unionType -> unionType.memberTypes.map { unionMember -> unionMember to unionType.name } }.toMultiMap() + + typedefsToBeGenerated.flatMap { typedef -> typedef.value.memberTypes.map { unionMember -> unionMember to typedef.name } }.toMultiMap() + + return GenerateUnionTypes( + typeNamesToUnions = typeNamesToUnions, + anonymousUnionsMap = anonymousUnionsMap, + typedefsMarkersMap = typedefsMarkersMap + ) +} diff --git a/libraries/tools/idl2k/src/main/kotlin/idl.kt b/libraries/tools/idl2k/src/main/kotlin/idl.kt index e39d13fab89..787ed73ccdf 100644 --- a/libraries/tools/idl2k/src/main/kotlin/idl.kt +++ b/libraries/tools/idl2k/src/main/kotlin/idl.kt @@ -29,10 +29,12 @@ import java.util.ArrayList data class ExtendedAttribute(val name: String?, val call: String, val arguments: List) data class Operation(val name: String, val returnType: String, val parameters: List, val attributes: List) -data class Attribute(val name: String, val type: String, val readOnly: Boolean, val defaultValue: String? = null, val vararg: Boolean) +data class Attribute(val name: String, val type: String, val readOnly: Boolean = true, val defaultValue: String? = null, val vararg: Boolean) data class Constant(val name: String, val type: String, val value: String?) -enum class DefinitionType { +fun Attribute.formatFunctionTypePart() = if (vararg) "vararg $type" else type + +enum class DefinitionKind { INTERFACE TYPEDEF EXTENSION_INTERFACE @@ -75,6 +77,10 @@ class ExtendedAttributeArgumentsParser : WebIDLBaseVisitor>() { } } +// [Constructor] +// [Constructor(any, Int)] +// [Constructor(Int arg, String arg2 = "a")] +// [name = Constructor] class ExtendedAttributeParser : WebIDLBaseVisitor() { private var name: String? = null private var call: String = "" @@ -150,7 +156,7 @@ class TypeVisitor : WebIDLBaseVisitor() { } } -class OperationVisitor(val attributes: List) : WebIDLBaseVisitor() { +class OperationVisitor(private val attributes: List) : WebIDLBaseVisitor() { private var name: String = "" private var returnType: String = "" private val parameters = ArrayList() @@ -177,7 +183,7 @@ class OperationVisitor(val attributes: List) : WebIDLBaseVisi } override fun visitOptionalOrRequiredArgument(ctx: WebIDLParser.OptionalOrRequiredArgumentContext): Operation { - val attributeVisitor = AttributeVisitor(false) + val attributeVisitor = AttributeVisitor() attributeVisitor.visit(ctx) val parameter = attributeVisitor.visitChildren(ctx) @@ -187,11 +193,11 @@ class OperationVisitor(val attributes: List) : WebIDLBaseVisi } } -class AttributeVisitor(val readOnly: Boolean) : WebIDLBaseVisitor() { - var type: String = "" - var name: String = "" - var defaultValue: String? = null - var vararg: Boolean = false +class AttributeVisitor(private val readOnly: Boolean = false) : WebIDLBaseVisitor() { + private var type: String = "" + private var name: String = "" + private var defaultValue: String? = null + private var vararg: Boolean = false override fun defaultResult(): Attribute = Attribute(name, type, readOnly, defaultValue, vararg) @@ -208,20 +214,12 @@ class AttributeVisitor(val readOnly: Boolean) : WebIDLBaseVisitor() { } override fun visitAttributeRest(ctx: WebIDLParser.AttributeRestContext): Attribute { - try { - name = getName(ctx) - } catch (ignore: Throwable) { - name = ctx.children.filter { it is TerminalNode }.filter { it.getText() != ";" }.last().getText() - } + name = getNameOrNull(ctx) ?: ctx.children.filter { it is TerminalNode }.filter { it.getText() != ";" }.last().getText() return defaultResult() } override fun visitArgumentName(ctx: WebIDLParser.ArgumentNameContext): Attribute { - try { - name = getName(ctx) - } catch (ignore: Throwable) { - name = ctx.getText() - } + name = getNameOrNull(ctx) ?: ctx.getText() return defaultResult() } @@ -236,10 +234,10 @@ class AttributeVisitor(val readOnly: Boolean) : WebIDLBaseVisitor() { } } -class ConstantVisitor(val attributes: List) : WebIDLBaseVisitor() { - var type: String = "" - var name: String = "" - var value: String? = null +class ConstantVisitor : WebIDLBaseVisitor() { + private var type: String = "" + private var name: String = "" + private var value: String? = null override fun defaultResult(): Constant = Constant(name, type, value) @@ -260,8 +258,8 @@ class ConstantVisitor(val attributes: List) : WebIDLBaseVisit } } -class DefinitionVisitor(val extendedAttributes: List, val namespace: String, val declarations : MutableList) : WebIDLBaseVisitor() { - private var type: DefinitionType = DefinitionType.INTERFACE +class DefinitionVisitor(val extendedAttributes: List, val namespace: String, val declarations: MutableList) : WebIDLBaseVisitor() { + private var kind: DefinitionKind = DefinitionKind.INTERFACE private var name = "" private val memberAttributes = ArrayList() private val operations = ArrayList() @@ -274,12 +272,12 @@ class DefinitionVisitor(val extendedAttributes: List, val nam private var partial = false private var callback = false - override fun defaultResult(): Definition = when (type) { - DefinitionType.INTERFACE -> InterfaceDefinition(name, namespace, extendedAttributes, operations, attributes, inherited, constants, false, partial, callback) - DefinitionType.DICTIONARY -> InterfaceDefinition(name, namespace, extendedAttributes, operations, attributes, inherited, constants, true, partial, callback) - DefinitionType.EXTENSION_INTERFACE -> ExtensionInterfaceDefinition(namespace, name, implements ?: "") - DefinitionType.TYPEDEF -> TypedefDefinition(typedefType ?: "", namespace, name) - DefinitionType.ENUM -> EnumDefinition(namespace, name) + override fun defaultResult(): Definition = when (kind) { + DefinitionKind.INTERFACE -> InterfaceDefinition(name, namespace, extendedAttributes, operations, attributes, inherited, constants, false, partial, callback) + DefinitionKind.DICTIONARY -> InterfaceDefinition(name, namespace, extendedAttributes, operations, attributes, inherited, constants, true, partial, callback) + DefinitionKind.EXTENSION_INTERFACE -> ExtensionInterfaceDefinition(namespace, name, implements ?: "") + DefinitionKind.TYPEDEF -> TypedefDefinition(typedefType ?: "", namespace, name) + DefinitionKind.ENUM -> EnumDefinition(namespace, name) } override fun visitCallbackRestOrInterface(ctx: WebIDLParser.CallbackRestOrInterfaceContext): Definition { @@ -288,10 +286,12 @@ class DefinitionVisitor(val extendedAttributes: List, val nam } override fun visitCallbackRest(ctx: WebIDLParser.CallbackRestContext): Definition { + kind = DefinitionKind.TYPEDEF name = getName(ctx) - with(OperationVisitor(memberAttributes.toList())) { - operations.add(visit(ctx)) - } + + val function = OperationVisitor(memberAttributes.toList()).visit(ctx) + typedefType = "(${function.parameters.map { it.formatFunctionTypePart() }.join(",")}) -> ${function.returnType}" + memberAttributes.clear() return defaultResult() } @@ -324,7 +324,7 @@ class DefinitionVisitor(val extendedAttributes: List, val nam return defaultResult() } - type = DefinitionType.TYPEDEF + kind = DefinitionKind.TYPEDEF name = getName(ctx) typedefType = ctx.accept(object : WebIDLBaseVisitor() { @@ -342,14 +342,14 @@ class DefinitionVisitor(val extendedAttributes: List, val nam } override fun visitEnum_(ctx: Enum_Context): Definition { - type = DefinitionType.ENUM + kind = DefinitionKind.ENUM name = getName(ctx) return defaultResult() } override fun visitDictionary(ctx: DictionaryContext): Definition { - type = DefinitionType.DICTIONARY + kind = DefinitionKind.DICTIONARY name = getName(ctx) return visitChildren(ctx) @@ -381,8 +381,8 @@ class DefinitionVisitor(val extendedAttributes: List, val nam override fun visitImplementsStatement(ctx: ImplementsStatementContext): Definition { val identifiers = ctx.children.filterIdentifiers().map { it.getText() } - if (identifiers.size() >= 2) { - type = DefinitionType.EXTENSION_INTERFACE + if (identifiers.size() == 2) { + kind = DefinitionKind.EXTENSION_INTERFACE name = identifiers[0] implements = identifiers[1] visitChildren(ctx) @@ -392,16 +392,14 @@ class DefinitionVisitor(val extendedAttributes: List, val nam } override fun visitOperation(ctx: OperationContext): Definition { - with(OperationVisitor(memberAttributes.toList())) { - operations.add(visit(ctx)) - } + operations.add(OperationVisitor(memberAttributes.toList()).visit(ctx)) memberAttributes.clear() return defaultResult() } override fun visitInheritance(ctx: WebIDLParser.InheritanceContext): Definition { if (ctx.children != null) { - inherited.addAll(ctx.children.filterIdentifiers().map {it.getText().trim()}.filter {it != ""}) + inherited.addAll(ctx.children.filterIdentifiers().map { it.getText().trim() }.filter { it != "" }) } return defaultResult() } @@ -424,24 +422,20 @@ class DefinitionVisitor(val extendedAttributes: List, val nam } override fun visitConst_(ctx: WebIDLParser.Const_Context): Definition { - constants.add(ConstantVisitor(memberAttributes.toList()).visit(ctx)) + constants.add(ConstantVisitor().visit(ctx)) memberAttributes.clear() return defaultResult() } override fun visitExtendedAttribute(ctx: ExtendedAttributeContext): Definition { - val att = with(ExtendedAttributeParser()) { - visit(ctx) - } - - memberAttributes.add(att) + memberAttributes.add(ExtendedAttributeParser().visit(ctx)) return defaultResult() } } -class ModuleVisitor(val declarations : MutableList, var namespace : String = "") : WebIDLBaseVisitor() { +class ModuleVisitor(val declarations: MutableList, var namespace: String = "") : WebIDLBaseVisitor() { val extendedAttributes = ArrayList() override fun visitDefinition(ctx: WebIDLParser.DefinitionContext) { @@ -465,6 +459,7 @@ class ModuleVisitor(val declarations : MutableList, var namespace : private fun List?.filterIdentifiers(): List = this?.filter { it is TerminalNode && it.getSymbol().getType() == WebIDLLexer.IDENTIFIER_WEBIDL } ?: emptyList() private fun getName(ctx: ParserRuleContext) = ctx.children.filterIdentifiers().first().getText() +private fun getNameOrNull(ctx: ParserRuleContext) = ctx.children.filterIdentifiers().firstOrNull()?.getText() fun parseIDL(reader: CharStream): Repository { val ll = WebIDLLexer(reader) diff --git a/libraries/tools/idl2k/src/main/kotlin/main.kt b/libraries/tools/idl2k/src/main/kotlin/main.kt index 5ad6f7b7c4d..b2b32402637 100644 --- a/libraries/tools/idl2k/src/main/kotlin/main.kt +++ b/libraries/tools/idl2k/src/main/kotlin/main.kt @@ -16,7 +16,7 @@ fun main(args: Array) { outDir.deleteRecursively() outDir.mkdirs() - val repository = srcDir.walkTopDown().filter { it.isDirectory() || it.extension == "idl" }.asSequence().filter {it.isFile()}.fold(Repository(emptyMap(), emptyMap(), emptyMap(), emptyMap())) { acc, e -> + val repository = srcDir.walkTopDown().filter { it.isDirectory() || it.extension == "idl" }.asSequence().filter { it.isFile() }.fold(Repository(emptyMap(), emptyMap(), emptyMap(), emptyMap())) { acc, e -> val fileRepository = parseIDL(ANTLRFileStream(e.getAbsolutePath(), "UTF-8")) Repository( @@ -28,6 +28,7 @@ fun main(args: Array) { } val definitions = mapDefinitions(repository, repository.interfaces.values()) + val unions = generateUnions(definitions, repository.typeDefs.values()) val allPackages = definitions.map { it.namespace }.distinct().sort() allPackages.forEach { pkg -> @@ -43,19 +44,19 @@ fun main(args: Array) { w.appendln("package ${pkg}") w.appendln() - allPackages.filter {it != pkg}.forEach { import -> + allPackages.filter { it != pkg }.forEach { import -> w.appendln("import ${import}.*") } w.appendln() - w.render(pkg, definitions, repository.typeDefs.values()) + w.render(pkg, definitions, unions) } } } -private fun Map>.reduceValues(reduce : (V, V) -> V = {a, b -> b}) : Map = mapValues { it.value.reduce(reduce) } +private fun Map>.reduceValues(reduce: (V, V) -> V = { a, b -> b }): Map = mapValues { it.value.reduce(reduce) } -private fun Map.mergeReduce(other : Map, reduce : (V, V) -> V = {a, b -> b}) : Map { +private fun Map.mergeReduce(other: Map, reduce: (V, V) -> V = { a, b -> b }): Map { val result = LinkedHashMap(this.size() + other.size()) result.putAll(this) other.forEach { e -> @@ -63,7 +64,8 @@ private fun Map.mergeReduce(other : Map, reduce : (V, V) -> V if (existing == null) { result[e.key] = e.value - } else { + } + else { result[e.key] = reduce(e.value, existing) } } @@ -71,7 +73,7 @@ private fun Map.mergeReduce(other : Map, reduce : (V, V) -> V return result } -private fun Map>.merge(other : Map>) : Map> { +private fun Map>.merge(other: Map>): Map> { val result = LinkedHashMap>(size() + other.size()) this.forEach { result[it.key] = ArrayList(it.value) @@ -80,7 +82,8 @@ private fun Map>.merge(other : Map>) : Map")) "()" else this + get() = if (contains("->")) "Function${FunctionType(this).arity}" else this val GenerateAttribute.signature: String get() = "$name:${type.typeSignature}" -fun GenerateAttribute.dynamicIfUnknownType(allTypes : Set, standardTypes : Set = standardTypes()) = this.copy(type = type.dynamicIfUnknownType(allTypes, standardTypes)) + +fun GenerateAttribute.dynamicIfUnknownType(allTypes : Set, standardTypes : Set = standardTypes()) = copy(type = type.dynamicIfUnknownType(allTypes, standardTypes)) enum class NativeGetterOrSetter { NONE @@ -52,7 +53,6 @@ enum class GenerateDefinitionKind { CLASS } - class UnionType(val namespace: String, types: Collection) { val memberTypes = HashSet(types) val name = "Union${this.memberTypes.sort().joinToString("Or")}" @@ -93,10 +93,15 @@ val GenerateFunction.signature: String get() = arguments.map { it.type.typeSignature }.joinToString(", ", "$name(", ")") fun GenerateFunction.dynamicIfUnknownType(allTypes : Set) = standardTypes().let { standardTypes -> - this.copy(returnType = returnType.dynamicIfUnknownType(allTypes, standardTypes), arguments = arguments.map { it.dynamicIfUnknownType(allTypes, standardTypes) }) + copy(returnType = returnType.dynamicIfUnknownType(allTypes, standardTypes), arguments = arguments.map { it.dynamicIfUnknownType(allTypes, standardTypes) }) } fun InterfaceDefinition.findExtendedAttribute(name: String) = extendedAttributes.firstOrNull { it.call == name } fun InterfaceDefinition?.hasExtendedAttribute(name: String) = this?.findExtendedAttribute(name) ?: null != null fun InterfaceDefinition.findConstructor() = findExtendedAttribute("Constructor") +data class GenerateUnionTypes( + val typeNamesToUnions : Map>, + val anonymousUnionsMap : Map, + val typedefsMarkersMap : Map +) diff --git a/libraries/tools/idl2k/src/main/kotlin/render.kt b/libraries/tools/idl2k/src/main/kotlin/render.kt index 839339ace8b..47cf4a18297 100644 --- a/libraries/tools/idl2k/src/main/kotlin/render.kt +++ b/libraries/tools/idl2k/src/main/kotlin/render.kt @@ -65,7 +65,7 @@ private fun Appendable.renderFunctionDeclaration(allTypes: Set, f: Gener when (f.nativeGetterOrSetter) { NativeGetterOrSetter.GETTER -> append("nativeGetter ") - NativeGetterOrSetter.GETTER -> append("nativeSetter ") + NativeGetterOrSetter.SETTER -> append("nativeSetter ") } if (override) { @@ -150,33 +150,19 @@ private fun Pair.betterName() = if (((0..9).map { it.toString() fun List>.toMultiMap(): Map> = groupBy { it.first }.mapValues { it.value.map { it.second } } -fun Appendable.render(namespace: String, ifaces: List, typedefs: Iterable) { +fun Appendable.render(namespace: String, ifaces: List, unions : GenerateUnionTypes) { val declaredTypes = ifaces.toMap { it.name } - val anonymousUnionTypes = collectUnionTypes(declaredTypes) - val anonymousUnionTypeTraits = generateUnionTypeTraits(anonymousUnionTypes) - val anonymousUnionsMap = anonymousUnionTypeTraits.toMap { it.name } - - val typedefsToBeGenerated = typedefs.filter { it.types.startsWith("Union<") } - .filter { it.namespace == namespace } - .map { NamedValue(it.name, UnionType(namespace, splitUnionType(it.types))) } - .filter { it.value.memberTypes.all { type -> type in declaredTypes } } - val typedefsMarkerTraits = typedefsToBeGenerated.groupBy { it.name }.mapValues { mapUnionType(it.value.first().value).copy(name = it.key) } - - // TODO better name, extract duplication - val typeNamesToUnions = anonymousUnionTypes.flatMap { unionType -> unionType.memberTypes.map { unionMember -> unionMember to unionType.name } }.toMultiMap() - typedefsToBeGenerated.flatMap { typedef -> typedef.value.memberTypes.map { unionMember -> unionMember to typedef.name } }.toMultiMap() - - val allTypes = declaredTypes + anonymousUnionsMap + typedefsMarkerTraits + val allTypes = declaredTypes + unions.anonymousUnionsMap + unions.typedefsMarkersMap declaredTypes.values().filter { it.namespace == namespace }.forEach { - render(allTypes, typeNamesToUnions, it) + render(allTypes, unions.typeNamesToUnions, it) } - anonymousUnionTypeTraits.filter { it.namespace == "" || it.namespace == namespace }.forEach { + unions.anonymousUnionsMap.values().filter { it.namespace == "" || it.namespace == namespace }.forEach { render(allTypes, emptyMap(), it, markerAnnotation = true) } - typedefsMarkerTraits.values().filter { it.namespace == "" || it.namespace == namespace }.forEach { + unions.typedefsMarkersMap.values().filter { it.namespace == "" || it.namespace == namespace }.forEach { render(allTypes, emptyMap(), it, markerAnnotation = true) } } diff --git a/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt b/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt index f57ae5eadd8..ffdf48596a0 100644 --- a/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt +++ b/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt @@ -32,12 +32,10 @@ private val typeMapper = mapOf( "long" to "Int", "float" to "Float", "double" to "Double", - "any" to "Any?", + "any" to "dynamic", "DOMTimeStamp" to "Number", "object" to "dynamic", // TODO map to Any? - "EventHandler" to "(Event) -> Unit", "WindowProxy" to "Window", - "Function" to "() -> dynamic", "USVString" to "String", "DOMString" to "String", "ByteString" to "String", @@ -57,31 +55,60 @@ fun allSuperTypesImpl(roots: List, all: Map, val returnType : String) +val FunctionType.arity : Int + get() = parameterTypes.size() +val FunctionType.text : String + get() = "(${parameterTypes.map { it.formatFunctionTypePart() }.join(",")}) -> ${returnType}" + +fun FunctionType(text : String) : FunctionType { + val (parameters, returnType) = text.split("->".toRegex()).map {it.trim()}.filter { it != "" } + + return FunctionType( + parameterTypes = parameters.removeSurrounding("(", ")").split(',') + .map { it.trim() } + .filter { !it.isEmpty() } + .map { Attribute(name = "", type = it.removePrefix("vararg "), vararg = it.startsWith("vararg ")) } + .toList(), + returnType = returnType + ) +} + fun standardTypes() = typeMapper.values().map {it.dropNullable()}.toSet() fun String.dynamicIfUnknownType(allTypes: Set, standardTypes: Set = standardTypes()): String = when { - startsWith("Union<") -> UnionType("", splitUnionType(this)).name.dynamicIfUnknownType(allTypes, standardTypes).copyNullabilityFrom(this) - endsWith("?") -> this.dropNullable().dynamicIfUnknownType(allTypes, standardTypes).ensureNullable() - contains("->") -> { - val (parameters, returnType) = this.split("->".toRegex()).map {it.trim()}.filter { it != "" } - - "(${parameters.removeSurrounding("(", ")").split(',').map {it.dynamicIfUnknownType(allTypes, standardTypes)}.join(",")}) -> ${returnType.dynamicIfUnknownType(allTypes, standardTypes)}" - } this in allTypes -> this this in standardTypes -> this + startsWith("Array<") -> "Array<" + removePrefix("Array<").removeSuffix(">").dynamicIfUnknownType(allTypes, standardTypes) + ">" + startsWith("Union<") -> UnionType("", splitUnionType(this)).name.dynamicIfUnknownType(allTypes, standardTypes).copyNullabilityFrom(this) + this != dropNullable() -> dropNullable().dynamicIfUnknownType(allTypes, standardTypes).ensureNullable() + contains("->") -> { + FunctionType(this).let { function -> + function.copy( + returnType = function.returnType.dynamicIfUnknownType(allTypes, standardTypes), + parameterTypes = function.parameterTypes.map { it.copy(type = it.type.dynamicIfUnknownType(allTypes, standardTypes)) } + ).text + } + } else -> "dynamic" } private fun mapType(repository: Repository, type: String): String = when { type in typeMapper -> typeMapper[type]!! - type.endsWith("?") -> mapType(repository, type.dropNullable()).ensureNullable() + type.isNullable() -> mapType(repository, type.dropNullable()).ensureNullable() type.endsWith("...") -> mapType(repository, type.substring(0, type.length() - 3)) type.endsWith("[]") -> "Array<${mapType(repository, type.substring(0, type.length() - 2))}>" type.startsWith("unrestricted") -> mapType(repository, type.substring(12)) - type.startsWith("sequence") -> "Any" // TODO how do we handle sequences? + type.startsWith("sequence<") -> "Array<${mapType(repository, type.removePrefix("sequence<").removeSuffix(">").trim())}>" + type.startsWith("sequence") -> "Array" type in repository.typeDefs -> mapTypedef(repository, type) type in repository.enums -> "String" - type.endsWith("Callback") -> "() -> Unit" + type.contains("->") -> FunctionType(type).let { function -> + function.copy( + returnType = mapType(repository, function.returnType), + parameterTypes = function.parameterTypes.takeWhile { !it.vararg }.map { it.copy(type = mapType(repository, it.type)) } + ).text + } type.startsWith("Promise<") -> "dynamic" repository.interfaces[type].hasExtendedAttribute("NoInterfaceObject") -> "dynamic" else -> type @@ -99,7 +126,7 @@ private fun mapTypedef(repository: Repository, type: String): String { // Union, C> -> [A, B, C] // Union>, C> -> [A, B, C] private fun splitUnionType(unionType: String) = - unionType.replaceAll("Union<", "").replaceAll("[>]+", "").split("\\s*,\\s*".toRegex()).distinct().map {it.replaceAll("\\?$", "")} + unionType.replace("Union<".toRegex(), "").replace("[>]+".toRegex(), "").split("\\s*,\\s*".toRegex()).distinct().map {it.replace("\\?$".toRegex(), "")} private fun GenerateFunction?.allTypes() = if (this != null) sequenceOf(returnType) + arguments.asSequence().map { it.type } else emptySequence() diff --git a/libraries/tools/idl2k/src/main/kotlin/utils.kt b/libraries/tools/idl2k/src/main/kotlin/utils.kt new file mode 100644 index 00000000000..c1cb9daf40b --- /dev/null +++ b/libraries/tools/idl2k/src/main/kotlin/utils.kt @@ -0,0 +1,43 @@ +package org.jetbrains.idl2k.util + +import java.util.* + +fun List>.mutationsCount() = if (isEmpty()) 0 else fold(1) { acc, e -> acc * e.size() } + +fun List>.mutations() : List> { + val indices = IntArray(size()) + val sizes = map { it.size() } + + fun next() : Boolean { + var carry = 1 + + for (pos in size() - 1 downTo 0) { + var index = indices[pos] + val size = sizes[pos] + + index += carry + carry = (index - size + 1).coerceAtLeast(0) + + if (index >= size) { + indices[pos] = index - size + } else { + indices[pos] = index + return true + } + } + + return carry == 0 + } + + val count = mutationsCount() + if (count == 0) { + return emptyList() + } + + val result = ArrayList>(count) + do { + result.add(indices.mapIndexed { pos, index -> this[pos][index] }) + } while (next()) + + return result +}