Merge pull request #11496 (Update webidl2 to v13.0.3)
diff --git a/interfaces/pointerevents-extension.idl b/interfaces/pointerevents-extension.idl
new file mode 100644
index 0000000..63a05a5
--- /dev/null
+++ b/interfaces/pointerevents-extension.idl
@@ -0,0 +1,8 @@
+dictionary PointerEventInit : MouseEventInit {
+ sequence<PointerEvent> coalescedEvents;
+};
+
+[Constructor(DOMString type, optional PointerEventInit eventInitDict)]
+interface PointerEvent : MouseEvent {
+ sequence<PointerEvent> getCoalescedEvents();
+};
diff --git a/pointerevents/extension/idlharness.html b/pointerevents/extension/idlharness.html
index e2835f8..40a441c 100644
--- a/pointerevents/extension/idlharness.html
+++ b/pointerevents/extension/idlharness.html
@@ -35,22 +35,11 @@
};
</pre>
-
-<pre id='idl'>
-dictionary PointerEventInit : MouseEventInit {
- sequence<PointerEvent> coalescedEvents;
-};
-
-[Constructor(DOMString type, optional PointerEventInit eventInitDict)]
-interface PointerEvent : MouseEvent {
- sequence<PointerEvent> getCoalescedEvents();
-};
-
-</pre>
<script>
promise_test(async function () {
const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
const uievents = await fetch('/interfaces/uievents.idl').then(r => r.text());
+ const idl = await fetch('/interfaces/pointerevents-extension.idl').then(r => r.text());
const idl_array = new IdlArray();
idl_array.add_untested_idls(dom, { only: ['EventInit'] });
@@ -61,7 +50,7 @@
});
idl_array.add_untested_idls(
document.getElementById("untested_idl").textContent);
- idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_idls(idl);
idl_array.test();
}, 'pointerevents extension interfaces');
</script>
diff --git a/resources/test/tests/functional/idlharness/IdlInterface/test_to_json_operation.html b/resources/test/tests/functional/idlharness/IdlInterface/test_to_json_operation.html
index 3d05e9a..ba8cd78 100644
--- a/resources/test/tests/functional/idlharness/IdlInterface/test_to_json_operation.html
+++ b/resources/test/tests/functional/idlharness/IdlInterface/test_to_json_operation.html
@@ -167,7 +167,7 @@
"status_string": "FAIL"
},
{
- "message": "assert_true: {\"type\":\"return-type\",\"sequence\":false,\"generic\":null,\"nullable\":false,\"union\":false,\"idlType\":\"DOMException\"} is not an appropriate return value for the toJSON operation of N expected true got false",
+ "message": "assert_true: {\"type\":\"return-type\",\"generic\":null,\"nullable\":false,\"union\":false,\"idlType\":\"DOMException\",\"extAttrs\":[]} is not an appropriate return value for the toJSON operation of N expected true got false",
"name": "Test toJSON operation of N",
"properties": {},
"status_string": "FAIL"
diff --git a/resources/test/tests/unit/basic.html b/resources/test/tests/unit/basic.html
index 7998a2a..7eef4a8 100644
--- a/resources/test/tests/unit/basic.html
+++ b/resources/test/tests/unit/basic.html
@@ -24,7 +24,12 @@
assert_equals(typeof WebIDL2.parse, "function");
}, 'WebIDL2 namespace should have a parse method');
test(function() {
- assert_throws(new TypeError(), function() { WebIDL2.parse("I'm a syntax error"); });
+ try {
+ WebIDL2.parse("I'm a syntax error");
+ throw new Error("Web IDL didn't throw");
+ } catch (e) {
+ assert_true(e.constructor.name === "WebIDLParseError");
+ }
}, 'WebIDL2 parse method should bail on incorrect WebIDL');
test(function() {
assert_equals(typeof WebIDL2.parse("interface Foo {};"), "object");
diff --git a/resources/webidl2/.gitmodules b/resources/webidl2/.gitmodules
deleted file mode 100644
index a3f5485..0000000
--- a/resources/webidl2/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "test/widlproc"]
- path = test/widlproc
- url = https://github.com/dontcallmedom/widlproc.git
diff --git a/resources/webidl2/CHANGELOG.md b/resources/webidl2/CHANGELOG.md
index 1596d71..91e2227 100644
--- a/resources/webidl2/CHANGELOG.md
+++ b/resources/webidl2/CHANGELOG.md
@@ -1,5 +1,13 @@
# Change Log
+## [v10.2.1](https://github.com/w3c/webidl2.js/tree/v10.2.1) (2018-03-09)
+[Full Changelog](https://github.com/w3c/webidl2.js/compare/v10.2.0...v10.2.1)
+
+**Merged pull requests:**
+
+- Optimise tokenisation and whitespace skipping [\#139](https://github.com/w3c/webidl2.js/pull/139) ([ricea](https://github.com/ricea))
+- refactor: small syntax changes [\#137](https://github.com/w3c/webidl2.js/pull/137) ([saschanaz](https://github.com/saschanaz))
+
## [v10.2.0](https://github.com/w3c/webidl2.js/tree/v10.2.0) (2018-01-30)
[Full Changelog](https://github.com/w3c/webidl2.js/compare/v10.1.0...v10.2.0)
diff --git a/resources/webidl2/README.md b/resources/webidl2/README.md
index 8791360..9a8f3f8 100644
--- a/resources/webidl2/README.md
+++ b/resources/webidl2/README.md
@@ -45,23 +45,6 @@
</script>
```
-### Advanced Parsing
-
-`parse()` can optionally accept a second parameter, an options object, which can be used to
-modify parsing behavior.
-
-The following options are recognized:
-```JS
-{
- allowNestedTypedefs: false
-}
-```
-
-And their meanings are as follows:
-
-* `allowNestedTypedefs`: Boolean indicating whether the parser should accept `typedef`s as valid members of `interface`s.
-This is non-standard syntax and therefore the default is `false`.
-
### Errors
When there is a syntax error in the WebIDL, it throws an exception object with the following
@@ -93,17 +76,18 @@
```JS
{
- "sequence": false,
+ "type": "attribute-type",
"generic": null,
- "idlType": "void",
+ "idlType": "unsigned short",
"nullable": false,
"union": false,
+ "extAttrs": [...]
}
```
Where the fields are as follows:
-* `sequence`: Boolean indicating if it is a sequence. Same as `generic === "sequence"`.
+* `type`: String indicating where this type is used. Can be `null` if not applicable.
* `generic`: String indicating the generic type (e.g. "Promise", "sequence"). `null`
otherwise.
* `idlType`: Can be different things depending on context. In most cases, this will just
@@ -113,6 +97,7 @@
description for the type in the sequence, the eventual value of the promise, etc.
* `nullable`: Boolean indicating whether this is nullable or not.
* `union`: Boolean indicating whether this is a union type or not.
+* `extAttrs`: A list of [extended attributes](#extended-attributes).
### Interface
@@ -211,11 +196,13 @@
"type": "callback",
"name": "AsyncOperationCallback",
"idlType": {
+ "type": "return-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"arguments": [...],
"extAttrs": []
@@ -244,11 +231,13 @@
"name": "fillPattern",
"required": false,
"idlType": {
+ "type": "dictionary-type",
"sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": [...]
},
"extAttrs": [],
"default": {
@@ -311,17 +300,21 @@
{
"type": "typedef",
"idlType": {
+ "type": "typedef-type",
"sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
+ "type": "typedef-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
- }
+ "idlType": "Point",
+ "extAttrs": [...]
+ },
+ "extAttrs": [...]
},
"name": "PointSequence",
"extAttrs": []
@@ -388,11 +381,13 @@
"static": false,
"stringifier": false,
"idlType": {
+ "type": "return-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "intersection",
"arguments": [{
@@ -400,11 +395,13 @@
"variadic": true,
"extAttrs": [],
"idlType": {
+ "type": "argument-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": [...]
},
"name": "ints"
}],
@@ -437,11 +434,13 @@
"inherit": false,
"readonly": false,
"idlType": {
+ "type": "attribute-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "RegExp"
+ "idlType": "RegExp",
+ "extAttrs": [...]
},
"name": "regexp",
"extAttrs": []
@@ -467,7 +466,15 @@
{
"type": "const",
"nullable": false,
- "idlType": "boolean",
+ "idlType": {
+ "type": "const-type",
+ "sequence": false,
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "boolean"
+ "extAttrs": []
+ },
"name": "DEBUG",
"value": {
"type": "boolean",
@@ -481,7 +488,7 @@
* `type`: Always "const".
* `nullable`: Whether its type is nullable.
-* `idlType`: The type of the constant (a simple type, the type name).
+* `idlType`: An [IDL Type](#idl-type) of the constant that represents a simple type, the type name.
* `name`: The name of the constant.
* `value`: The constant value as described by [Const Values](#default-and-const-values)
* `extAttrs`: A list of [extended attributes](#extended-attributes).
@@ -497,11 +504,13 @@
"variadic": true,
"extAttrs": [],
"idlType": {
+ "type": "argument-type",
"sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": [...]
},
"name": "ints"
}]
@@ -546,8 +555,6 @@
* `type`: Always `"extended-attribute"`.
* `rhs`: If there is a right-hand side, this will capture its `type` (which can be
"identifier" or "identifier-list") and its `value`.
-* `typePair`: If the extended attribute is a `MapClass` this will capture the
- map's key type and value type respectively.
### Default and Const Values
@@ -587,14 +594,6 @@
## Testing
-In order to run the tests you need to ensure that the widlproc submodule inside `test` is
-initialized and up to date:
-
-```Bash
-git submodule init
-git submodule update
-```
-
### Running
The test runs with mocha and expect.js. Normally, running mocha in the root directory
diff --git a/resources/webidl2/checker/index.html b/resources/webidl2/checker/index.html
new file mode 100644
index 0000000..9897d85
--- /dev/null
+++ b/resources/webidl2/checker/index.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>WebIDL 2 Checker</title>
+
+<script src='../lib/webidl2.js'></script>
+<script>
+let parserResult = undefined;
+
+function formatParserOutput() {
+ const outputEl = document.getElementById('webidl-checker-output');
+ if (parserResult) {
+ const prettyPrintEl = document.getElementById('pretty-print');
+ outputEl.innerText = JSON.stringify(parserResult, null, prettyPrintEl.checked ? 2 : null);
+ } else {
+ outputEl.innerText = '';
+ }
+}
+
+function checkWebIDL(textToCheck) {
+ const validation = document.getElementById('webidl-checker-validation');
+ parserResult = null;
+ try {
+ parserResult = WebIDL2.parse(textToCheck);
+ validation.innerText = 'WebIDL parsed successfully!';
+ } catch (e) {
+ validation.innerText = 'Exception while parsing WebIDL. See JavaScript console for more details.\n\n' + e.toString();
+ // Pass it along to the JavaScript console.
+ throw e;
+ } finally {
+ formatParserOutput();
+ }
+}
+</script>
+<style>
+textarea {
+ font-family: monospace;
+}
+</style>
+</head>
+<body>
+<h2>WebIDL Checker</h2>
+<p>This is an online checker for WebIDL built on the <a href="https://github.com/w3c/webidl2.js">webidl2.js</a> project.</p>
+<p>Enter your WebIDL to check below:</p>
+<textarea id='webidl-to-check' rows='20' cols='80'></textarea>
+<br>
+<input type='button' value='Check WebIDL' onclick='checkWebIDL(document.getElementById("webidl-to-check").value)'>
+<p>Validation results:</p>
+<textarea id='webidl-checker-validation' rows='20' cols='80'></textarea>
+<p>Parser output:</p>
+<textarea id='webidl-checker-output' rows='20' cols='80'></textarea>
+<br>
+<input type='checkbox' id='pretty-print' checked='true' onchange='formatParserOutput()'>Pretty Print
+</body>
+</html>
diff --git a/resources/webidl2/lib/webidl2.js b/resources/webidl2/lib/webidl2.js
index a7a61d9..ef519c0 100644
--- a/resources/webidl2/lib/webidl2.js
+++ b/resources/webidl2/lib/webidl2.js
@@ -8,67 +8,132 @@
// against integers early.
"float": /-?(?=[0-9]*\.|[0-9]+[eE])(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,
"integer": /-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,
- "identifier": /[A-Z_a-z][0-9A-Z_a-z-]*/y,
+ "identifier": /_?[A-Za-z][0-9A-Z_a-z-]*/y,
"string": /"[^"]*"/y,
"whitespace": /[\t\n\r ]+/y,
"comment": /((\/(\/.*|\*([^*]|\*[^\/])*\*\/)[\t\n\r ]*)+)/y,
- "other": /[^\t\n\r 0-9A-Z_a-z]/y
+ "other": /[^\t\n\r 0-9A-Za-z]/y
};
- function attemptTokenMatch(str, type, re, lastIndex, tokens) {
- re.lastIndex = lastIndex;
- const result = re.exec(str);
- if (result) {
- tokens.push({ type, value: result[0] });
- return re.lastIndex;
- }
- return -1;
- }
+ const stringTypes = [
+ "ByteString",
+ "DOMString",
+ "USVString"
+ ];
+
+ const argumentNameKeywords = [
+ "attribute",
+ "callback",
+ "const",
+ "deleter",
+ "dictionary",
+ "enum",
+ "getter",
+ "includes",
+ "inherit",
+ "interface",
+ "iterable",
+ "maplike",
+ "namespace",
+ "partial",
+ "required",
+ "setlike",
+ "setter",
+ "static",
+ "stringifier",
+ "typedef",
+ "unrestricted"
+ ];
+
+ const nonRegexTerminals = [
+ "FrozenArray",
+ "Infinity",
+ "NaN",
+ "Promise",
+ "boolean",
+ "byte",
+ "double",
+ "false",
+ "float",
+ "implements",
+ "legacyiterable",
+ "long",
+ "mixin",
+ "null",
+ "octet",
+ "optional",
+ "or",
+ "readonly",
+ "record",
+ "sequence",
+ "short",
+ "true",
+ "unsigned",
+ "void"
+ ].concat(argumentNameKeywords, stringTypes);
+
+ const punctuations = [
+ "(",
+ ")",
+ ",",
+ "-Infinity",
+ "...",
+ ":",
+ ";",
+ "<",
+ "=",
+ ">",
+ "?",
+ "[",
+ "]",
+ "{",
+ "}"
+ ];
function tokenise(str) {
const tokens = [];
let lastIndex = 0;
+ let trivia = "";
while (lastIndex < str.length) {
const nextChar = str.charAt(lastIndex);
let result = -1;
- if (/[-0-9.]/.test(nextChar)) {
- result = attemptTokenMatch(str, "float", tokenRe.float, lastIndex,
- tokens);
+
+ if (/[\t\n\r ]/.test(nextChar)) {
+ result = attemptTokenMatch("whitespace", { noFlushTrivia: true });
+ } else if (nextChar === '/') {
+ result = attemptTokenMatch("comment", { noFlushTrivia: true });
+ }
+
+ if (result !== -1) {
+ trivia += tokens.pop().value;
+ } else if (/[-0-9.]/.test(nextChar)) {
+ result = attemptTokenMatch("float");
if (result === -1) {
- result = attemptTokenMatch(str, "integer", tokenRe.integer, lastIndex,
- tokens);
- }
- if (result === -1) {
- // '-' and '.' can also match "other".
- result = attemptTokenMatch(str, "other", tokenRe.other,
- lastIndex, tokens);
+ result = attemptTokenMatch("integer");
}
} else if (/[A-Z_a-z]/.test(nextChar)) {
- result = attemptTokenMatch(str, "identifier", tokenRe.identifier,
- lastIndex, tokens);
+ result = attemptTokenMatch("identifier");
+ const token = tokens[tokens.length - 1];
+ if (result !== -1 && nonRegexTerminals.includes(token.value)) {
+ token.type = token.value;
+ }
} else if (nextChar === '"') {
- result = attemptTokenMatch(str, "string", tokenRe.string,
- lastIndex, tokens);
- if (result === -1) {
- // '"' can also match "other".
- result = attemptTokenMatch(str, "other", tokenRe.other,
- lastIndex, tokens);
+ result = attemptTokenMatch("string");
+ }
+
+ for (const punctuation of punctuations) {
+ if (str.startsWith(punctuation, lastIndex)) {
+ tokens.push({ type: punctuation, value: punctuation, trivia });
+ trivia = "";
+ lastIndex += punctuation.length;
+ result = lastIndex;
+ break;
}
- } else if (/[\t\n\r ]/.test(nextChar)) {
- result = attemptTokenMatch(str, "whitespace", tokenRe.whitespace,
- lastIndex, tokens);
- } else if (nextChar === '/') {
- // The parser expects comments to be labelled as "whitespace".
- result = attemptTokenMatch(str, "whitespace", tokenRe.comment,
- lastIndex, tokens);
- if (result === -1) {
- // '/' can also match "other".
- result = attemptTokenMatch(str, "other", tokenRe.other,
- lastIndex, tokens);
- }
- } else {
- result = attemptTokenMatch(str, "other", tokenRe.other,
- lastIndex, tokens);
+ }
+
+ // other as the last try
+ if (result === -1) {
+ result = attemptTokenMatch("other");
}
if (result === -1) {
throw new Error("Token stream not progressing");
@@ -76,6 +141,20 @@
lastIndex = result;
}
return tokens;
+
+ function attemptTokenMatch(type, { noFlushTrivia } = {}) {
+ const re = tokenRe[type];
+ re.lastIndex = lastIndex;
+ const result = re.exec(str);
+ if (result) {
+ tokens.push({ type, value: result[0], trivia });
+ if (!noFlushTrivia) {
+ trivia = "";
+ }
+ return re.lastIndex;
+ }
+ return -1;
+ }
}
class WebIDLParseError {
@@ -87,11 +166,13 @@
}
toString() {
- return `${this.message}, line ${this.line} (tokens: '${this.input}')\n${JSON.stringify(this.tokens, null, 4)}`;
+ const escapedInput = JSON.stringify(this.input);
+ const tokens = JSON.stringify(this.tokens, null, 4);
+ return `${this.message}, line ${this.line} (tokens: ${escapedInput})\n${tokens}`;
}
}
- function parse(tokens, opt) {
+ function parse(tokens) {
let line = 1;
tokens = tokens.slice();
const names = new Map();
@@ -112,15 +193,24 @@
stringifier: false
});
+ const EMPTY_IDLTYPE = Object.freeze({
+ generic: null,
+ nullable: false,
+ union: false,
+ idlType: null,
+ extAttrs: []
+ });
+
function error(str) {
- let tok = "";
- let numTokens = 0;
const maxTokens = 5;
- while (numTokens < maxTokens && tokens.length > numTokens) {
- tok += tokens[numTokens].value;
- numTokens++;
+ const tok = tokens
+ .slice(consume_position, consume_position + maxTokens)
+ .map(t => t.trivia + t.value).join("");
+ // Count newlines preceding the actual erroneous token
+ if (tokens.length) {
+ line += count(tokens[consume_position].trivia, "\n");
}
-
+
let message;
if (current) {
message = `Got an error during or right after parsing \`${current.partial ? "partial " : ""}${current.type} ${current.name}\`: ${str}`
@@ -141,15 +231,31 @@
return name;
}
- let last_token = null;
+ let consume_position = 0;
- function consume(type, value) {
- if (!tokens.length || tokens[0].type !== type) return;
- if (typeof value === "undefined" || tokens[0].value === value) {
- last_token = tokens.shift();
- if (type === ID && last_token.value.startsWith('_'))
- last_token.value = last_token.value.substring(1);
- return last_token;
+ function probe(type) {
+ return tokens.length > consume_position && tokens[consume_position].type === type;
+ }
+
+ function consume(...candidates) {
+ // TODO: use const when Servo updates its JS engine
+ for (let type of candidates) {
+ if (!probe(type)) continue;
+ const token = tokens[consume_position];
+ consume_position++;
+ line += count(token.trivia, "\n");
+ return token;
+ }
+ }
+
+ function unescape(identifier) {
+ return identifier.startsWith('_') ? identifier.slice(1) : identifier;
+ }
+
+ function unconsume(position) {
+ while (consume_position > position) {
+ consume_position--;
+ line -= count(tokens[consume_position].trivia, "\n");
}
}
@@ -161,65 +267,13 @@
return total;
}
- function ws() {
- if (!tokens.length) return;
- if (tokens[0].type === "whitespace") {
- const t = tokens.shift();
- line += count(t.value, '\n');
- return t;
- }
- }
-
- const all_ws_re = {
- "ws": /([\t\n\r ]+)/y,
- "line-comment": /\/\/(.*)\r?\n?/y,
- "multiline-comment": /\/\*((?:[^*]|\*[^/])*)\*\//y
- };
- function all_ws(store, pea) { // pea == post extended attribute, tpea = same for types
- const t = { type: "whitespace", value: "" };
- while (true) {
- const w = ws();
- if (!w) break;
- t.value += w.value;
- }
- if (t.value.length > 0) {
- if (store) {
- let w = t.value;
- let lastIndex = 0;
- while (lastIndex < w.length) {
- let matched = false;
- // Servo doesn't support using "const" in this construction yet.
- // See https://github.com/servo/servo/issues/20231.
- // |type| can be made const once Servo supports it.
- for (let type in all_ws_re) {
- const re = all_ws_re[type];
- re.lastIndex = lastIndex;
- const result = re.exec(w);
- if (result) {
- store.push({ type: type + (pea ? ("-" + pea) : ""), value: result[1] });
- matched = true;
- lastIndex = re.lastIndex;
- break;
- }
- }
- if (!matched)
- throw new Error("Surprising white space construct."); // this shouldn't happen
- }
- }
- return t;
- }
- }
-
function integer_type() {
let ret = "";
- all_ws();
- if (consume(ID, "unsigned")) ret = "unsigned ";
- all_ws();
- if (consume(ID, "short")) return ret + "short";
- if (consume(ID, "long")) {
+ if (consume("unsigned")) ret = "unsigned ";
+ if (consume("short")) return ret + "short";
+ if (consume("long")) {
ret += "long";
- all_ws();
- if (consume(ID, "long")) return ret + " long";
+ if (consume("long")) return ret + " long";
return ret;
}
if (ret) error("Failed to parse integer type");
@@ -227,91 +281,85 @@
function float_type() {
let ret = "";
- all_ws();
- if (consume(ID, "unrestricted")) ret = "unrestricted ";
- all_ws();
- if (consume(ID, "float")) return ret + "float";
- if (consume(ID, "double")) return ret + "double";
+ if (consume("unrestricted")) ret = "unrestricted ";
+ if (consume("float")) return ret + "float";
+ if (consume("double")) return ret + "double";
if (ret) error("Failed to parse float type");
}
function primitive_type() {
const num_type = integer_type() || float_type();
if (num_type) return num_type;
- all_ws();
- if (consume(ID, "boolean")) return "boolean";
- if (consume(ID, "byte")) return "byte";
- if (consume(ID, "octet")) return "octet";
+ if (consume("boolean")) return "boolean";
+ if (consume("byte")) return "byte";
+ if (consume("octet")) return "octet";
}
function const_value() {
- if (consume(ID, "true")) return { type: "boolean", value: true };
- if (consume(ID, "false")) return { type: "boolean", value: false };
- if (consume(ID, "null")) return { type: "null" };
- if (consume(ID, "Infinity")) return { type: "Infinity", negative: false };
- if (consume(ID, "NaN")) return { type: "NaN" };
- const ret = consume(FLOAT) || consume(INT);
+ if (consume("true")) return { type: "boolean", value: true };
+ if (consume("false")) return { type: "boolean", value: false };
+ if (consume("null")) return { type: "null" };
+ if (consume("Infinity")) return { type: "Infinity", negative: false };
+ if (consume("-Infinity")) return { type: "Infinity", negative: true };
+ if (consume("NaN")) return { type: "NaN" };
+ const ret = consume(FLOAT, INT);
if (ret) return { type: "number", value: ret.value };
- const tok = consume(OTHER, "-");
- if (tok) {
- if (consume(ID, "Infinity")) return { type: "Infinity", negative: true };
- else tokens.unshift(tok);
- }
}
function type_suffix(obj) {
- while (true) {
- all_ws();
- if (consume(OTHER, "?")) {
- if (obj.nullable) error("Can't nullable more than once");
- obj.nullable = true;
- } else return;
+ obj.nullable = !!consume("?");
+ if (probe("?")) error("Can't nullable more than once");
+ }
+
+ function generic_type(typeName) {
+ const name = consume("FrozenArray", "Promise", "sequence", "record");
+ if (!name) {
+ return;
}
+ const ret = { generic: name.type };
+ consume("<") || error(`No opening bracket after ${name.type}`);
+ switch (name.type) {
+ case "Promise":
+ if (probe("[")) error("Promise type cannot have extended attribute");
+ ret.idlType = return_type(typeName);
+ break;
+ case "sequence":
+ case "FrozenArray":
+ ret.idlType = type_with_extended_attributes(typeName);
+ break;
+ case "record":
+ if (probe("[")) error("Record key cannot have extended attribute");
+ ret.idlType = [];
+ const keyType = consume(...stringTypes);
+ if (!keyType) error(`Record key must be a string type`);
+ ret.idlType.push(Object.assign({ type: typeName }, EMPTY_IDLTYPE, { idlType: keyType.value }));
+ consume(",") || error("Missing comma after record key type");
+ const valueType = type_with_extended_attributes(typeName) || error("Error parsing generic type record");
+ ret.idlType.push(valueType);
+ break;
+ }
+ if (!ret.idlType) error(`Error parsing generic type ${name.type}`);
+ consume(">") || error(`Missing closing bracket after ${name.type}`);
+ if (name.type === "Promise" && probe("?")) {
+ error("Promise type cannot be nullable");
+ }
+ type_suffix(ret);
+ return ret;
}
function single_type(typeName) {
+ const ret = Object.assign({ type: typeName || null }, EMPTY_IDLTYPE);
+ const generic = generic_type(typeName);
+ if (generic) {
+ return Object.assign(ret, generic);
+ }
const prim = primitive_type();
- const ret = { type: typeName || null, sequence: false, generic: null, nullable: false, union: false };
let name;
- let value;
if (prim) {
ret.idlType = prim;
- } else if (name = consume(ID)) {
- value = name.value;
- all_ws();
- // Generic types
- if (consume(OTHER, "<")) {
- // backwards compat
- if (value === "sequence") {
- ret.sequence = true;
- }
- ret.generic = value;
- const types = [];
- do {
- all_ws();
- types.push(type_with_extended_attributes(typeName) || error("Error parsing generic type " + value));
- all_ws();
- }
- while (consume(OTHER, ","));
- if (value === "sequence") {
- if (types.length !== 1) error("A sequence must have exactly one subtype");
- } else if (value === "record") {
- if (types.length !== 2) error("A record must have exactly two subtypes");
- if (!/^(DOMString|USVString|ByteString)$/.test(types[0].idlType)) {
- error("Record key must be DOMString, USVString, or ByteString");
- }
- if (types[0].extAttrs) error("Record key cannot have extended attribute");
- } else if (value === "Promise") {
- if (types[0].extAttrs) error("Promise type cannot have extended attribute");
- }
- ret.idlType = types.length === 1 ? types[0] : types;
- all_ws();
- if (!consume(OTHER, ">")) error("Unterminated generic type " + value);
- type_suffix(ret);
- return ret;
- } else {
- ret.idlType = value;
- }
+ } else if (name = consume(ID, ...stringTypes)) {
+ ret.idlType = name.value;
+ if (probe("<")) error(`Unsupported generic type ${name.value}`);
} else {
return;
}
@@ -321,18 +369,16 @@
}
function union_type(typeName) {
- all_ws();
- if (!consume(OTHER, "(")) return;
- const ret = { type: typeName || null, sequence: false, generic: null, nullable: false, union: true, idlType: [] };
- const fst = type_with_extended_attributes() || error("Union type with no content");
- ret.idlType.push(fst);
- while (true) {
- all_ws();
- if (!consume(ID, "or")) break;
- const typ = type_with_extended_attributes() || error("No type after 'or' in union type");
+ if (!consume("(")) return;
+ const ret = Object.assign({ type: typeName || null }, EMPTY_IDLTYPE, { union: true, idlType: [] });
+ do {
+ const typ = type_with_extended_attributes() || error("No type after open parenthesis or 'or' in union type");
ret.idlType.push(typ);
+ } while (consume("or"));
+ if (ret.idlType.length < 2) {
+ error("At least two types are expected in a union type but found less");
}
- if (!consume(OTHER, ")")) error("Unterminated union type");
+ if (!consume(")")) error("Unterminated union type");
type_suffix(ret);
return ret;
}
@@ -348,236 +394,173 @@
return ret;
}
- function argument(store) {
- const ret = { optional: false, variadic: false };
- ret.extAttrs = extended_attrs(store);
- all_ws(store, "pea");
- const opt_token = consume(ID, "optional");
+ function argument() {
+ const start_position = consume_position;
+ const ret = { optional: false, variadic: false, default: null };
+ ret.extAttrs = extended_attrs();
+ const opt_token = consume("optional");
if (opt_token) {
ret.optional = true;
- all_ws();
}
ret.idlType = type_with_extended_attributes("argument-type");
if (!ret.idlType) {
- if (opt_token) tokens.unshift(opt_token);
+ unconsume(start_position);
return;
}
- const type_token = last_token;
- if (!ret.optional) {
- all_ws();
- if (tokens.length >= 3 &&
- tokens[0].type === "other" && tokens[0].value === "." &&
- tokens[1].type === "other" && tokens[1].value === "." &&
- tokens[2].type === "other" && tokens[2].value === "."
- ) {
- tokens.shift();
- tokens.shift();
- tokens.shift();
- ret.variadic = true;
- }
+ if (!ret.optional && consume("...")) {
+ ret.variadic = true;
}
- all_ws();
- const name = consume(ID);
+ const name = consume(ID, ...argumentNameKeywords);
if (!name) {
- if (opt_token) tokens.unshift(opt_token);
- tokens.unshift(type_token);
+ unconsume(start_position);
return;
}
- ret.name = name.value;
+ ret.name = unescape(name.value);
+ ret.escapedName = name.value;
if (ret.optional) {
- all_ws();
- const dflt = default_();
- if (typeof dflt !== "undefined") {
- ret["default"] = dflt;
- }
+ ret.default = default_() || null;
}
return ret;
}
- function argument_list(store) {
+ function argument_list() {
const ret = [];
- const arg = argument(store ? ret : null);
- if (!arg) return;
+ const arg = argument();
+ if (!arg) return ret;
ret.push(arg);
while (true) {
- all_ws(store ? ret : null);
- if (!consume(OTHER, ",")) return ret;
- const nxt = argument(store ? ret : null) || error("Trailing comma in arguments list");
+ if (!consume(",")) return ret;
+ const nxt = argument() || error("Trailing comma in arguments list");
ret.push(nxt);
}
}
- function simple_extended_attr(store) {
- all_ws();
+ function simple_extended_attr() {
const name = consume(ID);
if (!name) return;
const ret = {
name: name.value,
- "arguments": null,
+ arguments: null,
type: "extended-attribute",
rhs: null
};
- all_ws();
- const eq = consume(OTHER, "=");
+ const eq = consume("=");
if (eq) {
- all_ws();
- ret.rhs = consume(ID) ||
- consume(FLOAT) ||
- consume(INT) ||
- consume(STR);
- if (!ret.rhs && consume(OTHER, "(")) {
+ ret.rhs = consume(ID, FLOAT, INT, STR);
+ if (ret.rhs) {
+ // No trivia exposure yet
+ ret.rhs.trivia = undefined;
+ }
+ }
+ if (consume("(")) {
+ if (eq && !ret.rhs) {
// [Exposed=(Window,Worker)]
- const rhs_list = [];
- const id = consume(ID);
- if (id) {
- rhs_list.push(id.value);
- }
- identifiers(rhs_list);
- consume(OTHER, ")") || error("Unexpected token in extended attribute argument list or type pair");
ret.rhs = {
type: "identifier-list",
- value: rhs_list
+ value: identifiers()
};
}
- if (!ret.rhs) return error("No right hand side to extended attribute assignment");
- }
- all_ws();
- if (consume(OTHER, "(")) {
- let args, pair;
- // [Constructor(DOMString str)]
- if (args = argument_list(store)) {
- ret["arguments"] = args;
- }
- // [Constructor()]
else {
- ret["arguments"] = [];
+ // [NamedConstructor=Audio(DOMString src)] or [Constructor(DOMString str)]
+ ret.arguments = argument_list();
}
- all_ws();
- consume(OTHER, ")") || error("Unexpected token in extended attribute argument list");
+ consume(")") || error("Unexpected token in extended attribute argument list");
}
+ if (eq && !ret.rhs) error("No right hand side to extended attribute assignment");
return ret;
}
// Note: we parse something simpler than the official syntax. It's all that ever
// seems to be used
- function extended_attrs(store) {
+ function extended_attrs() {
const eas = [];
- all_ws(store);
- if (!consume(OTHER, "[")) return eas;
- eas[0] = simple_extended_attr(store) || error("Extended attribute with not content");
- all_ws();
- while (consume(OTHER, ",")) {
- if (eas.length) {
- eas.push(simple_extended_attr(store));
- } else {
- eas.push(simple_extended_attr(store) || error("Trailing comma in extended attribute"));
- }
+ if (!consume("[")) return eas;
+ eas[0] = simple_extended_attr() || error("Extended attribute with not content");
+ while (consume(",")) {
+ eas.push(simple_extended_attr() || error("Trailing comma in extended attribute"));
}
- all_ws();
- consume(OTHER, "]") || error("No end of extended attribute");
+ consume("]") || error("No end of extended attribute");
return eas;
}
function default_() {
- all_ws();
- if (consume(OTHER, "=")) {
- all_ws();
+ if (consume("=")) {
const def = const_value();
if (def) {
return def;
- } else if (consume(OTHER, "[")) {
- if (!consume(OTHER, "]")) error("Default sequence value must be empty");
+ } else if (consume("[")) {
+ if (!consume("]")) error("Default sequence value must be empty");
return { type: "sequence", value: [] };
} else {
const str = consume(STR) || error("No value for default");
str.value = str.value.slice(1, -1);
+ // No trivia exposure yet
+ str.trivia = undefined;
return str;
}
}
}
- function const_(store) {
- all_ws(store, "pea");
- if (!consume(ID, "const")) return;
+ function const_() {
+ if (!consume("const")) return;
const ret = { type: "const", nullable: false };
- all_ws();
let typ = primitive_type();
if (!typ) {
typ = consume(ID) || error("No type for const");
typ = typ.value;
}
- ret.idlType = { type: "const-type", idlType: typ };
- all_ws();
- if (consume(OTHER, "?")) {
- ret.nullable = true;
- all_ws();
- }
+ ret.idlType = Object.assign({ type: "const-type" }, EMPTY_IDLTYPE, { idlType: typ });
+ type_suffix(ret);
const name = consume(ID) || error("No name for const");
ret.name = name.value;
- all_ws();
- consume(OTHER, "=") || error("No value assignment for const");
- all_ws();
+ consume("=") || error("No value assignment for const");
const cnt = const_value();
if (cnt) ret.value = cnt;
else error("No value for const");
- all_ws();
- consume(OTHER, ";") || error("Unterminated const");
+ consume(";") || error("Unterminated const");
return ret;
}
function inheritance() {
- all_ws();
- if (consume(OTHER, ":")) {
- all_ws();
+ if (consume(":")) {
const inh = consume(ID) || error("No type in inheritance");
return inh.value;
}
}
- function operation_rest(ret, store) {
- all_ws();
+ function operation_rest(ret) {
if (!ret) ret = {};
const name = consume(ID);
- ret.name = name ? name.value : null;
- all_ws();
- consume(OTHER, "(") || error("Invalid operation");
- ret["arguments"] = argument_list(store) || [];
- all_ws();
- consume(OTHER, ")") || error("Unterminated operation");
- all_ws();
- consume(OTHER, ";") || error("Unterminated operation");
+ ret.name = name ? unescape(name.value) : null;
+ ret.escapedName = name ? name.value : null;
+ consume("(") || error("Invalid operation");
+ ret.arguments = argument_list();
+ consume(")") || error("Unterminated operation");
+ consume(";") || error("Unterminated operation");
return ret;
}
- function callback(store) {
- all_ws(store, "pea");
+ function callback() {
let ret;
- if (!consume(ID, "callback")) return;
- all_ws();
- const tok = consume(ID, "interface");
+ if (!consume("callback")) return;
+ const tok = consume("interface");
if (tok) {
- ret = interface_rest(false, store, "callback interface");
+ ret = interface_rest(false, "callback interface");
return ret;
}
const name = consume(ID) || error("No name for callback");
ret = current = { type: "callback", name: sanitize_name(name.value, "callback") };
- all_ws();
- consume(OTHER, "=") || error("No assignment in callback");
- all_ws();
- ret.idlType = return_type();
- all_ws();
- consume(OTHER, "(") || error("No arguments in callback");
- ret["arguments"] = argument_list(store) || [];
- all_ws();
- consume(OTHER, ")") || error("Unterminated callback");
- all_ws();
- consume(OTHER, ";") || error("Unterminated callback");
+ consume("=") || error("No assignment in callback");
+ ret.idlType = return_type() || error("Missing return type");
+ consume("(") || error("No arguments in callback");
+ ret.arguments = argument_list();
+ consume(")") || error("Unterminated callback");
+ consume(";") || error("Unterminated callback");
return ret;
}
- function attribute(store) {
- all_ws(store, "pea");
- const grabbed = [];
+ function attribute({ noInherit = false, readonly = false } = {}) {
+ const start_position = consume_position;
const ret = {
type: "attribute",
static: false,
@@ -585,137 +568,120 @@
inherit: false,
readonly: false
};
- const w = all_ws();
- if (w) grabbed.push(w);
- if (consume(ID, "inherit")) {
- if (ret.static || ret.stringifier) error("Cannot have a static or stringifier inherit");
+ if (!noInherit && consume("inherit")) {
ret.inherit = true;
- grabbed.push(last_token);
- const w = all_ws();
- if (w) grabbed.push(w);
}
- if (consume(ID, "readonly")) {
+ if (consume("readonly")) {
ret.readonly = true;
- grabbed.push(last_token);
- const w = all_ws();
- if (w) grabbed.push(w);
+ } else if (readonly && probe("attribute")) {
+ error("Attributes must be readonly in this context");
}
const rest = attribute_rest(ret);
if (!rest) {
- tokens = grabbed.concat(tokens);
+ unconsume(start_position);
}
return rest;
}
function attribute_rest(ret) {
- if (!consume(ID, "attribute")) {
+ if (!consume("attribute")) {
return;
}
- all_ws();
ret.idlType = type_with_extended_attributes("attribute-type") || error("No type in attribute");
- if (ret.idlType.sequence) error("Attributes cannot accept sequence types");
+ if (ret.idlType.generic === "sequence") error("Attributes cannot accept sequence types");
if (ret.idlType.generic === "record") error("Attributes cannot accept record types");
- all_ws();
- const name = consume(ID) || error("No name in attribute");
- ret.name = name.value;
- all_ws();
- consume(OTHER, ";") || error("Unterminated attribute");
+ const name = consume(ID, "required") || error("No name in attribute");
+ ret.name = unescape(name.value);
+ ret.escapedName = name.value;
+ consume(";") || error("Unterminated attribute");
return ret;
}
- function return_type() {
- const typ = type("return-type");
- if (!typ) {
- if (consume(ID, "void")) {
- return "void";
- } else error("No return type");
+ function return_type(typeName) {
+ const typ = type(typeName || "return-type");
+ if (typ) {
+ return typ;
}
- return typ;
+ if (consume("void")) {
+ return Object.assign({ type: "return-type" }, EMPTY_IDLTYPE, { idlType: "void" });
+ }
}
- function operation(store) {
- all_ws(store, "pea");
+ function operation({ regular = false } = {}) {
const ret = Object.assign({}, EMPTY_OPERATION);
- while (true) {
- all_ws();
- if (consume(ID, "getter")) ret.getter = true;
- else if (consume(ID, "setter")) ret.setter = true;
- else if (consume(ID, "deleter")) ret.deleter = true;
+ while (!regular) {
+ if (consume("getter")) ret.getter = true;
+ else if (consume("setter")) ret.setter = true;
+ else if (consume("deleter")) ret.deleter = true;
else break;
}
- if (ret.getter || ret.setter || ret.deleter) {
- all_ws();
- ret.idlType = return_type();
- operation_rest(ret, store);
- return ret;
- }
- ret.idlType = return_type();
- all_ws();
- operation_rest(ret, store);
+ ret.idlType = return_type() || error("Missing return type");
+ operation_rest(ret);
return ret;
}
- function static_member(store) {
- all_ws(store, "pea");
- if (!consume(ID, "static")) return;
- all_ws();
- return noninherited_attribute(store, "static") ||
- regular_operation(store, "static") ||
+ function static_member() {
+ if (!consume("static")) return;
+ const member = attribute({ noInherit: true }) ||
+ operation({ regular: true }) ||
error("No body in static member");
+ member.static = true;
+ return member;
}
- function stringifier(store) {
- all_ws(store, "pea");
- if (!consume(ID, "stringifier")) return;
- all_ws();
- if (consume(OTHER, ";")) {
+ function stringifier() {
+ if (!consume("stringifier")) return;
+ if (consume(";")) {
return Object.assign({}, EMPTY_OPERATION, { stringifier: true });
}
- return noninherited_attribute(store, "stringifier") ||
- regular_operation(store, "stringifier") ||
+ const member = attribute({ noInherit: true }) ||
+ operation({ regular: true }) ||
error("Unterminated stringifier");
+ member.stringifier = true;
+ return member;
}
- function identifiers(arr) {
+ function identifiers() {
+ const arr = [];
+ const id = consume(ID);
+ if (id) {
+ arr.push(id.value);
+ }
+ else error("Expected identifiers but not found");
while (true) {
- all_ws();
- if (consume(OTHER, ",")) {
- all_ws();
+ if (consume(",")) {
const name = consume(ID) || error("Trailing comma in identifiers list");
arr.push(name.value);
} else break;
}
+ return arr;
}
function iterable_type() {
- if (consume(ID, "iterable")) return "iterable";
- else if (consume(ID, "legacyiterable")) return "legacyiterable";
- else if (consume(ID, "maplike")) return "maplike";
- else if (consume(ID, "setlike")) return "setlike";
+ if (consume("iterable")) return "iterable";
+ else if (consume("legacyiterable")) return "legacyiterable";
+ else if (consume("maplike")) return "maplike";
+ else if (consume("setlike")) return "setlike";
else return;
}
function readonly_iterable_type() {
- if (consume(ID, "maplike")) return "maplike";
- else if (consume(ID, "setlike")) return "setlike";
+ if (consume("maplike")) return "maplike";
+ else if (consume("setlike")) return "setlike";
else return;
}
- function iterable(store) {
- all_ws(store, "pea");
- const grabbed = [];
+ function iterable() {
+ const start_position = consume_position;
const ret = { type: null, idlType: null, readonly: false };
- if (consume(ID, "readonly")) {
+ if (consume("readonly")) {
ret.readonly = true;
- grabbed.push(last_token);
- var w = all_ws();
- if (w) grabbed.push(w);
}
const consumeItType = ret.readonly ? readonly_iterable_type : iterable_type;
const ittype = consumeItType();
if (!ittype) {
- tokens = grabbed.concat(tokens);
+ unconsume(start_position);
return;
}
@@ -724,30 +690,24 @@
ret.type = ittype;
if (ret.type !== 'maplike' && ret.type !== 'setlike')
delete ret.readonly;
- all_ws();
- if (consume(OTHER, "<")) {
+ if (consume("<")) {
ret.idlType = [type_with_extended_attributes()] || error(`Error parsing ${ittype} declaration`);
- all_ws();
if (secondTypeAllowed) {
- if (consume(OTHER, ",")) {
- all_ws();
+ if (consume(",")) {
ret.idlType.push(type_with_extended_attributes());
- all_ws();
}
else if (secondTypeRequired)
error(`Missing second type argument in ${ittype} declaration`);
}
- if (!consume(OTHER, ">")) error(`Unterminated ${ittype} declaration`);
- all_ws();
- if (!consume(OTHER, ";")) error(`Missing semicolon after ${ittype} declaration`);
+ if (!consume(">")) error(`Unterminated ${ittype} declaration`);
+ if (!consume(";")) error(`Missing semicolon after ${ittype} declaration`);
} else
error(`Error parsing ${ittype} declaration`);
return ret;
}
- function interface_rest(isPartial, store, typeName = "interface") {
- all_ws();
+ function interface_rest(isPartial, typeName = "interface") {
const name = consume(ID) || error("No name for interface");
const mems = [];
const ret = current = {
@@ -757,39 +717,27 @@
members: mems
};
if (!isPartial) ret.inheritance = inheritance() || null;
- all_ws();
- consume(OTHER, "{") || error("Bodyless interface");
+ consume("{") || error("Bodyless interface");
while (true) {
- all_ws(store ? mems : null);
- if (consume(OTHER, "}")) {
- all_ws();
- consume(OTHER, ";") || error("Missing semicolon after interface");
+ if (consume("}")) {
+ consume(";") || error("Missing semicolon after interface");
return ret;
}
- const ea = extended_attrs(store ? mems : null);
- all_ws();
- const cnt = const_(store ? mems : null);
- if (cnt) {
- cnt.extAttrs = ea;
- ret.members.push(cnt);
- continue;
- }
- const mem = (opt.allowNestedTypedefs && typedef(store ? mems : null)) ||
- static_member(store ? mems : null) ||
- stringifier(store ? mems : null) ||
- iterable(store ? mems : null) ||
- attribute(store ? mems : null) ||
- operation(store ? mems : null) ||
+ const ea = extended_attrs();
+ const mem = const_() ||
+ static_member() ||
+ stringifier() ||
+ iterable() ||
+ attribute() ||
+ operation() ||
error("Unknown member");
mem.extAttrs = ea;
ret.members.push(mem);
}
}
- function mixin_rest(isPartial, store) {
- all_ws();
- if (!consume(ID, "mixin")) return;
- all_ws();
+ function mixin_rest(isPartial) {
+ if (!consume("mixin")) return;
const name = consume(ID) || error("No name for interface mixin");
const mems = [];
const ret = current = {
@@ -798,44 +746,32 @@
partial: isPartial,
members: mems
};
- all_ws();
- consume(OTHER, "{") || error("Bodyless interface mixin");
+ consume("{") || error("Bodyless interface mixin");
while (true) {
- all_ws(store ? mems : null);
- if (consume(OTHER, "}")) {
- all_ws();
- consume(OTHER, ";") || error("Missing semicolon after interface mixin");
+ if (consume("}")) {
+ consume(";") || error("Missing semicolon after interface mixin");
return ret;
}
- const ea = extended_attrs(store ? mems : null);
- all_ws();
- const cnt = const_(store ? mems : null);
- if (cnt) {
- cnt.extAttrs = ea;
- ret.members.push(cnt);
- continue;
- }
- const mem = stringifier(store ? mems : null) ||
- noninherited_attribute(store ? mems : null) ||
- regular_operation(store ? mems : null) ||
+ const ea = extended_attrs();
+ const mem = const_() ||
+ stringifier() ||
+ attribute({ noInherit: true }) ||
+ operation({ regular: true }) ||
error("Unknown member");
mem.extAttrs = ea;
ret.members.push(mem);
}
}
- function interface_(isPartial, store) {
- all_ws(isPartial ? null : store, "pea");
- if (!consume(ID, "interface")) return;
- return mixin_rest(isPartial, store) ||
- interface_rest(isPartial, store) ||
+ function interface_(isPartial) {
+ if (!consume("interface")) return;
+ return mixin_rest(isPartial) ||
+ interface_rest(isPartial) ||
error("Interface has no proper body");
}
- function namespace(isPartial, store) {
- all_ws(isPartial ? null : store, "pea");
- if (!consume(ID, "namespace")) return;
- all_ws();
+ function namespace(isPartial) {
+ if (!consume("namespace")) return;
const name = consume(ID) || error("No name for namespace");
const mems = [];
const ret = current = {
@@ -844,76 +780,32 @@
partial: isPartial,
members: mems
};
- all_ws();
- consume(OTHER, "{") || error("Bodyless namespace");
+ consume("{") || error("Bodyless namespace");
while (true) {
- all_ws(store ? mems : null);
- if (consume(OTHER, "}")) {
- all_ws();
- consume(OTHER, ";") || error("Missing semicolon after namespace");
+ if (consume("}")) {
+ consume(";") || error("Missing semicolon after namespace");
return ret;
}
- const ea = extended_attrs(store ? mems : null);
- all_ws();
- const mem = noninherited_attribute(store ? mems : null) ||
- regular_operation(store ? mems : null) ||
+ const ea = extended_attrs();
+ const mem = attribute({ noInherit: true, readonly: true }) ||
+ operation({ regular: true }) ||
error("Unknown member");
mem.extAttrs = ea;
ret.members.push(mem);
}
}
- function noninherited_attribute(store, prefix) {
- const w = all_ws(store, "pea");
- const grabbed = [];
- const ret = {
- type: "attribute",
- static: false,
- stringifier: false,
- inherit: false,
- readonly: false
- };
- if (prefix) {
- ret[prefix] = true;
- }
- if (w) grabbed.push(w);
- if (consume(ID, "readonly")) {
- ret.readonly = true;
- grabbed.push(last_token);
- const w = all_ws();
- if (w) grabbed.push(w);
- }
- const rest = attribute_rest(ret);
- if (!rest) {
- tokens = grabbed.concat(tokens);
- }
- return rest;
- }
-
- function regular_operation(store, prefix) {
- all_ws(store, "pea");
- const ret = Object.assign({}, EMPTY_OPERATION);
- if (prefix) {
- ret[prefix] = true;
- }
- ret.idlType = return_type();
- return operation_rest(ret, store);
- }
-
- function partial(store) {
- all_ws(store, "pea");
- if (!consume(ID, "partial")) return;
- const thing = dictionary(true, store) ||
- interface_(true, store) ||
- namespace(true, store) ||
+ function partial() {
+ if (!consume("partial")) return;
+ const thing = dictionary(true) ||
+ interface_(true) ||
+ namespace(true) ||
error("Partial doesn't apply to anything");
return thing;
}
- function dictionary(isPartial, store) {
- all_ws(isPartial ? null : store, "pea");
- if (!consume(ID, "dictionary")) return;
- all_ws();
+ function dictionary(isPartial) {
+ if (!consume("dictionary")) return;
const name = consume(ID) || error("No name for dictionary");
const mems = [];
const ret = current = {
@@ -923,43 +815,34 @@
members: mems
};
if (!isPartial) ret.inheritance = inheritance() || null;
- all_ws();
- consume(OTHER, "{") || error("Bodyless dictionary");
+ consume("{") || error("Bodyless dictionary");
while (true) {
- all_ws(store ? mems : null);
- if (consume(OTHER, "}")) {
- all_ws();
- consume(OTHER, ";") || error("Missing semicolon after dictionary");
+ if (consume("}")) {
+ consume(";") || error("Missing semicolon after dictionary");
return ret;
}
- const ea = extended_attrs(store ? mems : null);
- all_ws(store ? mems : null, "pea");
- const required = consume(ID, "required");
+ const ea = extended_attrs();
+ const required = consume("required");
const typ = type_with_extended_attributes("dictionary-type") || error("No type for dictionary member");
- all_ws();
const name = consume(ID) || error("No name for dictionary member");
- const dflt = default_();
+ const dflt = default_() || null;
if (required && dflt) error("Required member must not have a default");
const member = {
type: "field",
- name: name.value,
+ name: unescape(name.value),
+ escapedName: name.value,
required: !!required,
idlType: typ,
- extAttrs: ea
+ extAttrs: ea,
+ default: dflt
};
- if (typeof dflt !== "undefined") {
- member["default"] = dflt;
- }
ret.members.push(member);
- all_ws();
- consume(OTHER, ";") || error("Unterminated dictionary member");
+ consume(";") || error("Unterminated dictionary member");
}
}
- function enum_(store) {
- all_ws(store, "pea");
- if (!consume(ID, "enum")) return;
- all_ws();
+ function enum_() {
+ if (!consume("enum")) return;
const name = consume(ID) || error("No name for enum");
const vals = [];
const ret = current = {
@@ -967,111 +850,95 @@
name: sanitize_name(name.value, "enum"),
values: vals
};
- all_ws();
- consume(OTHER, "{") || error("No curly for enum");
- let saw_comma = false;
+ consume("{") || error("No curly for enum");
+ let value_expected = true;
while (true) {
- all_ws(store ? vals : null);
- if (consume(OTHER, "}")) {
- all_ws();
- consume(OTHER, ";") || error("No semicolon after enum");
+ if (consume("}")) {
+ if (!ret.values.length) error("No value in enum");
+ consume(";") || error("No semicolon after enum");
return ret;
}
+ else if (!value_expected) {
+ error("No comma between enum values");
+ }
const val = consume(STR) || error("Unexpected value in enum");
val.value = val.value.slice(1, -1);
+ // No trivia exposure yet
+ val.trivia = undefined;
ret.values.push(val);
- all_ws(store ? vals : null);
- if (consume(OTHER, ",")) {
- if (store) vals.push({ type: "," });
- all_ws(store ? vals : null);
- saw_comma = true;
- } else {
- saw_comma = false;
- }
+ value_expected = !!consume(",");
}
}
- function typedef(store) {
- all_ws(store, "pea");
- if (!consume(ID, "typedef")) return;
+ function typedef() {
+ if (!consume("typedef")) return;
const ret = {
type: "typedef"
};
- all_ws();
ret.idlType = type_with_extended_attributes("typedef-type") || error("No type in typedef");
- all_ws();
const name = consume(ID) || error("No name in typedef");
ret.name = sanitize_name(name.value, "typedef");
current = ret;
- all_ws();
- consume(OTHER, ";") || error("Unterminated typedef");
+ consume(";") || error("Unterminated typedef");
return ret;
}
- function implements_(store) {
- all_ws(store, "pea");
+ function implements_() {
+ const start_position = consume_position;
const target = consume(ID);
if (!target) return;
- const w = all_ws();
- if (consume(ID, "implements")) {
+ if (consume("implements")) {
const ret = {
type: "implements",
target: target.value
};
- all_ws();
const imp = consume(ID) || error("Incomplete implements statement");
- ret["implements"] = imp.value;
- all_ws();
- consume(OTHER, ";") || error("No terminating ; for implements statement");
+ ret.implements = imp.value;
+ consume(";") || error("No terminating ; for implements statement");
return ret;
} else {
// rollback
- tokens.unshift(w);
- tokens.unshift(target);
+ unconsume(start_position);
}
}
- function includes(store) {
- all_ws(store, "pea");
+ function includes() {
+ const start_position = consume_position;
const target = consume(ID);
if (!target) return;
- const w = all_ws();
- if (consume(ID, "includes")) {
+ if (consume("includes")) {
const ret = {
type: "includes",
target: target.value
};
- all_ws();
const imp = consume(ID) || error("Incomplete includes statement");
- ret["includes"] = imp.value;
- all_ws();
- consume(OTHER, ";") || error("No terminating ; for includes statement");
+ ret.includes = imp.value;
+ consume(";") || error("No terminating ; for includes statement");
return ret;
} else {
// rollback
- tokens.unshift(w);
- tokens.unshift(target);
+ unconsume(start_position);
}
}
- function definition(store) {
- return callback(store) ||
- interface_(false, store) ||
- partial(store) ||
- dictionary(false, store) ||
- enum_(store) ||
- typedef(store) ||
- implements_(store) ||
- includes(store) ||
- namespace(false, store);
+ function definition() {
+ return callback() ||
+ interface_(false) ||
+ partial() ||
+ dictionary(false) ||
+ enum_() ||
+ typedef() ||
+ implements_() ||
+ includes() ||
+ namespace(false);
}
- function definitions(store) {
+ function definitions() {
if (!tokens.length) return [];
const defs = [];
while (true) {
- const ea = extended_attrs(store ? defs : null);
- const def = definition(store ? defs : null);
+ const ea = extended_attrs();
+ const def = definition();
if (!def) {
if (ea.length) error("Stray extended attributes");
break;
@@ -1081,16 +948,15 @@
}
return defs;
}
- const res = definitions(opt.ws);
- if (tokens.length) error("Unrecognised tokens");
+ const res = definitions();
+ if (consume_position < tokens.length) error("Unrecognised tokens");
return res;
}
const obj = {
- parse(str, opt) {
- if (!opt) opt = {};
+ parse(str) {
const tokens = tokenise(str);
- return parse(tokens, opt);
+ return parse(tokens);
}
};
diff --git a/resources/webidl2/lib/writer.js b/resources/webidl2/lib/writer.js
index c00c0dd..b3097a6 100644
--- a/resources/webidl2/lib/writer.js
+++ b/resources/webidl2/lib/writer.js
@@ -2,8 +2,6 @@
(() => {
function write(ast, opt = {}) {
- let curPea = "";
- let curTPea = "";
const noop = str => str;
const optNames = "type".split(" ");
const context = [];
@@ -14,23 +12,9 @@
function literal(it) {
return it.value;
};
- function wsPea(it) {
- curPea += it.value;
- return "";
- };
- function wsTPea(it) {
- curTPea += it.value;
- return "";
- };
- function lineComment(it) {
- return `//${it.value}\n`;
- };
- function multilineComment(it) {
- return `/*${it.value}*/`;
- };
function type(it) {
if (typeof it === "string") return opt.type(it); // XXX should maintain some context
- let ret = extended_attributes(it.extAttrs, curPea);
+ let ret = extended_attributes(it.extAttrs);
if (it.union) ret += `(${it.idlType.map(type).join(" or ")})`;
else {
if (it.generic) ret += `${it.generic}<`;
@@ -52,74 +36,56 @@
else if (tp === "sequence") return "[]";
else return `"${it.value}"`;
};
- function argument(arg, pea) {
- let ret = extended_attributes(arg.extAttrs, pea);
+ function argument(arg) {
+ let ret = extended_attributes(arg.extAttrs);
if (arg.optional) ret += "optional ";
ret += type(arg.idlType);
if (arg.variadic) ret += "...";
- ret += ` ${arg.name}`;
- if (arg["default"]) ret += ` = ${const_value(arg["default"])}`;
+ ret += ` ${arg.escapedName}`;
+ if (arg.default) ret += ` = ${const_value(arg.default)}`;
return ret;
};
- function args(its) {
- let res = "";
- let pea = "";
- for (let i = 0, n = its.length; i < n; i++) {
- const arg = its[i];
- if (arg.type === "ws") res += arg.value;
- else if (arg.type === "ws-pea") pea += arg.value;
- else {
- res += argument(arg, pea);
- if (i < n - 1) res += ",";
- pea = "";
- }
- }
- return res;
- };
function make_ext_at(it) {
context.unshift(it);
let ret = it.name;
if (it.rhs) {
- if (it.rhs.type === "identifier-list") ret += `=(${it.rhs.value.join(',')})`;
+ if (it.rhs.type === "identifier-list") ret += `=(${it.rhs.value.join(",")})`;
else ret += `=${it.rhs.value}`;
}
- if (it.arguments) ret += `(${it["arguments"].length ? args(it["arguments"]) : ""})`;
+ if (it.arguments) ret += `(${it.arguments.length ? it.arguments.map(argument).join(",") : ""})`;
context.shift(); // XXX need to add more contexts, but not more than needed for ReSpec
return ret;
};
- function extended_attributes(eats, pea) {
+ function extended_attributes(eats) {
if (!eats || !eats.length) return "";
- return `[${eats.map(make_ext_at).join(", ")}]${pea}`;
+ return `[${eats.map(make_ext_at).join(", ")}]`;
};
- const modifiers = "getter setter creator deleter legacycaller stringifier static".split(" ");
+ const modifiers = "getter setter deleter stringifier static".split(" ");
function operation(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.stringifier && !it.idlType) return "stringifier;";
for (const mod of modifiers) {
if (it[mod]) ret += mod + " ";
}
ret += type(it.idlType) + " ";
- if (it.name) ret += it.name;
- ret += `(${args(it["arguments"])});`;
+ if (it.name) ret += it.escapedName;
+ ret += `(${it.arguments.map(argument).join(",")});`;
return ret;
};
function attribute(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
- if (it["static"]) ret += "static ";
+ let ret = extended_attributes(it.extAttrs);
+ if (it.static) ret += "static ";
if (it.stringifier) ret += "stringifier ";
- if (it.readonly) ret += "readonly ";
if (it.inherit) ret += "inherit ";
- ret += `attribute ${type(it.idlType)} ${it.name};`;
+ if (it.readonly) ret += "readonly ";
+ ret += `attribute ${type(it.idlType)} ${it.escapedName};`;
return ret;
};
function interface_(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.partial) ret += "partial ";
ret += `interface ${it.name} `;
if (it.inheritance) ret += `: ${it.inheritance} `;
@@ -128,8 +94,7 @@
};
function interface_mixin(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.partial) ret += "partial ";
ret += `interface mixin ${it.name} `;
ret += `{${iterate(it.members)}};`;
@@ -137,8 +102,7 @@
}
function namespace(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.partial) ret += "partial ";
ret += `namespace ${it.name} `;
ret += `{${iterate(it.members)}};`;
@@ -146,8 +110,7 @@
}
function dictionary(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.partial) ret += "partial ";
ret += `dictionary ${it.name} `;
if (it.inheritance) ret += `: ${it.inheritance} `;
@@ -155,49 +118,39 @@
return ret;
};
function field(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
if (it.required) ret += "required ";
- ret += `${type(it.idlType)} ${it.name}`;
- if (it["default"]) ret += ` = ${const_value(it["default"])}`;
+ ret += `${type(it.idlType)} ${it.escapedName}`;
+ if (it.default) ret += ` = ${const_value(it.default)}`;
ret += ";";
return ret;
};
function const_(it) {
- const ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ const ret = extended_attributes(it.extAttrs);
return `${ret}const ${type(it.idlType)}${it.nullable ? "?" : ""} ${it.name} = ${const_value(it.value)};`;
};
function typedef(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
- ret += `typedef ${extended_attributes(it.typeExtAttrs, curTPea)}`;
- curTPea = "";
+ let ret = extended_attributes(it.extAttrs);
+ ret += `typedef ${extended_attributes(it.typeExtAttrs)}`;
return `${ret}${type(it.idlType)} ${it.name};`;
};
function implements_(it) {
- const ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
- return `${ret}${it.target} implements ${it["implements"]};`;
+ const ret = extended_attributes(it.extAttrs);
+ return `${ret}${it.target} implements ${it.implements};`;
};
function includes(it) {
- const ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ const ret = extended_attributes(it.extAttrs);
return `${ret}${it.target} includes ${it.includes};`;
};
function callback(it) {
- const ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
- return `${ret}callback ${it.name} = ${type(it.idlType)}(${args(it["arguments"])});`;
+ const ret = extended_attributes(it.extAttrs);
+ return `${ret}callback ${it.name} = ${type(it.idlType)}(${it.arguments.map(argument).join(",")});`;
};
function enum_(it) {
- let ret = extended_attributes(it.extAttrs, curPea);
- curPea = "";
+ let ret = extended_attributes(it.extAttrs);
ret += `enum ${it.name} {`;
for (const v of it.values) {
- if (v.type === "string") ret += `"${v.value}"`;
- else if (v.type === "ws") ret += v.value;
- else if (v.type === ",") ret += ",";
+ ret += `"${v.value}",`;
}
return ret + "};";
};
@@ -218,11 +171,6 @@
};
const table = {
- ws: literal,
- "ws-pea": wsPea,
- "ws-tpea": wsTPea,
- "line-comment": lineComment,
- "multiline-comment": multilineComment,
interface: interface_,
"interface mixin": interface_mixin,
namespace,
diff --git a/resources/webidl2/package-lock.json b/resources/webidl2/package-lock.json
index a6f529d..b058103 100644
--- a/resources/webidl2/package-lock.json
+++ b/resources/webidl2/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "webidl2",
- "version": "10.2.1",
+ "version": "13.0.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -19,9 +19,9 @@
"integrity": "sha512-mOhhTrzieV6VO7odgzFGFapiwRK0ei8RZRhfzHhb6cpX3QM8XXuCLXWjN8qBB7JReDdUR80V3LFfFrGUYevhNg==",
"dev": true,
"requires": {
- "chalk": "2.3.2",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.0"
}
},
"ansi-regex": {
@@ -36,7 +36,7 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
- "color-convert": "1.9.1"
+ "color-convert": "^1.9.0"
}
},
"arr-diff": {
@@ -45,7 +45,7 @@
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
- "arr-flatten": "1.1.0"
+ "arr-flatten": "^1.0.1"
}
},
"arr-flatten": {
@@ -72,7 +72,7 @@
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
@@ -82,9 +82,9 @@
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
}
},
"browser-stdout": {
@@ -99,9 +99,9 @@
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
"dev": true,
"requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.3.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
}
},
"color-convert": {
@@ -110,7 +110,7 @@
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"dev": true,
"requires": {
- "color-name": "1.1.3"
+ "color-name": "^1.1.1"
}
},
"color-name": {
@@ -170,7 +170,7 @@
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
- "is-posix-bracket": "0.1.1"
+ "is-posix-bracket": "^0.1.0"
}
},
"expand-range": {
@@ -179,7 +179,7 @@
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
- "fill-range": "2.2.3"
+ "fill-range": "^2.1.0"
}
},
"expect": {
@@ -188,12 +188,12 @@
"integrity": "sha512-Fiy862jT3qc70hwIHwwCBNISmaqBrfWKKrtqyMJ6iwZr+6KXtcnHojZFtd63TPRvRl8EQTJ+YXYy2lK6/6u+Hw==",
"dev": true,
"requires": {
- "ansi-styles": "3.2.1",
- "jest-diff": "22.4.0",
- "jest-get-type": "22.1.0",
- "jest-matcher-utils": "22.4.0",
- "jest-message-util": "22.4.0",
- "jest-regex-util": "22.1.0"
+ "ansi-styles": "^3.2.0",
+ "jest-diff": "^22.4.0",
+ "jest-get-type": "^22.1.0",
+ "jest-matcher-utils": "^22.4.0",
+ "jest-message-util": "^22.4.0",
+ "jest-regex-util": "^22.1.0"
}
},
"extglob": {
@@ -202,7 +202,7 @@
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"filename-regex": {
@@ -212,16 +212,16 @@
"dev": true
},
"fill-range": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz",
- "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
"dev": true,
"requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "1.1.7",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
}
},
"for-in": {
@@ -236,7 +236,7 @@
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
- "for-in": "1.0.2"
+ "for-in": "^1.0.1"
}
},
"fs.realpath": {
@@ -251,12 +251,12 @@
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"glob-base": {
@@ -265,8 +265,8 @@
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
}
},
"glob-parent": {
@@ -275,7 +275,7 @@
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
- "is-glob": "2.0.1"
+ "is-glob": "^2.0.0"
}
},
"growl": {
@@ -302,8 +302,8 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -330,7 +330,7 @@
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
- "is-primitive": "2.0.0"
+ "is-primitive": "^2.0.0"
}
},
"is-extendable": {
@@ -351,7 +351,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"is-number": {
@@ -360,7 +360,7 @@
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
- "kind-of": "3.2.2"
+ "kind-of": "^3.0.2"
}
},
"is-posix-bracket": {
@@ -396,10 +396,10 @@
"integrity": "sha512-+/t20WmnkOkB8MOaGaPziI8zWKxquMvYw4Ub+wOzi7AUhmpFXz43buWSxVoZo4J5RnCozpGbX3/FssjJ5KV9Nw==",
"dev": true,
"requires": {
- "chalk": "2.3.2",
- "diff": "3.5.0",
- "jest-get-type": "22.1.0",
- "pretty-format": "22.4.0"
+ "chalk": "^2.0.1",
+ "diff": "^3.2.0",
+ "jest-get-type": "^22.1.0",
+ "pretty-format": "^22.4.0"
}
},
"jest-get-type": {
@@ -414,9 +414,9 @@
"integrity": "sha512-03m3issxUXpWMwDYTfmL8hRNewUB0yCRTeXPm+eq058rZxLHD9f5NtSSO98CWHqe4UyISIxd9Ao9iDVjHWd2qg==",
"dev": true,
"requires": {
- "chalk": "2.3.2",
- "jest-get-type": "22.1.0",
- "pretty-format": "22.4.0"
+ "chalk": "^2.0.1",
+ "jest-get-type": "^22.1.0",
+ "pretty-format": "^22.4.0"
}
},
"jest-message-util": {
@@ -425,11 +425,11 @@
"integrity": "sha512-eyCJB0T3hrlpFF2FqQoIB093OulP+1qvATQmD3IOgJgMGqPL6eYw8TbC5P/VCWPqKhGL51xvjIIhow5eZ2wHFw==",
"dev": true,
"requires": {
- "@babel/code-frame": "7.0.0-beta.40",
- "chalk": "2.3.2",
- "micromatch": "2.3.11",
- "slash": "1.0.0",
- "stack-utils": "1.0.1"
+ "@babel/code-frame": "^7.0.0-beta.35",
+ "chalk": "^2.0.1",
+ "micromatch": "^2.3.11",
+ "slash": "^1.0.0",
+ "stack-utils": "^1.0.1"
}
},
"jest-regex-util": {
@@ -450,8 +450,8 @@
"integrity": "sha512-v7eaGLDMCHXH+fsIaZhptEUJmS8EJpunq7IM4cc4vIT/kSRAkaZ6ZF4ebiNcyUelL0znbvj6o2B5Gh9v7Og0BQ==",
"dev": true,
"requires": {
- "chalk": "2.3.2",
- "diff-match-patch": "1.0.0"
+ "chalk": "^2.3.0",
+ "diff-match-patch": "^1.0.0"
}
},
"kind-of": {
@@ -460,28 +460,34 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "is-buffer": "^1.1.5"
}
},
+ "math-random": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+ "dev": true
+ },
"micromatch": {
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
"requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.4"
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
}
},
"minimatch": {
@@ -490,7 +496,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -538,7 +544,7 @@
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
"dev": true,
"requires": {
- "has-flag": "2.0.0"
+ "has-flag": "^2.0.0"
}
}
}
@@ -555,7 +561,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "remove-trailing-separator": "1.1.0"
+ "remove-trailing-separator": "^1.0.1"
}
},
"object.omit": {
@@ -564,8 +570,8 @@
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"dev": true,
"requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
}
},
"once": {
@@ -574,7 +580,7 @@
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"parse-glob": {
@@ -583,10 +589,10 @@
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
}
},
"path-is-absolute": {
@@ -607,48 +613,32 @@
"integrity": "sha512-pvCxP2iODIIk9adXlo4S3GRj0BrJiil68kByAa1PrgG97c1tClh9dLMgp3Z6cHFZrclaABt0UH8PIhwHuFLqYA==",
"dev": true,
"requires": {
- "ansi-regex": "3.0.0",
- "ansi-styles": "3.2.1"
+ "ansi-regex": "^3.0.0",
+ "ansi-styles": "^3.2.0"
}
},
"randomatic": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
- "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
+ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
"dev": true,
"requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
+ "is-number": "^4.0.0",
+ "kind-of": "^6.0.0",
+ "math-random": "^1.0.1"
},
"dependencies": {
"is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
},
"kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
- "dev": true,
- "requires": {
- "is-buffer": "1.1.6"
- }
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
}
}
},
@@ -658,7 +648,7 @@
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
"dev": true,
"requires": {
- "is-equal-shallow": "0.1.3"
+ "is-equal-shallow": "^0.1.3"
}
},
"remove-trailing-separator": {
@@ -697,7 +687,7 @@
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
"dev": true,
"requires": {
- "has-flag": "3.0.0"
+ "has-flag": "^3.0.0"
}
},
"wrappy": {
diff --git a/resources/webidl2/package.json b/resources/webidl2/package.json
index ab282d1..92facca 100644
--- a/resources/webidl2/package.json
+++ b/resources/webidl2/package.json
@@ -1,7 +1,7 @@
{
"name": "webidl2",
"description": "A WebIDL Parser",
- "version": "10.2.1",
+ "version": "13.0.3",
"contributors": [
"Robin Berjon <robin@berjon.com> (https://berjon.com)",
"Marcos Caceres <marcos@marcosc.com> (https://marcosc.com)",
@@ -20,5 +20,8 @@
"acquire": "node test/util/acquire.js"
},
"repository": "git://github.com/w3c/webidl2.js",
- "main": "index"
+ "main": "index.js",
+ "files": [
+ "lib/*"
+ ]
}
diff --git a/resources/webidl2/test/invalid/idl/enum-empty.widl b/resources/webidl2/test/invalid/idl/enum-empty.widl
new file mode 100644
index 0000000..7f189eb
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/enum-empty.widl
@@ -0,0 +1 @@
+enum Empty {};
diff --git a/resources/webidl2/test/invalid/idl/enum-wo-comma.widl b/resources/webidl2/test/invalid/idl/enum-wo-comma.widl
new file mode 100644
index 0000000..ebc5306
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/enum-wo-comma.widl
@@ -0,0 +1 @@
+enum NoComma { "value1" "value2" };
diff --git a/resources/webidl2/test/invalid/idl/extattr-empty-ids.widl b/resources/webidl2/test/invalid/idl/extattr-empty-ids.widl
new file mode 100644
index 0000000..93c48c3
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/extattr-empty-ids.widl
@@ -0,0 +1,2 @@
+[Exposed=()]
+interface Unexposed {};
diff --git a/resources/webidl2/test/invalid/idl/id-underscored-number.widl b/resources/webidl2/test/invalid/idl/id-underscored-number.widl
new file mode 100644
index 0000000..d00121f
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/id-underscored-number.widl
@@ -0,0 +1 @@
+interface _0 {};
diff --git a/resources/webidl2/test/invalid/idl/implements_and_includes_ws.widl b/resources/webidl2/test/invalid/idl/implements_and_includes_ws.widl
new file mode 100644
index 0000000..6666dae
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/implements_and_includes_ws.widl
@@ -0,0 +1,4 @@
+// This hits the unshifting of whitespace in the "implements" and
+// "includes" productions. If there is a bug in that whitespace
+// rollback, the wrong exception will be produced.
+foobar;
diff --git a/resources/webidl2/test/invalid/idl/namespace-readwrite.widl b/resources/webidl2/test/invalid/idl/namespace-readwrite.widl
new file mode 100644
index 0000000..e184133
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/namespace-readwrite.widl
@@ -0,0 +1,3 @@
+namespace CSS {
+ attribute object readwrite;
+};
diff --git a/resources/webidl2/test/invalid/idl/nonnullableobjects.widl b/resources/webidl2/test/invalid/idl/nonnullableobjects.widl
index 1deac5a..6c875ff 100644
--- a/resources/webidl2/test/invalid/idl/nonnullableobjects.widl
+++ b/resources/webidl2/test/invalid/idl/nonnullableobjects.widl
@@ -1,5 +1,6 @@
interface Foo {};
interface NonNullable {
- attribute Foo?? foo;
-};
\ No newline at end of file
+ attribute Foo??
+ foo;
+};
diff --git a/resources/webidl2/test/invalid/idl/promise-nullable.widl b/resources/webidl2/test/invalid/idl/promise-nullable.widl
new file mode 100644
index 0000000..894d7c0
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/promise-nullable.widl
@@ -0,0 +1,4 @@
+interface X {
+ attribute Promise<void>?
+ promise;
+};
diff --git a/resources/webidl2/test/invalid/idl/record-single.widl b/resources/webidl2/test/invalid/idl/record-single.widl
new file mode 100644
index 0000000..84db402
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/record-single.widl
@@ -0,0 +1,3 @@
+interface Foo {
+ void foo(record<DOMString> param);
+};
diff --git a/resources/webidl2/test/invalid/idl/spaced-negative-infinity.widl b/resources/webidl2/test/invalid/idl/spaced-negative-infinity.widl
new file mode 100644
index 0000000..3d71222
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/spaced-negative-infinity.widl
@@ -0,0 +1,3 @@
+interface X {
+ const float infinity = - Infinity;
+};
diff --git a/resources/webidl2/test/invalid/idl/spaced-variadic.widl b/resources/webidl2/test/invalid/idl/spaced-variadic.widl
new file mode 100644
index 0000000..6d77e18
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/spaced-variadic.widl
@@ -0,0 +1,3 @@
+interface X {
+ void operation(object . . . args);
+};
diff --git a/resources/webidl2/test/invalid/idl/union-dangling-or.widl b/resources/webidl2/test/invalid/idl/union-dangling-or.widl
new file mode 100644
index 0000000..0aa043e
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/union-dangling-or.widl
@@ -0,0 +1 @@
+typedef (One or Two or) UnionOr;
diff --git a/resources/webidl2/test/invalid/idl/union-one.widl b/resources/webidl2/test/invalid/idl/union-one.widl
new file mode 100644
index 0000000..86ee96f
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/union-one.widl
@@ -0,0 +1 @@
+typedef (OnlyOne) UnionOne;
diff --git a/resources/webidl2/test/invalid/idl/union-zero.widl b/resources/webidl2/test/invalid/idl/union-zero.widl
new file mode 100644
index 0000000..177fc4c
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/union-zero.widl
@@ -0,0 +1 @@
+typedef () UnionZero;
diff --git a/resources/webidl2/test/invalid/idl/unknown-generic.widl b/resources/webidl2/test/invalid/idl/unknown-generic.widl
new file mode 100644
index 0000000..ee4a2db
--- /dev/null
+++ b/resources/webidl2/test/invalid/idl/unknown-generic.widl
@@ -0,0 +1,3 @@
+interface FetchEvent : Event {
+ ResponsePromise<any> default();
+};
diff --git a/resources/webidl2/test/invalid/json/enum-empty.json b/resources/webidl2/test/invalid/json/enum-empty.json
new file mode 100644
index 0000000..734bc67
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/enum-empty.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `enum Empty`: No value in enum",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/enum-wo-comma.json b/resources/webidl2/test/invalid/json/enum-wo-comma.json
new file mode 100644
index 0000000..bfd0b09
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/enum-wo-comma.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `enum NoComma`: No comma between enum values",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/extattr-empty-ids.json b/resources/webidl2/test/invalid/json/extattr-empty-ids.json
new file mode 100644
index 0000000..4337f1e
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/extattr-empty-ids.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: Expected identifiers but not found",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/id-underscored-number.json b/resources/webidl2/test/invalid/json/id-underscored-number.json
new file mode 100644
index 0000000..419ed94
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/id-underscored-number.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: No name for interface",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/implements_and_includes_ws.json b/resources/webidl2/test/invalid/json/implements_and_includes_ws.json
new file mode 100644
index 0000000..ad9fac6
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/implements_and_includes_ws.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: Unrecognised tokens",
+ "line": 4
+}
diff --git a/resources/webidl2/test/invalid/json/namespace-readwrite.json b/resources/webidl2/test/invalid/json/namespace-readwrite.json
new file mode 100644
index 0000000..d212151
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/namespace-readwrite.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `namespace CSS`: Attributes must be readonly in this context",
+ "line": 2
+}
diff --git a/resources/webidl2/test/invalid/json/nonnullableobjects.json b/resources/webidl2/test/invalid/json/nonnullableobjects.json
index 52bd8da..d470ec9 100644
--- a/resources/webidl2/test/invalid/json/nonnullableobjects.json
+++ b/resources/webidl2/test/invalid/json/nonnullableobjects.json
@@ -1,4 +1,4 @@
{
- "message": "Got an error during or right after parsing `interface NonNullable`: Can't nullable more than once"
-, "line": 4
+ "message": "Got an error during or right after parsing `interface NonNullable`: Can't nullable more than once",
+ "line": 4
}
diff --git a/resources/webidl2/test/invalid/json/promise-nullable.json b/resources/webidl2/test/invalid/json/promise-nullable.json
new file mode 100644
index 0000000..ced51fa
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/promise-nullable.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `interface X`: Promise type cannot be nullable",
+ "line": 2
+}
diff --git a/resources/webidl2/test/invalid/json/readonly-iterable.json b/resources/webidl2/test/invalid/json/readonly-iterable.json
index 1a09264..a571b22 100644
--- a/resources/webidl2/test/invalid/json/readonly-iterable.json
+++ b/resources/webidl2/test/invalid/json/readonly-iterable.json
@@ -1,4 +1,4 @@
{
- "message": "Got an error during or right after parsing `interface ReadonlyIterable`: Invalid operation",
+ "message": "Got an error during or right after parsing `interface ReadonlyIterable`: Missing return type",
"line": 2
}
diff --git a/resources/webidl2/test/invalid/json/record-key.json b/resources/webidl2/test/invalid/json/record-key.json
index 179d645..6f1bb99 100644
--- a/resources/webidl2/test/invalid/json/record-key.json
+++ b/resources/webidl2/test/invalid/json/record-key.json
@@ -1,4 +1,4 @@
{
- "message": "Got an error during or right after parsing `interface Foo`: Record key must be DOMString, USVString, or ByteString",
+ "message": "Got an error during or right after parsing `interface Foo`: Record key must be a string type",
"line": 2
}
diff --git a/resources/webidl2/test/invalid/json/record-single.json b/resources/webidl2/test/invalid/json/record-single.json
new file mode 100644
index 0000000..ece4fb2
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/record-single.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `interface Foo`: Missing comma after record key type",
+ "line": 2
+}
diff --git a/resources/webidl2/test/invalid/json/spaced-negative-infinity.json b/resources/webidl2/test/invalid/json/spaced-negative-infinity.json
new file mode 100644
index 0000000..9e5d6180
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/spaced-negative-infinity.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `interface X`: No value for const",
+ "line": 2
+}
diff --git a/resources/webidl2/test/invalid/json/spaced-variadic.json b/resources/webidl2/test/invalid/json/spaced-variadic.json
new file mode 100644
index 0000000..0090abe
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/spaced-variadic.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `interface X`: Unterminated operation",
+ "line": 2
+}
diff --git a/resources/webidl2/test/invalid/json/stringconstants.json b/resources/webidl2/test/invalid/json/stringconstants.json
index 1eeb31c..745d6e6 100644
--- a/resources/webidl2/test/invalid/json/stringconstants.json
+++ b/resources/webidl2/test/invalid/json/stringconstants.json
@@ -1,4 +1,4 @@
{
- "message": "Got an error during or right after parsing `interface Util`: No value for const"
+ "message": "Got an error during or right after parsing `interface Util`: No type for const"
, "line": 2
}
diff --git a/resources/webidl2/test/invalid/json/typedef-nested.json b/resources/webidl2/test/invalid/json/typedef-nested.json
index 8c60814..e1843ce 100644
--- a/resources/webidl2/test/invalid/json/typedef-nested.json
+++ b/resources/webidl2/test/invalid/json/typedef-nested.json
@@ -1,4 +1,4 @@
{
- "message": "Got an error during or right after parsing `interface Widget`: Invalid operation"
+ "message": "Got an error during or right after parsing `interface Widget`: Missing return type"
, "line": 14
}
diff --git a/resources/webidl2/test/invalid/json/union-dangling-or.json b/resources/webidl2/test/invalid/json/union-dangling-or.json
new file mode 100644
index 0000000..68dfd8b
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/union-dangling-or.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: No type after open parenthesis or 'or' in union type",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/union-one.json b/resources/webidl2/test/invalid/json/union-one.json
new file mode 100644
index 0000000..476403d
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/union-one.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: At least two types are expected in a union type but found less",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/union-zero.json b/resources/webidl2/test/invalid/json/union-zero.json
new file mode 100644
index 0000000..68dfd8b
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/union-zero.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error before parsing any named definition: No type after open parenthesis or 'or' in union type",
+ "line": 1
+}
diff --git a/resources/webidl2/test/invalid/json/unknown-generic.json b/resources/webidl2/test/invalid/json/unknown-generic.json
new file mode 100644
index 0000000..3703db3
--- /dev/null
+++ b/resources/webidl2/test/invalid/json/unknown-generic.json
@@ -0,0 +1,4 @@
+{
+ "message": "Got an error during or right after parsing `interface FetchEvent`: Unsupported generic type ResponsePromise",
+ "line": 2
+}
diff --git a/resources/webidl2/test/syntax/idl/attributes.widl b/resources/webidl2/test/syntax/idl/attributes.widl
index 1d3d5c8..f665c1f 100644
--- a/resources/webidl2/test/syntax/idl/attributes.widl
+++ b/resources/webidl2/test/syntax/idl/attributes.widl
@@ -6,4 +6,6 @@
// short can take.
attribute unsigned short age;
-};
\ No newline at end of file
+ // required is an allowed attribute name
+ attribute any required;
+};
diff --git a/resources/webidl2/test/syntax/idl/generic.widl b/resources/webidl2/test/syntax/idl/generic.widl
index 12a1a3f..693cd32 100644
--- a/resources/webidl2/test/syntax/idl/generic.widl
+++ b/resources/webidl2/test/syntax/idl/generic.widl
@@ -1,5 +1,5 @@
interface Foo {
- Promise<ResponsePromise<sequence<DOMString?>>> bar();
+ Promise<Promise<sequence<DOMString?>>> bar();
readonly attribute Promise<DOMString> baz;
};
@@ -13,5 +13,5 @@
// Extracted from https://slightlyoff.github.io/ServiceWorker/spec/service_worker/ on 2014-05-13
interface FetchEvent : Event {
- ResponsePromise<any> default();
+ Promise<any> default();
};
diff --git a/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl b/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl
index 986d0bf..c39f84b 100644
--- a/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl
+++ b/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl
@@ -27,6 +27,7 @@
attribute DOMString? _value;
};
-interface Foo {
- void op(object interface);
-};
\ No newline at end of file
+interface FooEventTarget {
+ // Argument names allow some selected keywords
+ void addEventListener(EventListener? callback);
+};
diff --git a/resources/webidl2/test/syntax/idl/inherits-getter.widl b/resources/webidl2/test/syntax/idl/inherits-getter.widl
index 558e811..435b3ab 100644
--- a/resources/webidl2/test/syntax/idl/inherits-getter.widl
+++ b/resources/webidl2/test/syntax/idl/inherits-getter.widl
@@ -13,4 +13,10 @@
// Its getter behavior is inherited from Animal, and need not be specified
// the description of Person.
inherit attribute DOMString name;
-};
\ No newline at end of file
+};
+
+interface Ghost : Person {
+
+ // An attribute that only inherits the getter behavior
+ inherit readonly attribute DOMString name;
+};
diff --git a/resources/webidl2/test/syntax/idl/linecomment.widl b/resources/webidl2/test/syntax/idl/linecomment.widl
deleted file mode 100644
index 5d31bdb..0000000
--- a/resources/webidl2/test/syntax/idl/linecomment.widl
+++ /dev/null
@@ -1,2 +0,0 @@
-/* first */
-// second
diff --git a/resources/webidl2/test/syntax/idl/promise-void.widl b/resources/webidl2/test/syntax/idl/promise-void.widl
new file mode 100644
index 0000000..c4eac3b
--- /dev/null
+++ b/resources/webidl2/test/syntax/idl/promise-void.widl
@@ -0,0 +1,3 @@
+interface Cat {
+ attribute Promise<void> meow;
+};
diff --git a/resources/webidl2/test/syntax/idl/record.widl b/resources/webidl2/test/syntax/idl/record.widl
index c8d9343..dbfad3a 100644
--- a/resources/webidl2/test/syntax/idl/record.widl
+++ b/resources/webidl2/test/syntax/idl/record.widl
@@ -2,9 +2,6 @@
interface Foo {
void foo(sequence<record<ByteString, any>> param);
record<DOMString, (float or DOMString)?> bar();
-
- // Make sure record can still be registered as a type.
- record baz();
};
interface Bar {
diff --git a/resources/webidl2/test/syntax/idl/sequence.widl b/resources/webidl2/test/syntax/idl/sequence.widl
index d31056c..b47c982 100644
--- a/resources/webidl2/test/syntax/idl/sequence.widl
+++ b/resources/webidl2/test/syntax/idl/sequence.widl
@@ -6,11 +6,6 @@
// ...
};
-// Make sure sequence can still be registered as a type.
-interface Foo {
- sequence bar();
-};
-
// Extracted from https://heycam.github.io/webidl/#idl-type-extended-attribute-associated-with on 2017-07-01
interface I {
diff --git a/resources/webidl2/test/syntax/json/allowany.json b/resources/webidl2/test/syntax/json/allowany.json
index cd5c6e0..2a93518 100644
--- a/resources/webidl2/test/syntax/json/allowany.json
+++ b/resources/webidl2/test/syntax/json/allowany.json
@@ -13,13 +13,14 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "g",
+ "escapedName": "g",
"arguments": [],
"extAttrs": []
},
@@ -32,27 +33,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "g",
+ "escapedName": "g",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "B"
+ "idlType": "B",
+ "extAttrs": []
},
- "name": "b"
+ "name": "b",
+ "escapedName": "b"
}
],
"extAttrs": []
@@ -66,17 +70,19 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "g",
+ "escapedName": "g",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [
{
"name": "AllowAny",
@@ -87,13 +93,14 @@
],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "s"
+ "name": "s",
+ "escapedName": "s"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/attributes.json b/resources/webidl2/test/syntax/json/attributes.json
index c90c70d..f02cb21 100644
--- a/resources/webidl2/test/syntax/json/attributes.json
+++ b/resources/webidl2/test/syntax/json/attributes.json
@@ -12,13 +12,32 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "age",
+ "escapedName": "age",
+ "extAttrs": []
+ },
+ {
+ "type": "attribute",
+ "static": false,
+ "stringifier": false,
+ "inherit": false,
+ "readonly": false,
+ "idlType": {
+ "type": "attribute-type",
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "any",
+ "extAttrs": []
+ },
+ "name": "required",
+ "escapedName": "required",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/callback.json b/resources/webidl2/test/syntax/json/callback.json
index f31067d..89d63aa 100644
--- a/resources/webidl2/test/syntax/json/callback.json
+++ b/resources/webidl2/test/syntax/json/callback.json
@@ -4,26 +4,28 @@
"name": "AsyncOperationCallback",
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "status"
+ "name": "status",
+ "escapedName": "status"
}
],
"extAttrs": []
@@ -42,27 +44,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "eventOccurred",
+ "escapedName": "eventOccurred",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "details"
+ "name": "details",
+ "escapedName": "details"
}
],
"extAttrs": []
@@ -76,40 +81,44 @@
"name": "SortCallback",
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
- "name": "a"
+ "name": "a",
+ "escapedName": "a"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
- "name": "b"
+ "name": "b",
+ "escapedName": "b"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/constants.json b/resources/webidl2/test/syntax/json/constants.json
index 4b98751..ef2b8c4 100644
--- a/resources/webidl2/test/syntax/json/constants.json
+++ b/resources/webidl2/test/syntax/json/constants.json
@@ -9,7 +9,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "boolean"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "DEBUG",
"value": {
@@ -23,7 +27,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "short"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "short",
+ "extAttrs": []
},
"name": "negative",
"value": {
@@ -37,7 +45,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "octet"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "octet",
+ "extAttrs": []
},
"name": "LF",
"value": {
@@ -51,7 +63,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "unsigned long"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "BIT_MASK",
"value": {
@@ -65,7 +81,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "float"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "float",
+ "extAttrs": []
},
"name": "AVOGADRO",
"value": {
@@ -79,7 +99,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "unrestricted float"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "unrestricted float",
+ "extAttrs": []
},
"name": "sobig",
"value": {
@@ -93,7 +117,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "unrestricted double"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "unrestricted double",
+ "extAttrs": []
},
"name": "minusonedividedbyzero",
"value": {
@@ -107,7 +135,11 @@
"nullable": false,
"idlType": {
"type": "const-type",
- "idlType": "short"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "short",
+ "extAttrs": []
},
"name": "notanumber",
"value": {
diff --git a/resources/webidl2/test/syntax/json/constructor.json b/resources/webidl2/test/syntax/json/constructor.json
index 292236f..efdd1b5 100644
--- a/resources/webidl2/test/syntax/json/constructor.json
+++ b/resources/webidl2/test/syntax/json/constructor.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "r",
+ "escapedName": "r",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "cx",
+ "escapedName": "cx",
"extAttrs": []
},
{
@@ -46,13 +48,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "cy",
+ "escapedName": "cy",
"extAttrs": []
},
{
@@ -63,13 +66,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "circumference",
+ "escapedName": "circumference",
"extAttrs": []
}
],
@@ -87,16 +91,18 @@
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "radius"
+ "name": "radius",
+ "escapedName": "radius"
}
],
"type": "extended-attribute",
diff --git a/resources/webidl2/test/syntax/json/dictionary-inherits.json b/resources/webidl2/test/syntax/json/dictionary-inherits.json
index 9b928f4..595c35c 100644
--- a/resources/webidl2/test/syntax/json/dictionary-inherits.json
+++ b/resources/webidl2/test/syntax/json/dictionary-inherits.json
@@ -7,14 +7,15 @@
{
"type": "field",
"name": "fillPattern",
+ "escapedName": "fillPattern",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"extAttrs": [],
"default": {
@@ -25,14 +26,15 @@
{
"type": "field",
"name": "strokePattern",
+ "escapedName": "strokePattern",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"extAttrs": [],
"default": {
@@ -42,16 +44,18 @@
{
"type": "field",
"name": "position",
+ "escapedName": "position",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
}
],
"inheritance": null,
@@ -65,16 +69,18 @@
{
"type": "field",
"name": "hydrometry",
+ "escapedName": "hydrometry",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
}
],
"inheritance": "PaintOptions",
diff --git a/resources/webidl2/test/syntax/json/dictionary.json b/resources/webidl2/test/syntax/json/dictionary.json
index f74fedc..8bbc6b9 100644
--- a/resources/webidl2/test/syntax/json/dictionary.json
+++ b/resources/webidl2/test/syntax/json/dictionary.json
@@ -7,14 +7,15 @@
{
"type": "field",
"name": "fillPattern",
+ "escapedName": "fillPattern",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"extAttrs": [],
"default": {
@@ -25,14 +26,15 @@
{
"type": "field",
"name": "strokePattern",
+ "escapedName": "strokePattern",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"extAttrs": [],
"default": {
@@ -42,35 +44,38 @@
{
"type": "field",
"name": "position",
+ "escapedName": "position",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
},
{
"type": "field",
"name": "seq",
+ "escapedName": "seq",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
- }
+ "idlType": "long",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"extAttrs": [],
"default": {
@@ -81,16 +86,18 @@
{
"type": "field",
"name": "reqSeq",
+ "escapedName": "reqSeq",
"required": true,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
}
],
"inheritance": null,
@@ -104,30 +111,34 @@
{
"type": "field",
"name": "h",
+ "escapedName": "h",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
},
{
"type": "field",
"name": "d",
+ "escapedName": "d",
"required": false,
"idlType": {
"type": "dictionary-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "extAttrs": []
+ "extAttrs": [],
+ "default": null
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/enum.json b/resources/webidl2/test/syntax/json/enum.json
index 29d1c86..11f5d09 100644
--- a/resources/webidl2/test/syntax/json/enum.json
+++ b/resources/webidl2/test/syntax/json/enum.json
@@ -31,13 +31,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "MealType"
+ "idlType": "MealType",
+ "extAttrs": []
},
"name": "type",
+ "escapedName": "type",
"extAttrs": []
},
{
@@ -48,13 +49,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "size",
+ "escapedName": "size",
"extAttrs": []
},
{
@@ -66,41 +68,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "initialize",
+ "escapedName": "initialize",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "MealType"
+ "idlType": "MealType",
+ "extAttrs": []
},
- "name": "type"
+ "name": "type",
+ "escapedName": "type"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "size"
+ "name": "size",
+ "escapedName": "size"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/equivalent-decl.json b/resources/webidl2/test/syntax/json/equivalent-decl.json
index de8d4db..ee079a7 100644
--- a/resources/webidl2/test/syntax/json/equivalent-decl.json
+++ b/resources/webidl2/test/syntax/json/equivalent-decl.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "propertyCount",
+ "escapedName": "propertyCount",
"extAttrs": []
},
{
@@ -30,27 +31,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "getProperty",
+ "escapedName": "getProperty",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
}
],
"extAttrs": []
@@ -64,41 +68,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "setProperty",
+ "escapedName": "setProperty",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "propertyValue"
+ "name": "propertyValue",
+ "escapedName": "propertyValue"
}
],
"extAttrs": []
@@ -120,13 +129,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "propertyCount",
+ "escapedName": "propertyCount",
"extAttrs": []
},
{
@@ -138,27 +148,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "getProperty",
+ "escapedName": "getProperty",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
}
],
"extAttrs": []
@@ -172,41 +185,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "setProperty",
+ "escapedName": "setProperty",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "propertyValue"
+ "name": "propertyValue",
+ "escapedName": "propertyValue"
}
],
"extAttrs": []
@@ -220,27 +238,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
}
],
"extAttrs": []
@@ -254,41 +275,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "propertyValue"
+ "name": "propertyValue",
+ "escapedName": "propertyValue"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/extended-attributes.json b/resources/webidl2/test/syntax/json/extended-attributes.json
index e0dc236..25f56f0 100644
--- a/resources/webidl2/test/syntax/json/extended-attributes.json
+++ b/resources/webidl2/test/syntax/json/extended-attributes.json
@@ -78,13 +78,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "r",
+ "escapedName": "r",
"extAttrs": []
},
{
@@ -95,13 +96,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "cx",
+ "escapedName": "cx",
"extAttrs": []
},
{
@@ -112,13 +114,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "cy",
+ "escapedName": "cy",
"extAttrs": []
},
{
@@ -129,13 +132,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "circumference",
+ "escapedName": "circumference",
"extAttrs": []
}
],
@@ -153,16 +157,18 @@
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
- "name": "radius"
+ "name": "radius",
+ "escapedName": "radius"
}
],
"type": "extended-attribute",
@@ -183,26 +189,25 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Node"
+ "idlType": "Node",
+ "extAttrs": []
}
],
"extAttrs": [
@@ -215,6 +220,7 @@
]
},
"name": "attrib",
+ "escapedName": "attrib",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/generic.json b/resources/webidl2/test/syntax/json/generic.json
index 6259385..d3c26ac 100644
--- a/resources/webidl2/test/syntax/json/generic.json
+++ b/resources/webidl2/test/syntax/json/generic.json
@@ -13,34 +13,35 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
- "generic": "ResponsePromise",
+ "generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
- }
- }
- }
+ "idlType": "DOMString",
+ "extAttrs": []
+ },
+ "extAttrs": []
+ },
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "bar",
+ "escapedName": "bar",
"arguments": [],
"extAttrs": []
},
@@ -52,20 +53,21 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
- }
+ "idlType": "DOMString",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "baz",
+ "escapedName": "baz",
"extAttrs": []
}
],
@@ -86,20 +88,21 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "Client"
- }
+ "idlType": "Client",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "getServiced",
+ "escapedName": "getServiced",
"arguments": [],
"extAttrs": []
},
@@ -112,20 +115,21 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
- }
+ "idlType": "any",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "reloadAll",
+ "escapedName": "reloadAll",
"arguments": [],
"extAttrs": []
}
@@ -147,20 +151,21 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
- "generic": "ResponsePromise",
+ "generic": "Promise",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
- }
+ "idlType": "any",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "default",
+ "escapedName": "default",
"arguments": [],
"extAttrs": []
}
diff --git a/resources/webidl2/test/syntax/json/getter-setter.json b/resources/webidl2/test/syntax/json/getter-setter.json
index 1213307..6f8196f 100644
--- a/resources/webidl2/test/syntax/json/getter-setter.json
+++ b/resources/webidl2/test/syntax/json/getter-setter.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "propertyCount",
+ "escapedName": "propertyCount",
"extAttrs": []
},
{
@@ -30,27 +31,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
}
],
"extAttrs": []
@@ -64,41 +68,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "propertyName"
+ "name": "propertyName",
+ "escapedName": "propertyName"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "propertyValue"
+ "name": "propertyValue",
+ "escapedName": "propertyValue"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/identifier-qualified-names.json b/resources/webidl2/test/syntax/json/identifier-qualified-names.json
index f4e295a..098cdcb 100644
--- a/resources/webidl2/test/syntax/json/identifier-qualified-names.json
+++ b/resources/webidl2/test/syntax/json/identifier-qualified-names.json
@@ -3,11 +3,11 @@
"type": "typedef",
"idlType": {
"type": "typedef-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "number",
"extAttrs": []
@@ -26,27 +26,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "object"
+ "idlType": "object",
+ "extAttrs": []
},
"name": "createObject",
+ "escapedName": "createObject",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "interface"
+ "name": "interface",
+ "escapedName": "_interface"
}
],
"extAttrs": []
@@ -60,27 +63,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "keyName"
+ "name": "keyName",
+ "escapedName": "keyName"
}
],
"extAttrs": []
@@ -102,13 +108,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "const",
+ "escapedName": "_const",
"extAttrs": []
},
{
@@ -119,13 +126,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "value",
+ "escapedName": "_value",
"extAttrs": []
}
],
@@ -134,7 +142,7 @@
},
{
"type": "interface",
- "name": "Foo",
+ "name": "FooEventTarget",
"partial": false,
"members": [
{
@@ -146,27 +154,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
- "name": "op",
+ "name": "addEventListener",
+ "escapedName": "addEventListener",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
- "nullable": false,
+ "nullable": true,
"union": false,
- "idlType": "object"
+ "idlType": "EventListener",
+ "extAttrs": []
},
- "name": "interface"
+ "name": "callback",
+ "escapedName": "callback"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/implements.json b/resources/webidl2/test/syntax/json/implements.json
index 69879d9..1736118 100644
--- a/resources/webidl2/test/syntax/json/implements.json
+++ b/resources/webidl2/test/syntax/json/implements.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "nodeType",
+ "escapedName": "nodeType",
"extAttrs": []
}
],
@@ -39,55 +40,62 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "addEventListener",
+ "escapedName": "addEventListener",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "type"
+ "name": "type",
+ "escapedName": "type"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "EventListener"
+ "idlType": "EventListener",
+ "extAttrs": []
},
- "name": "listener"
+ "name": "listener",
+ "escapedName": "listener"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
- "name": "useCapture"
+ "name": "useCapture",
+ "escapedName": "useCapture"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/indexed-properties.json b/resources/webidl2/test/syntax/json/indexed-properties.json
index 697b595..dccd511 100644
--- a/resources/webidl2/test/syntax/json/indexed-properties.json
+++ b/resources/webidl2/test/syntax/json/indexed-properties.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "size",
+ "escapedName": "size",
"extAttrs": []
},
{
@@ -30,27 +31,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
"name": "getByIndex",
+ "escapedName": "getByIndex",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "index"
+ "name": "index",
+ "escapedName": "index"
}
],
"extAttrs": []
@@ -64,41 +68,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "setByIndex",
+ "escapedName": "setByIndex",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "index"
+ "name": "index",
+ "escapedName": "index"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
- "name": "value"
+ "name": "value",
+ "escapedName": "value"
}
],
"extAttrs": []
@@ -112,27 +121,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "removeByIndex",
+ "escapedName": "removeByIndex",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "index"
+ "name": "index",
+ "escapedName": "index"
}
],
"extAttrs": []
@@ -146,27 +158,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
"name": "get",
+ "escapedName": "get",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "name"
+ "name": "name",
+ "escapedName": "name"
}
],
"extAttrs": []
@@ -180,41 +195,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "set",
+ "escapedName": "set",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "name"
+ "name": "name",
+ "escapedName": "name"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
- "name": "value"
+ "name": "value",
+ "escapedName": "value"
}
],
"extAttrs": []
@@ -228,27 +248,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "remove",
+ "escapedName": "remove",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "name"
+ "name": "name",
+ "escapedName": "name"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/inherits-getter.json b/resources/webidl2/test/syntax/json/inherits-getter.json
index 818d8b6..86eb68e 100644
--- a/resources/webidl2/test/syntax/json/inherits-getter.json
+++ b/resources/webidl2/test/syntax/json/inherits-getter.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
}
],
@@ -38,13 +39,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "age",
+ "escapedName": "age",
"extAttrs": []
},
{
@@ -55,17 +57,45 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
}
],
"inheritance": "Animal",
"extAttrs": []
+ },
+ {
+ "type": "interface",
+ "name": "Ghost",
+ "partial": false,
+ "members": [
+ {
+ "type": "attribute",
+ "static": false,
+ "stringifier": false,
+ "inherit": true,
+ "readonly": true,
+ "idlType": {
+ "type": "attribute-type",
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "DOMString",
+ "extAttrs": []
+ },
+ "name": "name",
+ "escapedName": "name",
+ "extAttrs": []
+ }
+ ],
+ "inheritance": "Person",
+ "extAttrs": []
}
]
diff --git a/resources/webidl2/test/syntax/json/interface-inherits.json b/resources/webidl2/test/syntax/json/interface-inherits.json
index 74a4c39..02caf35 100644
--- a/resources/webidl2/test/syntax/json/interface-inherits.json
+++ b/resources/webidl2/test/syntax/json/interface-inherits.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
}
],
@@ -38,13 +39,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Dog"
+ "idlType": "Dog",
+ "extAttrs": []
},
"name": "pet",
+ "escapedName": "pet",
"extAttrs": []
}
],
@@ -64,13 +66,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Human"
+ "idlType": "Human",
+ "extAttrs": []
},
"name": "owner",
+ "escapedName": "owner",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/iterable.json b/resources/webidl2/test/syntax/json/iterable.json
index 7126a4e..ee906f7 100644
--- a/resources/webidl2/test/syntax/json/iterable.json
+++ b/resources/webidl2/test/syntax/json/iterable.json
@@ -9,11 +9,11 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
}
],
"extAttrs": []
@@ -32,19 +32,19 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "short"
+ "idlType": "short",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
}
],
"extAttrs": []
@@ -63,7 +63,6 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
diff --git a/resources/webidl2/test/syntax/json/legacyiterable.json b/resources/webidl2/test/syntax/json/legacyiterable.json
index 5a1e526..80fd000 100644
--- a/resources/webidl2/test/syntax/json/legacyiterable.json
+++ b/resources/webidl2/test/syntax/json/legacyiterable.json
@@ -9,11 +9,11 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/linecomment.json b/resources/webidl2/test/syntax/json/linecomment.json
deleted file mode 100644
index 11fd14f..0000000
--- a/resources/webidl2/test/syntax/json/linecomment.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "type": "multiline-comment",
- "value": " first "
- },
- {
- "type": "ws",
- "value": "\n"
- },
- {
- "type": "line-comment",
- "value": " second"
- }
-]
diff --git a/resources/webidl2/test/syntax/json/maplike.json b/resources/webidl2/test/syntax/json/maplike.json
index b86e104..2cb8c36 100644
--- a/resources/webidl2/test/syntax/json/maplike.json
+++ b/resources/webidl2/test/syntax/json/maplike.json
@@ -9,19 +9,19 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
}
],
"readonly": false,
@@ -41,19 +41,19 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
}
],
"readonly": true,
@@ -73,7 +73,6 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
@@ -89,7 +88,6 @@
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
diff --git a/resources/webidl2/test/syntax/json/mixin.json b/resources/webidl2/test/syntax/json/mixin.json
index f0458e2..b037cb3 100644
--- a/resources/webidl2/test/syntax/json/mixin.json
+++ b/resources/webidl2/test/syntax/json/mixin.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Crypto"
+ "idlType": "Crypto",
+ "extAttrs": []
},
"name": "crypto",
+ "escapedName": "crypto",
"extAttrs": []
}
],
@@ -49,13 +50,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Crypto"
+ "idlType": "Crypto",
+ "extAttrs": []
},
"name": "crypto",
+ "escapedName": "crypto",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/namedconstructor.json b/resources/webidl2/test/syntax/json/namedconstructor.json
index f895461..deb429e 100644
--- a/resources/webidl2/test/syntax/json/namedconstructor.json
+++ b/resources/webidl2/test/syntax/json/namedconstructor.json
@@ -21,16 +21,18 @@
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "src"
+ "name": "src",
+ "escapedName": "src"
}
],
"type": "extended-attribute",
diff --git a/resources/webidl2/test/syntax/json/namespace.json b/resources/webidl2/test/syntax/json/namespace.json
index 0611b71..9e37b26 100644
--- a/resources/webidl2/test/syntax/json/namespace.json
+++ b/resources/webidl2/test/syntax/json/namespace.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
"name": "unit",
+ "escapedName": "unit",
"extAttrs": []
},
{
@@ -30,41 +31,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "dotProduct",
+ "escapedName": "dotProduct",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
- "name": "y"
+ "name": "y",
+ "escapedName": "y"
}
],
"extAttrs": []
@@ -78,41 +84,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
"name": "crossProduct",
+ "escapedName": "crossProduct",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Vector"
+ "idlType": "Vector",
+ "extAttrs": []
},
- "name": "y"
+ "name": "y",
+ "escapedName": "y"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/nointerfaceobject.json b/resources/webidl2/test/syntax/json/nointerfaceobject.json
index 03bb994..cafb5e0 100644
--- a/resources/webidl2/test/syntax/json/nointerfaceobject.json
+++ b/resources/webidl2/test/syntax/json/nointerfaceobject.json
@@ -13,27 +13,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
},
"name": "lookupEntry",
+ "escapedName": "lookupEntry",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "key"
+ "name": "key",
+ "escapedName": "key"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/nullable.json b/resources/webidl2/test/syntax/json/nullable.json
index ae4d2aa..f325e2e 100644
--- a/resources/webidl2/test/syntax/json/nullable.json
+++ b/resources/webidl2/test/syntax/json/nullable.json
@@ -9,7 +9,11 @@
"nullable": true,
"idlType": {
"type": "const-type",
- "idlType": "boolean"
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "ARE_WE_THERE_YET",
"value": {
@@ -35,13 +39,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "namespaceURI",
+ "escapedName": "namespaceURI",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/nullableobjects.json b/resources/webidl2/test/syntax/json/nullableobjects.json
index 29d1314..27ecd25 100644
--- a/resources/webidl2/test/syntax/json/nullableobjects.json
+++ b/resources/webidl2/test/syntax/json/nullableobjects.json
@@ -29,27 +29,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "A"
+ "idlType": "A",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
}
],
"extAttrs": []
@@ -63,27 +66,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "B"
+ "idlType": "B",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/operation-optional-arg.json b/resources/webidl2/test/syntax/json/operation-optional-arg.json
index 44c3a16..4b7436b 100644
--- a/resources/webidl2/test/syntax/json/operation-optional-arg.json
+++ b/resources/webidl2/test/syntax/json/operation-optional-arg.json
@@ -13,73 +13,81 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "object"
+ "idlType": "object",
+ "extAttrs": []
},
"name": "createColor",
+ "escapedName": "createColor",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "v1"
+ "name": "v1",
+ "escapedName": "v1"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "v2"
+ "name": "v2",
+ "escapedName": "v2"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "v3"
+ "name": "v3",
+ "escapedName": "v3"
},
{
"optional": true,
"variadic": false,
- "extAttrs": [],
- "idlType": {
- "type": "argument-type",
- "sequence": false,
- "generic": null,
- "nullable": false,
- "union": false,
- "idlType": "float"
- },
- "name": "alpha",
"default": {
"type": "number",
"value": "3.5"
- }
+ },
+ "extAttrs": [],
+ "idlType": {
+ "type": "argument-type",
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "float",
+ "extAttrs": []
+ },
+ "name": "alpha",
+ "escapedName": "alpha"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/overloading.json b/resources/webidl2/test/syntax/json/overloading.json
index 87169e9..bf7aca6 100644
--- a/resources/webidl2/test/syntax/json/overloading.json
+++ b/resources/webidl2/test/syntax/json/overloading.json
@@ -29,27 +29,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "A"
+ "idlType": "A",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
}
],
"extAttrs": []
@@ -63,27 +66,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "B"
+ "idlType": "B",
+ "extAttrs": []
},
- "name": "x"
+ "name": "x",
+ "escapedName": "x"
}
],
"extAttrs": []
@@ -106,27 +112,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "a"
+ "name": "a",
+ "escapedName": "a"
}
],
"extAttrs": []
@@ -140,17 +149,19 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [
{
"name": "AllowAny",
@@ -161,41 +172,46 @@
],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "a"
+ "name": "a",
+ "escapedName": "a"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "b"
+ "name": "b",
+ "escapedName": "b"
},
{
"optional": false,
"variadic": true,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "c"
+ "name": "c",
+ "escapedName": "c"
}
],
"extAttrs": []
@@ -209,13 +225,14 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [],
"extAttrs": []
},
@@ -228,69 +245,78 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f",
+ "escapedName": "f",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "name": "a"
+ "name": "a",
+ "escapedName": "a"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "b"
+ "name": "b",
+ "escapedName": "b"
},
{
"optional": true,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "c"
+ "name": "c",
+ "escapedName": "c"
},
{
"optional": false,
"variadic": true,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
- "name": "d"
+ "name": "d",
+ "escapedName": "d"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/overridebuiltins.json b/resources/webidl2/test/syntax/json/overridebuiltins.json
index d63f8f7..e54a468 100644
--- a/resources/webidl2/test/syntax/json/overridebuiltins.json
+++ b/resources/webidl2/test/syntax/json/overridebuiltins.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "length",
+ "escapedName": "length",
"extAttrs": []
},
{
@@ -30,27 +31,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "lookup",
+ "escapedName": "lookup",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "key"
+ "name": "key",
+ "escapedName": "key"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/partial-interface.json b/resources/webidl2/test/syntax/json/partial-interface.json
index c16c64d..d791262 100644
--- a/resources/webidl2/test/syntax/json/partial-interface.json
+++ b/resources/webidl2/test/syntax/json/partial-interface.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "bar",
+ "escapedName": "bar",
"extAttrs": []
}
],
@@ -38,13 +39,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "quux",
+ "escapedName": "quux",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/primitives.json b/resources/webidl2/test/syntax/json/primitives.json
index cf96539..a216221 100644
--- a/resources/webidl2/test/syntax/json/primitives.json
+++ b/resources/webidl2/test/syntax/json/primitives.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "truth",
+ "escapedName": "truth",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "byte"
+ "idlType": "byte",
+ "extAttrs": []
},
"name": "character",
+ "escapedName": "character",
"extAttrs": []
},
{
@@ -46,13 +48,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "octet"
+ "idlType": "octet",
+ "extAttrs": []
},
"name": "value",
+ "escapedName": "value",
"extAttrs": []
},
{
@@ -63,13 +66,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "short"
+ "idlType": "short",
+ "extAttrs": []
},
"name": "number",
+ "escapedName": "number",
"extAttrs": []
},
{
@@ -80,13 +84,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "positive",
+ "escapedName": "positive",
"extAttrs": []
},
{
@@ -97,13 +102,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
"name": "big",
+ "escapedName": "big",
"extAttrs": []
},
{
@@ -114,13 +120,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "bigpositive",
+ "escapedName": "bigpositive",
"extAttrs": []
},
{
@@ -131,13 +138,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long long"
+ "idlType": "long long",
+ "extAttrs": []
},
"name": "bigbig",
+ "escapedName": "bigbig",
"extAttrs": []
},
{
@@ -148,13 +156,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long long"
+ "idlType": "unsigned long long",
+ "extAttrs": []
},
"name": "bigbigpositive",
+ "escapedName": "bigbigpositive",
"extAttrs": []
},
{
@@ -165,13 +174,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "real",
+ "escapedName": "real",
"extAttrs": []
},
{
@@ -182,13 +192,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "double"
+ "idlType": "double",
+ "extAttrs": []
},
"name": "bigreal",
+ "escapedName": "bigreal",
"extAttrs": []
},
{
@@ -199,13 +210,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unrestricted float"
+ "idlType": "unrestricted float",
+ "extAttrs": []
},
"name": "realwithinfinity",
+ "escapedName": "realwithinfinity",
"extAttrs": []
},
{
@@ -216,13 +228,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unrestricted double"
+ "idlType": "unrestricted double",
+ "extAttrs": []
},
"name": "bigrealwithinfinity",
+ "escapedName": "bigrealwithinfinity",
"extAttrs": []
},
{
@@ -233,13 +246,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "string",
+ "escapedName": "string",
"extAttrs": []
},
{
@@ -250,13 +264,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "ByteString"
+ "idlType": "ByteString",
+ "extAttrs": []
},
"name": "bytes",
+ "escapedName": "bytes",
"extAttrs": []
},
{
@@ -267,13 +282,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Date"
+ "idlType": "Date",
+ "extAttrs": []
},
"name": "date",
+ "escapedName": "date",
"extAttrs": []
},
{
@@ -284,13 +300,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "RegExp"
+ "idlType": "RegExp",
+ "extAttrs": []
},
"name": "regexp",
+ "escapedName": "regexp",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/promise-void.json b/resources/webidl2/test/syntax/json/promise-void.json
new file mode 100644
index 0000000..7676838
--- /dev/null
+++ b/resources/webidl2/test/syntax/json/promise-void.json
@@ -0,0 +1,36 @@
+[
+ {
+ "type": "interface",
+ "name": "Cat",
+ "partial": false,
+ "members": [
+ {
+ "type": "attribute",
+ "static": false,
+ "stringifier": false,
+ "inherit": false,
+ "readonly": false,
+ "idlType": {
+ "type": "attribute-type",
+ "generic": "Promise",
+ "nullable": false,
+ "union": false,
+ "idlType": {
+ "type": "return-type",
+ "generic": null,
+ "nullable": false,
+ "union": false,
+ "idlType": "void",
+ "extAttrs": []
+ },
+ "extAttrs": []
+ },
+ "name": "meow",
+ "escapedName": "meow",
+ "extAttrs": []
+ }
+ ],
+ "inheritance": null,
+ "extAttrs": []
+ }
+]
diff --git a/resources/webidl2/test/syntax/json/prototyperoot.json b/resources/webidl2/test/syntax/json/prototyperoot.json
index eda7f14..cec79ff 100644
--- a/resources/webidl2/test/syntax/json/prototyperoot.json
+++ b/resources/webidl2/test/syntax/json/prototyperoot.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "nodeType",
+ "escapedName": "nodeType",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/putforwards.json b/resources/webidl2/test/syntax/json/putforwards.json
index 4b809d2..951b3ef 100644
--- a/resources/webidl2/test/syntax/json/putforwards.json
+++ b/resources/webidl2/test/syntax/json/putforwards.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Name"
+ "idlType": "Name",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": [
{
"name": "PutForwards",
@@ -39,13 +40,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned short"
+ "idlType": "unsigned short",
+ "extAttrs": []
},
"name": "age",
+ "escapedName": "age",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/record.json b/resources/webidl2/test/syntax/json/record.json
index dd00b5d..1be5427 100644
--- a/resources/webidl2/test/syntax/json/record.json
+++ b/resources/webidl2/test/syntax/json/record.json
@@ -13,51 +13,54 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "foo",
+ "escapedName": "foo",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": "record",
"nullable": false,
"union": false,
"idlType": [
{
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "ByteString"
+ "idlType": "ByteString",
+ "extAttrs": []
},
{
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "any"
+ "idlType": "any",
+ "extAttrs": []
}
- ]
- }
+ ],
+ "extAttrs": []
+ },
+ "extAttrs": []
},
- "name": "param"
+ "name": "param",
+ "escapedName": "param"
}
],
"extAttrs": []
@@ -71,66 +74,48 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": "record",
"nullable": false,
"union": false,
"idlType": [
{
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
{
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
"name": "bar",
- "arguments": [],
- "extAttrs": []
- },
- {
- "type": "operation",
- "getter": false,
- "setter": false,
- "deleter": false,
- "static": false,
- "stringifier": false,
- "idlType": {
- "type": "return-type",
- "sequence": false,
- "generic": null,
- "nullable": false,
- "union": false,
- "idlType": "record"
- },
- "name": "baz",
+ "escapedName": "bar",
"arguments": [],
"extAttrs": []
}
@@ -143,33 +128,35 @@
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": "record",
"nullable": false,
"union": false,
"idlType": [
{
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "USVString"
+ "idlType": "USVString",
+ "extAttrs": []
},
{
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "USVString"
+ "idlType": "USVString",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
- "name": "init"
+ "name": "init",
+ "escapedName": "init"
}
],
"type": "extended-attribute",
@@ -191,22 +178,20 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": "record",
"nullable": false,
"union": false,
"idlType": [
{
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
{
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
@@ -220,9 +205,11 @@
}
]
}
- ]
+ ],
+ "extAttrs": []
},
"name": "bar",
+ "escapedName": "bar",
"arguments": [],
"extAttrs": []
}
diff --git a/resources/webidl2/test/syntax/json/reg-operations.json b/resources/webidl2/test/syntax/json/reg-operations.json
index d696e90..8795c59 100644
--- a/resources/webidl2/test/syntax/json/reg-operations.json
+++ b/resources/webidl2/test/syntax/json/reg-operations.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "width",
+ "escapedName": "width",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "height",
+ "escapedName": "height",
"extAttrs": []
}
],
@@ -56,13 +58,14 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "isMouseOver",
+ "escapedName": "isMouseOver",
"arguments": [],
"extAttrs": []
},
@@ -75,27 +78,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "setDimensions",
+ "escapedName": "setDimensions",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Dimensions"
+ "idlType": "Dimensions",
+ "extAttrs": []
},
- "name": "size"
+ "name": "size",
+ "escapedName": "size"
}
],
"extAttrs": []
@@ -109,41 +115,46 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "setDimensions",
+ "escapedName": "setDimensions",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "width"
+ "name": "width",
+ "escapedName": "width"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
- "name": "height"
+ "name": "height",
+ "escapedName": "height"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/replaceable.json b/resources/webidl2/test/syntax/json/replaceable.json
index a10b0bf..133891d 100644
--- a/resources/webidl2/test/syntax/json/replaceable.json
+++ b/resources/webidl2/test/syntax/json/replaceable.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "value",
+ "escapedName": "value",
"extAttrs": [
{
"name": "Replaceable",
@@ -37,13 +38,14 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "increment",
+ "escapedName": "increment",
"arguments": [],
"extAttrs": []
}
diff --git a/resources/webidl2/test/syntax/json/sequence.json b/resources/webidl2/test/syntax/json/sequence.json
index c2d1765..ead0cdd 100644
--- a/resources/webidl2/test/syntax/json/sequence.json
+++ b/resources/webidl2/test/syntax/json/sequence.json
@@ -13,34 +13,37 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "drawPolygon",
+ "escapedName": "drawPolygon",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
- }
+ "idlType": "float",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
- "name": "coordinates"
+ "name": "coordinates",
+ "escapedName": "coordinates"
}
],
"extAttrs": []
@@ -54,48 +57,21 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
- }
+ "idlType": "float",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "getInflectionPoints",
- "arguments": [],
- "extAttrs": []
- }
- ],
- "inheritance": null,
- "extAttrs": []
- },
- {
- "type": "interface",
- "name": "Foo",
- "partial": false,
- "members": [
- {
- "type": "operation",
- "getter": false,
- "setter": false,
- "deleter": false,
- "static": false,
- "stringifier": false,
- "idlType": {
- "type": "return-type",
- "sequence": false,
- "generic": null,
- "nullable": false,
- "union": false,
- "idlType": "sequence"
- },
- "name": "bar",
+ "escapedName": "getInflectionPoints",
"arguments": [],
"extAttrs": []
}
@@ -117,27 +93,27 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "f1",
+ "escapedName": "f1",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
@@ -150,9 +126,11 @@
"rhs": null
}
]
- }
+ },
+ "extAttrs": []
},
- "name": "arg"
+ "name": "arg",
+ "escapedName": "arg"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/setlike.json b/resources/webidl2/test/syntax/json/setlike.json
index 12299a7..d858353 100644
--- a/resources/webidl2/test/syntax/json/setlike.json
+++ b/resources/webidl2/test/syntax/json/setlike.json
@@ -9,11 +9,11 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
}
],
"readonly": false,
@@ -33,11 +33,11 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
}
],
"readonly": true,
@@ -57,7 +57,6 @@
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
diff --git a/resources/webidl2/test/syntax/json/static.json b/resources/webidl2/test/syntax/json/static.json
index 0951b2a..d0ddf35 100644
--- a/resources/webidl2/test/syntax/json/static.json
+++ b/resources/webidl2/test/syntax/json/static.json
@@ -20,13 +20,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "cx",
+ "escapedName": "cx",
"extAttrs": []
},
{
@@ -37,13 +38,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "cy",
+ "escapedName": "cy",
"extAttrs": []
},
{
@@ -54,13 +56,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "radius",
+ "escapedName": "radius",
"extAttrs": []
},
{
@@ -71,13 +74,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
"name": "triangulationCount",
+ "escapedName": "triangulationCount",
"extAttrs": []
},
{
@@ -89,55 +93,62 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
"name": "triangulate",
+ "escapedName": "triangulate",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Circle"
+ "idlType": "Circle",
+ "extAttrs": []
},
- "name": "c1"
+ "name": "c1",
+ "escapedName": "c1"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Circle"
+ "idlType": "Circle",
+ "extAttrs": []
},
- "name": "c2"
+ "name": "c2",
+ "escapedName": "c2"
},
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Circle"
+ "idlType": "Circle",
+ "extAttrs": []
},
- "name": "c3"
+ "name": "c3",
+ "escapedName": "c3"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/stringifier-attribute.json b/resources/webidl2/test/syntax/json/stringifier-attribute.json
index 36e2b6d..dbca7f1 100644
--- a/resources/webidl2/test/syntax/json/stringifier-attribute.json
+++ b/resources/webidl2/test/syntax/json/stringifier-attribute.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "id",
+ "escapedName": "id",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/stringifier-custom.json b/resources/webidl2/test/syntax/json/stringifier-custom.json
index 3dc3ac1..c13df6e 100644
--- a/resources/webidl2/test/syntax/json/stringifier-custom.json
+++ b/resources/webidl2/test/syntax/json/stringifier-custom.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "id",
+ "escapedName": "id",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "familyName",
+ "escapedName": "familyName",
"extAttrs": []
},
{
@@ -46,13 +48,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "givenName",
+ "escapedName": "givenName",
"extAttrs": []
},
{
@@ -64,13 +67,14 @@
"stringifier": true,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [],
"extAttrs": []
}
diff --git a/resources/webidl2/test/syntax/json/stringifier.json b/resources/webidl2/test/syntax/json/stringifier.json
index 1a70276..a4f23e0 100644
--- a/resources/webidl2/test/syntax/json/stringifier.json
+++ b/resources/webidl2/test/syntax/json/stringifier.json
@@ -13,13 +13,14 @@
"stringifier": true,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": null,
+ "escapedName": null,
"arguments": [],
"extAttrs": []
}
diff --git a/resources/webidl2/test/syntax/json/treatasnull.json b/resources/webidl2/test/syntax/json/treatasnull.json
index 611d974..d5156bc 100644
--- a/resources/webidl2/test/syntax/json/treatasnull.json
+++ b/resources/webidl2/test/syntax/json/treatasnull.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "owner",
+ "escapedName": "owner",
"extAttrs": []
},
{
@@ -47,17 +49,19 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "isMemberOfBreed",
+ "escapedName": "isMemberOfBreed",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [
{
"name": "TreatNullAs",
@@ -71,13 +75,14 @@
],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "breedName"
+ "name": "breedName",
+ "escapedName": "breedName"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/treatasundefined.json b/resources/webidl2/test/syntax/json/treatasundefined.json
index 258acda..1e98315 100644
--- a/resources/webidl2/test/syntax/json/treatasundefined.json
+++ b/resources/webidl2/test/syntax/json/treatasundefined.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "name",
+ "escapedName": "name",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
"name": "owner",
+ "escapedName": "owner",
"extAttrs": []
},
{
@@ -47,17 +49,19 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "isMemberOfBreed",
+ "escapedName": "isMemberOfBreed",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [
{
"name": "TreatUndefinedAs",
@@ -71,13 +75,14 @@
],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
},
- "name": "breedName"
+ "name": "breedName",
+ "escapedName": "breedName"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/typedef-union.json b/resources/webidl2/test/syntax/json/typedef-union.json
index 06735a8..31e2419 100644
--- a/resources/webidl2/test/syntax/json/typedef-union.json
+++ b/resources/webidl2/test/syntax/json/typedef-union.json
@@ -3,44 +3,44 @@
"type": "typedef",
"idlType": {
"type": "typedef-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "ImageData"
+ "idlType": "ImageData",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "HTMLImageElement"
+ "idlType": "HTMLImageElement",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "HTMLCanvasElement"
+ "idlType": "HTMLCanvasElement",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "HTMLVideoElement"
+ "idlType": "HTMLVideoElement",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
"name": "TexImageSource",
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/typedef.json b/resources/webidl2/test/syntax/json/typedef.json
index 5e9715d..35f988e 100644
--- a/resources/webidl2/test/syntax/json/typedef.json
+++ b/resources/webidl2/test/syntax/json/typedef.json
@@ -12,13 +12,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "x",
+ "escapedName": "x",
"extAttrs": []
},
{
@@ -29,13 +30,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
"name": "y",
+ "escapedName": "y",
"extAttrs": []
}
],
@@ -46,18 +48,18 @@
"type": "typedef",
"idlType": {
"type": "typedef-type",
- "sequence": true,
"generic": "sequence",
"nullable": false,
"union": false,
"idlType": {
"type": "typedef-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
- }
+ "idlType": "Point",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
"name": "PointSequence",
"extAttrs": []
@@ -75,13 +77,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
"name": "topleft",
+ "escapedName": "topleft",
"extAttrs": []
},
{
@@ -92,13 +95,14 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
"name": "bottomright",
+ "escapedName": "bottomright",
"extAttrs": []
}
],
@@ -118,13 +122,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Rect"
+ "idlType": "Rect",
+ "extAttrs": []
},
"name": "bounds",
+ "escapedName": "bounds",
"extAttrs": []
},
{
@@ -136,27 +141,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "pointWithinBounds",
+ "escapedName": "pointWithinBounds",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Point"
+ "idlType": "Point",
+ "extAttrs": []
},
- "name": "p"
+ "name": "p",
+ "escapedName": "p"
}
],
"extAttrs": []
@@ -170,27 +178,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "boolean"
+ "idlType": "boolean",
+ "extAttrs": []
},
"name": "allPointsWithinBounds",
+ "escapedName": "allPointsWithinBounds",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "PointSequence"
+ "idlType": "PointSequence",
+ "extAttrs": []
},
- "name": "ps"
+ "name": "ps",
+ "escapedName": "ps"
}
],
"extAttrs": []
@@ -203,7 +214,6 @@
"type": "typedef",
"idlType": {
"type": "typedef-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
diff --git a/resources/webidl2/test/syntax/json/typesuffixes.json b/resources/webidl2/test/syntax/json/typesuffixes.json
index be0b1f2..52870c2 100644
--- a/resources/webidl2/test/syntax/json/typesuffixes.json
+++ b/resources/webidl2/test/syntax/json/typesuffixes.json
@@ -13,34 +13,37 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "test",
+ "escapedName": "test",
"arguments": [
{
"optional": false,
"variadic": false,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": true,
"generic": "sequence",
"nullable": true,
"union": false,
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": true,
"union": false,
- "idlType": "DOMString"
- }
+ "idlType": "DOMString",
+ "extAttrs": []
+ },
+ "extAttrs": []
},
- "name": "foo"
+ "name": "foo",
+ "escapedName": "foo"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/json/uniontype.json b/resources/webidl2/test/syntax/json/uniontype.json
index 87735c7..90eb074 100644
--- a/resources/webidl2/test/syntax/json/uniontype.json
+++ b/resources/webidl2/test/syntax/json/uniontype.json
@@ -12,72 +12,73 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "float"
+ "idlType": "float",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Date"
+ "idlType": "Date",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Event"
+ "idlType": "Event",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": true,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Node"
+ "idlType": "Node",
+ "extAttrs": []
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "DOMString"
+ "idlType": "DOMString",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
"name": "test",
+ "escapedName": "test",
"extAttrs": []
},
{
@@ -88,14 +89,12 @@
"readonly": false,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": true,
"idlType": [
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
@@ -111,15 +110,17 @@
},
{
"type": null,
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "Date"
+ "idlType": "Date",
+ "extAttrs": []
}
- ]
+ ],
+ "extAttrs": []
},
"name": "test2",
+ "escapedName": "test2",
"extAttrs": []
}
],
diff --git a/resources/webidl2/test/syntax/json/variadic-operations.json b/resources/webidl2/test/syntax/json/variadic-operations.json
index 53b02df..3280b7b 100644
--- a/resources/webidl2/test/syntax/json/variadic-operations.json
+++ b/resources/webidl2/test/syntax/json/variadic-operations.json
@@ -12,13 +12,14 @@
"readonly": true,
"idlType": {
"type": "attribute-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "unsigned long"
+ "idlType": "unsigned long",
+ "extAttrs": []
},
"name": "cardinality",
+ "escapedName": "cardinality",
"extAttrs": []
},
{
@@ -30,27 +31,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "union",
+ "escapedName": "union",
"arguments": [
{
"optional": false,
"variadic": true,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "name": "ints"
+ "name": "ints",
+ "escapedName": "ints"
}
],
"extAttrs": []
@@ -64,27 +68,30 @@
"stringifier": false,
"idlType": {
"type": "return-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "void"
+ "idlType": "void",
+ "extAttrs": []
},
"name": "intersection",
+ "escapedName": "intersection",
"arguments": [
{
"optional": false,
"variadic": true,
+ "default": null,
"extAttrs": [],
"idlType": {
"type": "argument-type",
- "sequence": false,
"generic": null,
"nullable": false,
"union": false,
- "idlType": "long"
+ "idlType": "long",
+ "extAttrs": []
},
- "name": "ints"
+ "name": "ints",
+ "escapedName": "ints"
}
],
"extAttrs": []
diff --git a/resources/webidl2/test/syntax/opt/linecomment.json b/resources/webidl2/test/syntax/opt/linecomment.json
deleted file mode 100644
index fbcdbf4..0000000
--- a/resources/webidl2/test/syntax/opt/linecomment.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "ws": true
-}
diff --git a/resources/webidl2/test/syntax/opt/typedef-nested.json b/resources/webidl2/test/syntax/opt/typedef-nested.json
deleted file mode 100644
index f0794e7..0000000
--- a/resources/webidl2/test/syntax/opt/typedef-nested.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "allowNestedTypedefs": true
-}
\ No newline at end of file
diff --git a/resources/webidl2/test/widlproc b/resources/webidl2/test/widlproc
deleted file mode 160000
index 4ef8dde..0000000
--- a/resources/webidl2/test/widlproc
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4ef8dde69c0ba3d0167bccfa2775eea7f0d6c7fe
diff --git a/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html b/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html
index 49f375c..9f5e2de 100644
--- a/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html
+++ b/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html
@@ -40,10 +40,10 @@
readonly attribute AudioListener listener;
readonly attribute AudioContextState state;
readonly attribute double baseLatency;
- Promise<void> resume ();
+ Promise<void> resume ();
attribute EventHandler onstatechange;
AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
+ Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
AudioBufferSourceNode createBufferSource ();
ConstantSourceNode createConstantSource ();
ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0
@@ -54,7 +54,7 @@
GainNode createGain ();
DelayNode createDelay (optional double maxDelayTime);
BiquadFilterNode createBiquadFilter ();
- IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
+ IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
WaveShaperNode createWaveShaper ();
PannerNode createPanner ();
StereoPannerNode createStereoPanner ();
diff --git a/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html b/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html
index 9c7fca1..2769611 100644
--- a/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html
+++ b/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test.html
@@ -42,10 +42,10 @@
readonly attribute AudioListener listener;
readonly attribute AudioContextState state;
readonly attribute double baseLatency;
- Promise<void> resume ();
+ Promise<void> resume ();
attribute EventHandler onstatechange;
AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
+ Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
AudioBufferSourceNode createBufferSource ();
ConstantSourceNode createConstantSource ();
ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0
@@ -56,7 +56,7 @@
GainNode createGain ();
DelayNode createDelay (optional double maxDelayTime);
BiquadFilterNode createBiquadFilter ();
- IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
+ IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
WaveShaperNode createWaveShaper ();
PannerNode createPanner ();
StereoPannerNode createStereoPanner ();