From a6bed4f623fe96c7808fd4f48fa76623407b448a Mon Sep 17 00:00:00 2001 From: Sergey Mashkov Date: Thu, 7 May 2015 20:32:15 +0300 Subject: [PATCH] JS Fix marker interface filtering --- .../src/generated/org.khronos.webgl.kt | 24 ------------------ .../src/generated/org.w3c.dom.css.kt | 24 ------------------ .../src/generated/org.w3c.dom.events.kt | 24 ------------------ js/js.libraries/src/generated/org.w3c.dom.kt | 6 ----- .../src/generated/org.w3c.dom.parsing.kt | 24 ------------------ .../src/generated/org.w3c.fetch.kt | 24 ------------------ .../src/generated/org.w3c.files.kt | 24 ------------------ .../src/generated/org.w3c.notifications.kt | 24 ------------------ .../src/generated/org.w3c.workers.kt | 18 ------------- js/js.libraries/src/generated/org.w3c.xhr.kt | 24 ------------------ .../src/main/antlr4/org/antlr/webidl/test.g4 | 25 ------------------- .../tools/idl2k/src/main/kotlin/render.kt | 10 ++++---- .../idl2k/src/main/kotlin/typeMappings.kt | 9 ++++++- 13 files changed, 13 insertions(+), 247 deletions(-) delete mode 100644 libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/test.g4 diff --git a/js/js.libraries/src/generated/org.khronos.webgl.kt b/js/js.libraries/src/generated/org.khronos.webgl.kt index fb9203fa2aa..1060184057f 100644 --- a/js/js.libraries/src/generated/org.khronos.webgl.kt +++ b/js/js.libraries/src/generated/org.khronos.webgl.kt @@ -552,27 +552,3 @@ native public open class WebGLContextEventInit : EventInit() { var statusMessage: String } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - 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 2f8cb2b9ded..3099ccd87c9 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.css.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.css.kt @@ -216,27 +216,3 @@ native public trait PseudoElement { native public trait CSS { } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - 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 30a4a668d44..5f37940aef0 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.events.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.events.kt @@ -233,27 +233,3 @@ native public open class MutationEvent : Event(noImpl, noImpl) { } } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/js/js.libraries/src/generated/org.w3c.dom.kt b/js/js.libraries/src/generated/org.w3c.dom.kt index f3d0791fb73..a049059fd18 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.kt @@ -4854,12 +4854,6 @@ native public marker trait UnionElementOrMouseEvent { native public marker trait UnionElementOrProcessingInstruction { } -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - native public marker trait RenderingContext { } 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 3b62fc37406..5b4132ccb21 100644 --- a/js/js.libraries/src/generated/org.w3c.dom.parsing.kt +++ b/js/js.libraries/src/generated/org.w3c.dom.parsing.kt @@ -25,27 +25,3 @@ native public open class XMLSerializer { fun serializeToString(root: Node): String = noImpl } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/js/js.libraries/src/generated/org.w3c.fetch.kt b/js/js.libraries/src/generated/org.w3c.fetch.kt index 42682465ab9..f15b6c82ad6 100644 --- a/js/js.libraries/src/generated/org.w3c.fetch.kt +++ b/js/js.libraries/src/generated/org.w3c.fetch.kt @@ -111,27 +111,3 @@ native public open class ResponseInit { var headers: dynamic } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/js/js.libraries/src/generated/org.w3c.files.kt b/js/js.libraries/src/generated/org.w3c.files.kt index 99be729a048..b17e97b3c5b 100644 --- a/js/js.libraries/src/generated/org.w3c.files.kt +++ b/js/js.libraries/src/generated/org.w3c.files.kt @@ -106,27 +106,3 @@ native public open class FileReaderSync { native public trait URL { } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/js/js.libraries/src/generated/org.w3c.notifications.kt b/js/js.libraries/src/generated/org.w3c.notifications.kt index 26fec8a7437..ec7778b08f6 100644 --- a/js/js.libraries/src/generated/org.w3c.notifications.kt +++ b/js/js.libraries/src/generated/org.w3c.notifications.kt @@ -98,27 +98,3 @@ native public open class NotificationEventInit : ExtendableEventInit() { var notification: Notification } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/js/js.libraries/src/generated/org.w3c.workers.kt b/js/js.libraries/src/generated/org.w3c.workers.kt index 4f8f9aca2b8..8d4863f13f9 100644 --- a/js/js.libraries/src/generated/org.w3c.workers.kt +++ b/js/js.libraries/src/generated/org.w3c.workers.kt @@ -264,24 +264,6 @@ native public trait CacheStorage { native public open class FunctionalEvent : ExtendableEvent(noImpl, noImpl) { } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - native public marker trait UnionMessagePortOrServiceWorker { } diff --git a/js/js.libraries/src/generated/org.w3c.xhr.kt b/js/js.libraries/src/generated/org.w3c.xhr.kt index b658509f06a..6e5721c3f65 100644 --- a/js/js.libraries/src/generated/org.w3c.xhr.kt +++ b/js/js.libraries/src/generated/org.w3c.xhr.kt @@ -128,27 +128,3 @@ native public open class ProgressEventInit : EventInit() { var total: Long = 0 } -native public marker trait UnionElementOrHTMLCollection { -} - -native public marker trait UnionElementOrRadioNodeList { -} - -native public marker trait UnionHTMLOptGroupElementOrHTMLOptionElement { -} - -native public marker trait UnionAudioTrackOrTextTrackOrVideoTrack { -} - -native public marker trait UnionElementOrMouseEvent { -} - -native public marker trait UnionElementOrProcessingInstruction { -} - -native public marker trait UnionMessagePortOrServiceWorker { -} - -native public marker trait UnionClientOrMessagePortOrServiceWorker { -} - diff --git a/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/test.g4 b/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/test.g4 deleted file mode 100644 index 24f3e47ab43..00000000000 --- a/libraries/tools/idl2k/src/main/antlr4/org/antlr/webidl/test.g4 +++ /dev/null @@ -1,25 +0,0 @@ -grammar test; - -testme - : namespace? declarations EOF - ; - -declarations - : declaration* - ; - -namespace - : 'namespace' IDENTIFIER ';' - ; - -declaration - : 'interface' IDENTIFIER - ; - -IDENTIFIER - : [A-Za-z_][A-Za-z_0-9]* - ; - -WHITESPACE_WEBIDL - : [\t\n\r ]+ -> channel(HIDDEN) -; \ No newline at end of file diff --git a/libraries/tools/idl2k/src/main/kotlin/render.kt b/libraries/tools/idl2k/src/main/kotlin/render.kt index de33aedcc0b..c8b2627ef4a 100644 --- a/libraries/tools/idl2k/src/main/kotlin/render.kt +++ b/libraries/tools/idl2k/src/main/kotlin/render.kt @@ -8,7 +8,7 @@ private fun O.indent(level: Int) { } } -private fun Appendable.renderAttributeDeclaration(allTypes: Set, arg: GenerateAttribute, override: Boolean, level: Int = 1) { +private fun Appendable.renderAttributeDeclaration(arg: GenerateAttribute, override: Boolean, level: Int = 1) { indent(level) if (override) { @@ -117,7 +117,7 @@ fun Appendable.render(allTypes: Map, typeNamesToUn val superSignatures = superAttributes.map { it.signature } merge superFunctions.map { it.signature } iface.memberAttributes.filter { it !in superAttributes }.map { it.dynamicIfUnknownType(allTypes.keySet()) }.groupBy { it.signature }.reduceValues().values().forEach { arg -> - renderAttributeDeclaration(allTypes.keySet(), arg, arg.signature in superSignatures) + renderAttributeDeclaration(arg, arg.signature in superSignatures) } iface.memberFunctions.filter { it !in superFunctions }.map { it.dynamicIfUnknownType(allTypes.keySet()) }.groupBy { it.signature }.reduceValues(::betterFunction).values().forEach { renderFunctionDeclaration(allTypes.keySet(), it, it.signature in superSignatures) @@ -127,7 +127,7 @@ fun Appendable.render(allTypes: Map, typeNamesToUn indent(1) appendln("companion object {") iface.constants.forEach { - renderAttributeDeclaration(allTypes.keySet(), it, override = false, level = 2) + renderAttributeDeclaration(it, override = false, level = 2) } indent(1) appendln("}") @@ -172,11 +172,11 @@ fun Appendable.render(namespace: String, ifaces: List, typ render(allTypes, typeNamesToUnions, it) } - anonymousUnionTypeTraits.forEach { + anonymousUnionTypeTraits.filter { it.namespace == "" || it.namespace == namespace }.forEach { render(allTypes, emptyMap(), it, markerAnnotation = true) } - typedefsMarkerTraits.values().forEach { + typedefsMarkerTraits.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 28f9cc5ebee..5d3efa754ca 100644 --- a/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt +++ b/libraries/tools/idl2k/src/main/kotlin/typeMappings.kt @@ -112,5 +112,12 @@ private fun collectUnionTypes(allTypes: Map) = .map { splitUnionType(it) } .filter { it.all { unionMember -> unionMember in allTypes } } .toSet() - .map { UnionType("", it) } + .map { UnionType(guessPackage(it, allTypes), it) } +private fun guessPackage(types : List, allTypes: Map) = + types.map { allTypes[it] } + .map { it?.namespace } + .filterNotNull() + .filter { it != "" } + .distinct() + .minBy { it.split('.').size() } ?: ""