diff --git a/lib/webidl2.js b/lib/webidl2.js index b43de185..afe1810d 100644 --- a/lib/webidl2.js +++ b/lib/webidl2.js @@ -144,6 +144,7 @@ // remaining trivia as eof tokens.push({ type: "eof", + value: "", trivia }); @@ -210,24 +211,49 @@ function error(str) { const maxTokens = 5; - 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[consume_position] && !probe("eof")) { 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}`; + const precedingLine = lastLine( + tokensToText(sliceTokens(-maxTokens), { precedes: true }) + ); + + const procedingTokens = sliceTokens(maxTokens); + const procedingText = tokensToText(procedingTokens); + const procedingLine = procedingText.split("\n")[0]; + + const spaced = " ".repeat(precedingLine.length) + "^ " + str; + const context = precedingLine + procedingLine + "\n" + spaced; + + const since = current ? `, since \`${current.partial ? "partial " : ""}${current.type} ${current.name}\`` : ""; + const message = `Syntax error at line ${line}${since}:\n${context}`; + + throw new WebIDLParseError(message, line, procedingText, procedingTokens); + + function sliceTokens(count) { + return count > 0 ? + tokens.slice(consume_position, consume_position + count) : + tokens.slice(Math.max(consume_position + count, 0), consume_position); } - else { - // throwing before any valid definition - message = `Got an error before parsing any named definition: ${str}`; + + function tokensToText(inputs, { precedes } = {}) { + const text = inputs.map(t => t.trivia + t.value).join(""); + const nextToken = tokens[consume_position]; + if (nextToken.type === "eof") { + return text; + } + if (precedes) { + return text + nextToken.trivia; + } + return text.slice(nextToken.trivia.length); } - throw new WebIDLParseError(message, line, tok, tokens.slice(0, maxTokens)); + function lastLine(text) { + const splitted = text.split("\n"); + return splitted[splitted.length - 1]; + } } function sanitize_name(name, type) { diff --git a/package.json b/package.json index 02d25328..b141819a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "mocha": "5.2.0" }, "scripts": { - "lint": "eslint lib/*.js test/*.js", + "lint": "eslint lib/*.js test/*.js test/util/*.js", "test": "npm run lint && mocha", "acquire": "node test/util/acquire.js" }, diff --git a/test/invalid.js b/test/invalid.js index f74dc91e..6a7e75aa 100644 --- a/test/invalid.js +++ b/test/invalid.js @@ -8,12 +8,10 @@ const { collect } = require("./util/collect"); const expect = require("expect"); describe("Parses all of the invalid IDLs to check that they blow up correctly", () => { - for (const test of collect("invalid", { expectError: true })) { + for (const test of collect("invalid", { expectError: true, raw: true })) { it(`should produce the right error for ${test.path}`, () => { - const err = test.readJSON(); - expect(test.error).toBeTruthy(); - expect(test.error.message).toEqual(err.message); - expect(test.error.line).toEqual(err.line); + const err = test.readText(); + expect(test.error.message + "\n").toEqual(err); }); } }); diff --git a/test/invalid/baseline/array.txt b/test/invalid/baseline/array.txt new file mode 100644 index 00000000..9ed81530 --- /dev/null +++ b/test/invalid/baseline/array.txt @@ -0,0 +1,3 @@ +Syntax error at line 5, since `interface LotteryResults`: + readonly attribute unsigned short[][] numbers + ^ No name in attribute diff --git a/test/invalid/baseline/caller.txt b/test/invalid/baseline/caller.txt new file mode 100644 index 00000000..6222a6ef --- /dev/null +++ b/test/invalid/baseline/caller.txt @@ -0,0 +1,3 @@ +Syntax error at line 6, since `interface NumberQuadrupler`: + legacycaller float compute(float x + ^ Invalid operation diff --git a/test/invalid/baseline/dict-required-default.txt b/test/invalid/baseline/dict-required-default.txt new file mode 100644 index 00000000..355e2957 --- /dev/null +++ b/test/invalid/baseline/dict-required-default.txt @@ -0,0 +1,3 @@ +Syntax error at line 4, since `dictionary Dict`: + required long member = 0; + ^ Required member must not have a default diff --git a/test/invalid/baseline/duplicate-escaped.txt b/test/invalid/baseline/duplicate-escaped.txt new file mode 100644 index 00000000..d02addb8 --- /dev/null +++ b/test/invalid/baseline/duplicate-escaped.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Iroha`: +interface _Iroha {}; + ^ The name "Iroha" of type "interface" was already seen diff --git a/test/invalid/baseline/duplicate.txt b/test/invalid/baseline/duplicate.txt new file mode 100644 index 00000000..a9d28734 --- /dev/null +++ b/test/invalid/baseline/duplicate.txt @@ -0,0 +1,3 @@ +Syntax error at line 3, since `typedef Test`: +interface Test { + ^ The name "Test" of type "typedef" was already seen diff --git a/test/invalid/baseline/enum-bodyless.txt b/test/invalid/baseline/enum-bodyless.txt new file mode 100644 index 00000000..ab891fbd --- /dev/null +++ b/test/invalid/baseline/enum-bodyless.txt @@ -0,0 +1,3 @@ +Syntax error at line 1, since `enum X`: +enum X + ^ Bodyless enum diff --git a/test/invalid/baseline/enum-empty.txt b/test/invalid/baseline/enum-empty.txt new file mode 100644 index 00000000..1043f7c2 --- /dev/null +++ b/test/invalid/baseline/enum-empty.txt @@ -0,0 +1,3 @@ +Syntax error at line 1, since `enum Empty`: +enum Empty {}; + ^ No value in enum diff --git a/test/invalid/baseline/enum-wo-comma.txt b/test/invalid/baseline/enum-wo-comma.txt new file mode 100644 index 00000000..3e4856ba --- /dev/null +++ b/test/invalid/baseline/enum-wo-comma.txt @@ -0,0 +1,3 @@ +Syntax error at line 1, since `enum NoComma`: +enum NoComma { value1 "value2" }; + ^ No comma between enum values diff --git a/test/invalid/baseline/enum.txt b/test/invalid/baseline/enum.txt new file mode 100644 index 00000000..311fbffa --- /dev/null +++ b/test/invalid/baseline/enum.txt @@ -0,0 +1,3 @@ +Syntax error at line 1, since `enum foo`: +enum foo { 1, 2, 3 + ^ Unexpected value in enum diff --git a/test/invalid/baseline/exception.txt b/test/invalid/baseline/exception.txt new file mode 100644 index 00000000..5e8f88ba --- /dev/null +++ b/test/invalid/baseline/exception.txt @@ -0,0 +1,3 @@ +Syntax error at line 4: +exception SomeException { +^ Unrecognised tokens diff --git a/test/invalid/baseline/extattr-empty-ids.txt b/test/invalid/baseline/extattr-empty-ids.txt new file mode 100644 index 00000000..558798ba --- /dev/null +++ b/test/invalid/baseline/extattr-empty-ids.txt @@ -0,0 +1,3 @@ +Syntax error at line 1: +[Exposed=()] + ^ Expected identifiers but none found diff --git a/test/invalid/baseline/id-underscored-number.txt b/test/invalid/baseline/id-underscored-number.txt new file mode 100644 index 00000000..2d70b40e --- /dev/null +++ b/test/invalid/baseline/id-underscored-number.txt @@ -0,0 +1,3 @@ +Syntax error at line 1: +interface _0 {}; + ^ No name for interface diff --git a/test/invalid/baseline/implements.txt b/test/invalid/baseline/implements.txt new file mode 100644 index 00000000..f1547272 --- /dev/null +++ b/test/invalid/baseline/implements.txt @@ -0,0 +1,3 @@ +Syntax error at line 14, since `interface EventTarget`: + Node implements EventTarget; + ^ Unrecognised tokens diff --git a/test/invalid/baseline/implements_and_includes_ws.txt b/test/invalid/baseline/implements_and_includes_ws.txt new file mode 100644 index 00000000..048a28a8 --- /dev/null +++ b/test/invalid/baseline/implements_and_includes_ws.txt @@ -0,0 +1,3 @@ +Syntax error at line 4: +foobar; +^ Unrecognised tokens diff --git a/test/invalid/baseline/iterable-empty.txt b/test/invalid/baseline/iterable-empty.txt new file mode 100644 index 00000000..31148e3d --- /dev/null +++ b/test/invalid/baseline/iterable-empty.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface X`: + iterable<>; + ^ Error parsing iterable declaration diff --git a/test/invalid/baseline/iterator.txt b/test/invalid/baseline/iterator.txt new file mode 100644 index 00000000..04a79e75 --- /dev/null +++ b/test/invalid/baseline/iterator.txt @@ -0,0 +1,3 @@ +Syntax error at line 5, since `interface SessionManager`: + Session iterator; + ^ Invalid operation diff --git a/test/invalid/baseline/legacyiterable.txt b/test/invalid/baseline/legacyiterable.txt new file mode 100644 index 00000000..66f95b49 --- /dev/null +++ b/test/invalid/baseline/legacyiterable.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface LegacyIterable`: + legacyiterable; + ^ Missing return type diff --git a/test/invalid/baseline/maplike-1type.txt b/test/invalid/baseline/maplike-1type.txt new file mode 100644 index 00000000..4aa5ea31 --- /dev/null +++ b/test/invalid/baseline/maplike-1type.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface MapLikeOneType`: + maplike; + ^ Missing second type argument in maplike declaration diff --git a/test/invalid/baseline/module.txt b/test/invalid/baseline/module.txt new file mode 100644 index 00000000..f31c2f1b --- /dev/null +++ b/test/invalid/baseline/module.txt @@ -0,0 +1,3 @@ +Syntax error at line 2: +module gfx { +^ Unrecognised tokens diff --git a/test/invalid/baseline/namespace-readwrite.txt b/test/invalid/baseline/namespace-readwrite.txt new file mode 100644 index 00000000..73343b0a --- /dev/null +++ b/test/invalid/baseline/namespace-readwrite.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `namespace CSS`: + attribute object readwrite; + ^ Attributes must be readonly in this context diff --git a/test/invalid/baseline/no-semicolon-callback.txt b/test/invalid/baseline/no-semicolon-callback.txt new file mode 100644 index 00000000..cef5001e --- /dev/null +++ b/test/invalid/baseline/no-semicolon-callback.txt @@ -0,0 +1,3 @@ +Syntax error at line 5, since `callback interface NoSemicolon`: +enum YouNeedOne { +^ Missing semicolon after interface diff --git a/test/invalid/baseline/no-semicolon.txt b/test/invalid/baseline/no-semicolon.txt new file mode 100644 index 00000000..6da783fe --- /dev/null +++ b/test/invalid/baseline/no-semicolon.txt @@ -0,0 +1,3 @@ +Syntax error at line 5, since `partial interface NoSemicolon`: +enum YouNeedOne { +^ Missing semicolon after interface diff --git a/test/invalid/baseline/nonnullableany.txt b/test/invalid/baseline/nonnullableany.txt new file mode 100644 index 00000000..6a36ddf0 --- /dev/null +++ b/test/invalid/baseline/nonnullableany.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface NonNullable`: + attribute any? foo; + ^ Type any cannot be made nullable diff --git a/test/invalid/baseline/nonnullableobjects.txt b/test/invalid/baseline/nonnullableobjects.txt new file mode 100644 index 00000000..5aff4a25 --- /dev/null +++ b/test/invalid/baseline/nonnullableobjects.txt @@ -0,0 +1,3 @@ +Syntax error at line 4, since `interface NonNullable`: + attribute Foo?? + ^ Can't nullable more than once diff --git a/test/invalid/baseline/operation-too-special.txt b/test/invalid/baseline/operation-too-special.txt new file mode 100644 index 00000000..560fa78a --- /dev/null +++ b/test/invalid/baseline/operation-too-special.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Ako`: + getter setter void maki() + ^ Missing return type diff --git a/test/invalid/baseline/promise-nullable.txt b/test/invalid/baseline/promise-nullable.txt new file mode 100644 index 00000000..603fb5d8 --- /dev/null +++ b/test/invalid/baseline/promise-nullable.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface X`: + attribute Promise? + ^ Promise type cannot be nullable diff --git a/test/invalid/baseline/promise-with-extended-attribute.txt b/test/invalid/baseline/promise-with-extended-attribute.txt new file mode 100644 index 00000000..852b0745 --- /dev/null +++ b/test/invalid/baseline/promise-with-extended-attribute.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Foo`: + Promise<[XAttr] DOMString> + ^ Promise type cannot have extended attribute diff --git a/test/invalid/baseline/raises.txt b/test/invalid/baseline/raises.txt new file mode 100644 index 00000000..76fdb938 --- /dev/null +++ b/test/invalid/baseline/raises.txt @@ -0,0 +1,3 @@ +Syntax error at line 5, since `interface Person`: + attribute DOMString name setraises (InvalidName); + ^ Unterminated attribute diff --git a/test/invalid/baseline/readonly-iterable.txt b/test/invalid/baseline/readonly-iterable.txt new file mode 100644 index 00000000..16cd3a2a --- /dev/null +++ b/test/invalid/baseline/readonly-iterable.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface ReadonlyIterable`: + readonly iterable + ^ Missing return type diff --git a/test/invalid/baseline/record-key-with-extended-attribute.txt b/test/invalid/baseline/record-key-with-extended-attribute.txt new file mode 100644 index 00000000..2a7ffb66 --- /dev/null +++ b/test/invalid/baseline/record-key-with-extended-attribute.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Foo`: + void foo(record<[XAttr] DOMString, + ^ Record key cannot have extended attribute diff --git a/test/invalid/baseline/record-key.txt b/test/invalid/baseline/record-key.txt new file mode 100644 index 00000000..0d5ef7f8 --- /dev/null +++ b/test/invalid/baseline/record-key.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Foo`: + void foo(record param + ^ Record key must be a string type diff --git a/test/invalid/baseline/record-single.txt b/test/invalid/baseline/record-single.txt new file mode 100644 index 00000000..8d4a7059 --- /dev/null +++ b/test/invalid/baseline/record-single.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Foo`: + foo(record param); + ^ Missing comma after record key type diff --git a/test/invalid/baseline/scopedname.txt b/test/invalid/baseline/scopedname.txt new file mode 100644 index 00000000..220fe199 --- /dev/null +++ b/test/invalid/baseline/scopedname.txt @@ -0,0 +1,3 @@ +Syntax error at line 2: + typedef gfx::geom:: + ^ No name in typedef diff --git a/test/invalid/baseline/sequenceAsAttribute.txt b/test/invalid/baseline/sequenceAsAttribute.txt new file mode 100644 index 00000000..010243fb --- /dev/null +++ b/test/invalid/baseline/sequenceAsAttribute.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface sequenceAsAttribute`: + attribute sequence invalid; + ^ Attributes cannot accept sequence types diff --git a/test/invalid/baseline/setlike-2types.txt b/test/invalid/baseline/setlike-2types.txt new file mode 100644 index 00000000..62a03b79 --- /dev/null +++ b/test/invalid/baseline/setlike-2types.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface SetLikeTwoTypes`: + setlike; + ^ Unterminated setlike declaration diff --git a/test/invalid/baseline/setter-creator.txt b/test/invalid/baseline/setter-creator.txt new file mode 100644 index 00000000..9ffcb430 --- /dev/null +++ b/test/invalid/baseline/setter-creator.txt @@ -0,0 +1,3 @@ +Syntax error at line 3, since `interface OrderedMap`: + setter creator void set(DOMString name + ^ Invalid operation diff --git a/test/invalid/baseline/spaced-negative-infinity.txt b/test/invalid/baseline/spaced-negative-infinity.txt new file mode 100644 index 00000000..1240347f --- /dev/null +++ b/test/invalid/baseline/spaced-negative-infinity.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface X`: + const float infinity = - Infinity; + ^ No value for const diff --git a/test/invalid/baseline/spaced-variadic.txt b/test/invalid/baseline/spaced-variadic.txt new file mode 100644 index 00000000..82249839 --- /dev/null +++ b/test/invalid/baseline/spaced-variadic.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface X`: + void operation(object . . . args + ^ Unterminated operation diff --git a/test/invalid/baseline/special-omittable.txt b/test/invalid/baseline/special-omittable.txt new file mode 100644 index 00000000..ec50d8a9 --- /dev/null +++ b/test/invalid/baseline/special-omittable.txt @@ -0,0 +1,3 @@ +Syntax error at line 6, since `interface Dictionary`: + omittable getter float getProperty(DOMString + ^ Invalid operation diff --git a/test/invalid/baseline/stray-slash.txt b/test/invalid/baseline/stray-slash.txt new file mode 100644 index 00000000..08680c00 --- /dev/null +++ b/test/invalid/baseline/stray-slash.txt @@ -0,0 +1,3 @@ +Syntax error at line 2: +/ This is not. +^ Unrecognised tokens diff --git a/test/invalid/baseline/stringconstants.txt b/test/invalid/baseline/stringconstants.txt new file mode 100644 index 00000000..86e06c2c --- /dev/null +++ b/test/invalid/baseline/stringconstants.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface Util`: + const DOMString hello = "world"; + ^ No type for const diff --git a/test/invalid/baseline/typedef-nested.txt b/test/invalid/baseline/typedef-nested.txt new file mode 100644 index 00000000..38dbca59 --- /dev/null +++ b/test/invalid/baseline/typedef-nested.txt @@ -0,0 +1,3 @@ +Syntax error at line 14, since `interface Widget`: + typedef sequence + ^ Missing return type diff --git a/test/invalid/baseline/union-dangling-or.txt b/test/invalid/baseline/union-dangling-or.txt new file mode 100644 index 00000000..12be4348 --- /dev/null +++ b/test/invalid/baseline/union-dangling-or.txt @@ -0,0 +1,3 @@ +Syntax error at line 1: + (One or Two or) UnionOr; + ^ No type after open parenthesis or 'or' in union type diff --git a/test/invalid/baseline/union-one.txt b/test/invalid/baseline/union-one.txt new file mode 100644 index 00000000..136a3eaf --- /dev/null +++ b/test/invalid/baseline/union-one.txt @@ -0,0 +1,3 @@ +Syntax error at line 1: +typedef (OnlyOne) UnionOne; + ^ At least two types are expected in a union type but found less diff --git a/test/invalid/baseline/union-zero.txt b/test/invalid/baseline/union-zero.txt new file mode 100644 index 00000000..ded51385 --- /dev/null +++ b/test/invalid/baseline/union-zero.txt @@ -0,0 +1,3 @@ +Syntax error at line 1: +typedef () UnionZero; + ^ No type after open parenthesis or 'or' in union type diff --git a/test/invalid/baseline/unknown-generic.txt b/test/invalid/baseline/unknown-generic.txt new file mode 100644 index 00000000..2b30ecb5 --- /dev/null +++ b/test/invalid/baseline/unknown-generic.txt @@ -0,0 +1,3 @@ +Syntax error at line 2, since `interface FetchEvent`: + ResponsePromise default( + ^ Unsupported generic type ResponsePromise diff --git a/test/invalid/json/array.json b/test/invalid/json/array.json deleted file mode 100644 index 898b2d83..00000000 --- a/test/invalid/json/array.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface LotteryResults`: No name in attribute", - "line": 5 -} diff --git a/test/invalid/json/caller.json b/test/invalid/json/caller.json deleted file mode 100644 index 567fa336..00000000 --- a/test/invalid/json/caller.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface NumberQuadrupler`: Invalid operation", - "line": 6 -} diff --git a/test/invalid/json/dict-required-default.json b/test/invalid/json/dict-required-default.json deleted file mode 100644 index 82b6b2ae..00000000 --- a/test/invalid/json/dict-required-default.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `dictionary Dict`: Required member must not have a default" -, "line": 4 -} diff --git a/test/invalid/json/duplicate-escaped.json b/test/invalid/json/duplicate-escaped.json deleted file mode 100644 index 3b01e7db..00000000 --- a/test/invalid/json/duplicate-escaped.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Iroha`: The name \"Iroha\" of type \"interface\" was already seen", - "line": 2 -} diff --git a/test/invalid/json/duplicate.json b/test/invalid/json/duplicate.json deleted file mode 100644 index 052beb05..00000000 --- a/test/invalid/json/duplicate.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `typedef Test`: The name \"Test\" of type \"typedef\" was already seen", - "line": 3 -} diff --git a/test/invalid/json/enum-bodyless.json b/test/invalid/json/enum-bodyless.json deleted file mode 100644 index 00fd6977..00000000 --- a/test/invalid/json/enum-bodyless.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `enum X`: Bodyless enum", - "line": 1 -} diff --git a/test/invalid/json/enum-empty.json b/test/invalid/json/enum-empty.json deleted file mode 100644 index 734bc67d..00000000 --- a/test/invalid/json/enum-empty.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `enum Empty`: No value in enum", - "line": 1 -} diff --git a/test/invalid/json/enum-wo-comma.json b/test/invalid/json/enum-wo-comma.json deleted file mode 100644 index bfd0b095..00000000 --- a/test/invalid/json/enum-wo-comma.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `enum NoComma`: No comma between enum values", - "line": 1 -} diff --git a/test/invalid/json/enum.json b/test/invalid/json/enum.json deleted file mode 100644 index 073ff6c2..00000000 --- a/test/invalid/json/enum.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `enum foo`: Unexpected value in enum" -, "line": 1 -} diff --git a/test/invalid/json/exception.json b/test/invalid/json/exception.json deleted file mode 100644 index ad9fac6c..00000000 --- a/test/invalid/json/exception.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: Unrecognised tokens", - "line": 4 -} diff --git a/test/invalid/json/extattr-empty-ids.json b/test/invalid/json/extattr-empty-ids.json deleted file mode 100644 index 2a2b1f79..00000000 --- a/test/invalid/json/extattr-empty-ids.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: Expected identifiers but none found", - "line": 1 -} diff --git a/test/invalid/json/id-underscored-number.json b/test/invalid/json/id-underscored-number.json deleted file mode 100644 index 419ed946..00000000 --- a/test/invalid/json/id-underscored-number.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: No name for interface", - "line": 1 -} diff --git a/test/invalid/json/implements.json b/test/invalid/json/implements.json deleted file mode 100644 index 6fc096ea..00000000 --- a/test/invalid/json/implements.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface EventTarget`: Unrecognised tokens", - "line": 14 -} diff --git a/test/invalid/json/implements_and_includes_ws.json b/test/invalid/json/implements_and_includes_ws.json deleted file mode 100644 index ad9fac6c..00000000 --- a/test/invalid/json/implements_and_includes_ws.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: Unrecognised tokens", - "line": 4 -} diff --git a/test/invalid/json/iterable-empty.json b/test/invalid/json/iterable-empty.json deleted file mode 100644 index 779f5857..00000000 --- a/test/invalid/json/iterable-empty.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface X`: Error parsing iterable declaration", - "line": 2 -} diff --git a/test/invalid/json/iterator.json b/test/invalid/json/iterator.json deleted file mode 100644 index e46d653a..00000000 --- a/test/invalid/json/iterator.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface SessionManager`: Invalid operation", - "line": 5 -} diff --git a/test/invalid/json/legacyiterable.json b/test/invalid/json/legacyiterable.json deleted file mode 100644 index 0bfaa8fb..00000000 --- a/test/invalid/json/legacyiterable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface LegacyIterable`: Missing return type", - "line": 2 -} diff --git a/test/invalid/json/maplike-1type.json b/test/invalid/json/maplike-1type.json deleted file mode 100644 index 75e7a35e..00000000 --- a/test/invalid/json/maplike-1type.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface MapLikeOneType`: Missing second type argument in maplike declaration", - "line": 2 -} diff --git a/test/invalid/json/module.json b/test/invalid/json/module.json deleted file mode 100644 index 9c071cdd..00000000 --- a/test/invalid/json/module.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: Unrecognised tokens" -, "line": 2 -} diff --git a/test/invalid/json/namespace-readwrite.json b/test/invalid/json/namespace-readwrite.json deleted file mode 100644 index d2121511..00000000 --- a/test/invalid/json/namespace-readwrite.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `namespace CSS`: Attributes must be readonly in this context", - "line": 2 -} diff --git a/test/invalid/json/no-semicolon-callback.json b/test/invalid/json/no-semicolon-callback.json deleted file mode 100644 index 1db9d14c..00000000 --- a/test/invalid/json/no-semicolon-callback.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `callback interface NoSemicolon`: Missing semicolon after interface", - "line": 5 -} diff --git a/test/invalid/json/no-semicolon.json b/test/invalid/json/no-semicolon.json deleted file mode 100644 index 087532a0..00000000 --- a/test/invalid/json/no-semicolon.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `partial interface NoSemicolon`: Missing semicolon after interface", - "line": 5 -} diff --git a/test/invalid/json/nonnullableany.json b/test/invalid/json/nonnullableany.json deleted file mode 100644 index 8a1f9004..00000000 --- a/test/invalid/json/nonnullableany.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface NonNullable`: Type any cannot be made nullable" -, "line": 2 -} diff --git a/test/invalid/json/nonnullableobjects.json b/test/invalid/json/nonnullableobjects.json deleted file mode 100644 index d470ec94..00000000 --- a/test/invalid/json/nonnullableobjects.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface NonNullable`: Can't nullable more than once", - "line": 4 -} diff --git a/test/invalid/json/operation-too-special.json b/test/invalid/json/operation-too-special.json deleted file mode 100644 index eaa3ddc0..00000000 --- a/test/invalid/json/operation-too-special.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Ako`: Missing return type", - "line": 2 -} diff --git a/test/invalid/json/promise-nullable.json b/test/invalid/json/promise-nullable.json deleted file mode 100644 index ced51faf..00000000 --- a/test/invalid/json/promise-nullable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface X`: Promise type cannot be nullable", - "line": 2 -} diff --git a/test/invalid/json/promise-with-extended-attribute.json b/test/invalid/json/promise-with-extended-attribute.json deleted file mode 100644 index 71212d46..00000000 --- a/test/invalid/json/promise-with-extended-attribute.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Foo`: Promise type cannot have extended attribute", - "line": 2 -} diff --git a/test/invalid/json/raises.json b/test/invalid/json/raises.json deleted file mode 100644 index 3165b874..00000000 --- a/test/invalid/json/raises.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Person`: Unterminated attribute" -, "line": 5 -} diff --git a/test/invalid/json/readonly-iterable.json b/test/invalid/json/readonly-iterable.json deleted file mode 100644 index a571b222..00000000 --- a/test/invalid/json/readonly-iterable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface ReadonlyIterable`: Missing return type", - "line": 2 -} diff --git a/test/invalid/json/record-key-with-extended-attribute.json b/test/invalid/json/record-key-with-extended-attribute.json deleted file mode 100644 index 4002e7fe..00000000 --- a/test/invalid/json/record-key-with-extended-attribute.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Foo`: Record key cannot have extended attribute", - "line": 2 -} diff --git a/test/invalid/json/record-key.json b/test/invalid/json/record-key.json deleted file mode 100644 index 6f1bb99b..00000000 --- a/test/invalid/json/record-key.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Foo`: Record key must be a string type", - "line": 2 -} diff --git a/test/invalid/json/record-single.json b/test/invalid/json/record-single.json deleted file mode 100644 index ece4fb2f..00000000 --- a/test/invalid/json/record-single.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Foo`: Missing comma after record key type", - "line": 2 -} diff --git a/test/invalid/json/scopedname.json b/test/invalid/json/scopedname.json deleted file mode 100644 index 4620d2df..00000000 --- a/test/invalid/json/scopedname.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: No name in typedef" -, "line": 2 -} diff --git a/test/invalid/json/sequenceAsAttribute.json b/test/invalid/json/sequenceAsAttribute.json deleted file mode 100644 index 5b4314a6..00000000 --- a/test/invalid/json/sequenceAsAttribute.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface sequenceAsAttribute`: Attributes cannot accept sequence types" -, "line": 2 -} diff --git a/test/invalid/json/setlike-2types.json b/test/invalid/json/setlike-2types.json deleted file mode 100644 index 2900e1ba..00000000 --- a/test/invalid/json/setlike-2types.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface SetLikeTwoTypes`: Unterminated setlike declaration", - "line": 2 -} diff --git a/test/invalid/json/setter-creator.json b/test/invalid/json/setter-creator.json deleted file mode 100644 index 25decb37..00000000 --- a/test/invalid/json/setter-creator.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface OrderedMap`: Invalid operation", - "line": 3 -} diff --git a/test/invalid/json/spaced-negative-infinity.json b/test/invalid/json/spaced-negative-infinity.json deleted file mode 100644 index 9e5d6180..00000000 --- a/test/invalid/json/spaced-negative-infinity.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface X`: No value for const", - "line": 2 -} diff --git a/test/invalid/json/spaced-variadic.json b/test/invalid/json/spaced-variadic.json deleted file mode 100644 index 0090abee..00000000 --- a/test/invalid/json/spaced-variadic.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface X`: Unterminated operation", - "line": 2 -} diff --git a/test/invalid/json/special-omittable.json b/test/invalid/json/special-omittable.json deleted file mode 100644 index c20b28e0..00000000 --- a/test/invalid/json/special-omittable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Dictionary`: Invalid operation" -, "line": 6 -} diff --git a/test/invalid/json/stray-slash.json b/test/invalid/json/stray-slash.json deleted file mode 100644 index 9c071cdd..00000000 --- a/test/invalid/json/stray-slash.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: Unrecognised tokens" -, "line": 2 -} diff --git a/test/invalid/json/stringconstants.json b/test/invalid/json/stringconstants.json deleted file mode 100644 index 745d6e6e..00000000 --- a/test/invalid/json/stringconstants.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Util`: No type for const" -, "line": 2 -} diff --git a/test/invalid/json/typedef-nested.json b/test/invalid/json/typedef-nested.json deleted file mode 100644 index e1843cec..00000000 --- a/test/invalid/json/typedef-nested.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface Widget`: Missing return type" -, "line": 14 -} diff --git a/test/invalid/json/union-dangling-or.json b/test/invalid/json/union-dangling-or.json deleted file mode 100644 index 68dfd8b2..00000000 --- a/test/invalid/json/union-dangling-or.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: No type after open parenthesis or 'or' in union type", - "line": 1 -} diff --git a/test/invalid/json/union-one.json b/test/invalid/json/union-one.json deleted file mode 100644 index 476403d6..00000000 --- a/test/invalid/json/union-one.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "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/test/invalid/json/union-zero.json b/test/invalid/json/union-zero.json deleted file mode 100644 index 68dfd8b2..00000000 --- a/test/invalid/json/union-zero.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error before parsing any named definition: No type after open parenthesis or 'or' in union type", - "line": 1 -} diff --git a/test/invalid/json/unknown-generic.json b/test/invalid/json/unknown-generic.json deleted file mode 100644 index 3703db3b..00000000 --- a/test/invalid/json/unknown-generic.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "message": "Got an error during or right after parsing `interface FetchEvent`: Unsupported generic type ResponsePromise", - "line": 2 -} diff --git a/test/syntax/json/allowany.json b/test/syntax/baseline/allowany.json similarity index 99% rename from test/syntax/json/allowany.json rename to test/syntax/baseline/allowany.json index 657720c1..fe9f698d 100644 --- a/test/syntax/json/allowany.json +++ b/test/syntax/baseline/allowany.json @@ -196,6 +196,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/attributes.json b/test/syntax/baseline/attributes.json similarity index 99% rename from test/syntax/json/attributes.json rename to test/syntax/baseline/attributes.json index 19dd5875..210c4e18 100644 --- a/test/syntax/json/attributes.json +++ b/test/syntax/baseline/attributes.json @@ -77,6 +77,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/callback.json b/test/syntax/baseline/callback.json similarity index 99% rename from test/syntax/json/callback.json rename to test/syntax/baseline/callback.json index 63d80d98..163d2e2f 100644 --- a/test/syntax/json/callback.json +++ b/test/syntax/baseline/callback.json @@ -226,6 +226,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/constants.json b/test/syntax/baseline/constants.json similarity index 99% rename from test/syntax/json/constants.json rename to test/syntax/baseline/constants.json index 0962b961..c5cdd70d 100644 --- a/test/syntax/json/constants.json +++ b/test/syntax/baseline/constants.json @@ -274,6 +274,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/constructor.json b/test/syntax/baseline/constructor.json similarity index 99% rename from test/syntax/json/constructor.json rename to test/syntax/baseline/constructor.json index 65a0dfbb..3417623a 100644 --- a/test/syntax/json/constructor.json +++ b/test/syntax/baseline/constructor.json @@ -196,6 +196,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/dictionary-inherits.json b/test/syntax/baseline/dictionary-inherits.json similarity index 99% rename from test/syntax/json/dictionary-inherits.json rename to test/syntax/baseline/dictionary-inherits.json index 923c3745..c2581c46 100644 --- a/test/syntax/json/dictionary-inherits.json +++ b/test/syntax/baseline/dictionary-inherits.json @@ -166,6 +166,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/dictionary.json b/test/syntax/baseline/dictionary.json similarity index 99% rename from test/syntax/json/dictionary.json rename to test/syntax/baseline/dictionary.json index 36c74ad5..6a05235e 100644 --- a/test/syntax/json/dictionary.json +++ b/test/syntax/baseline/dictionary.json @@ -274,6 +274,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/documentation-dos.json b/test/syntax/baseline/documentation-dos.json similarity index 97% rename from test/syntax/json/documentation-dos.json rename to test/syntax/baseline/documentation-dos.json index b6e8ce17..8e630f3c 100644 --- a/test/syntax/json/documentation-dos.json +++ b/test/syntax/baseline/documentation-dos.json @@ -17,6 +17,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/documentation.json b/test/syntax/baseline/documentation.json similarity index 97% rename from test/syntax/json/documentation.json rename to test/syntax/baseline/documentation.json index 46f68e2c..e5b79847 100644 --- a/test/syntax/json/documentation.json +++ b/test/syntax/baseline/documentation.json @@ -17,6 +17,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/enum.json b/test/syntax/baseline/enum.json similarity index 99% rename from test/syntax/json/enum.json rename to test/syntax/baseline/enum.json index 7db6a1d6..1a2b0e5e 100644 --- a/test/syntax/json/enum.json +++ b/test/syntax/baseline/enum.json @@ -248,6 +248,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/equivalent-decl.json b/test/syntax/baseline/equivalent-decl.json similarity index 99% rename from test/syntax/json/equivalent-decl.json rename to test/syntax/baseline/equivalent-decl.json index 0cc64fa3..fc07bc41 100644 --- a/test/syntax/json/equivalent-decl.json +++ b/test/syntax/baseline/equivalent-decl.json @@ -573,6 +573,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/escaped-name.json b/test/syntax/baseline/escaped-name.json similarity index 95% rename from test/syntax/json/escaped-name.json rename to test/syntax/baseline/escaped-name.json index 0bd7d023..1c327b75 100644 --- a/test/syntax/json/escaped-name.json +++ b/test/syntax/baseline/escaped-name.json @@ -17,6 +17,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/exception-inheritance.json b/test/syntax/baseline/exception-inheritance.json similarity index 100% rename from test/syntax/json/exception-inheritance.json rename to test/syntax/baseline/exception-inheritance.json diff --git a/test/syntax/json/extended-attributes.json b/test/syntax/baseline/extended-attributes.json similarity index 99% rename from test/syntax/json/extended-attributes.json rename to test/syntax/baseline/extended-attributes.json index 37713116..454006c1 100644 --- a/test/syntax/json/extended-attributes.json +++ b/test/syntax/baseline/extended-attributes.json @@ -478,6 +478,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/generic.json b/test/syntax/baseline/generic.json similarity index 99% rename from test/syntax/json/generic.json rename to test/syntax/baseline/generic.json index e2360e82..3363d280 100644 --- a/test/syntax/json/generic.json +++ b/test/syntax/baseline/generic.json @@ -386,6 +386,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/getter-setter.json b/test/syntax/baseline/getter-setter.json similarity index 99% rename from test/syntax/json/getter-setter.json rename to test/syntax/baseline/getter-setter.json index 36ae8536..d35321bc 100644 --- a/test/syntax/json/getter-setter.json +++ b/test/syntax/baseline/getter-setter.json @@ -205,6 +205,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/identifier-qualified-names.json b/test/syntax/baseline/identifier-qualified-names.json similarity index 99% rename from test/syntax/json/identifier-qualified-names.json rename to test/syntax/baseline/identifier-qualified-names.json index 8fe379c6..5e4e7d14 100644 --- a/test/syntax/json/identifier-qualified-names.json +++ b/test/syntax/baseline/identifier-qualified-names.json @@ -326,6 +326,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/indexed-properties.json b/test/syntax/baseline/indexed-properties.json similarity index 99% rename from test/syntax/json/indexed-properties.json rename to test/syntax/baseline/indexed-properties.json index 5a4ee44c..ae6ada1a 100644 --- a/test/syntax/json/indexed-properties.json +++ b/test/syntax/baseline/indexed-properties.json @@ -516,6 +516,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/inherits-getter.json b/test/syntax/baseline/inherits-getter.json similarity index 99% rename from test/syntax/json/inherits-getter.json rename to test/syntax/baseline/inherits-getter.json index 66bf86c4..d10f4e22 100644 --- a/test/syntax/json/inherits-getter.json +++ b/test/syntax/baseline/inherits-getter.json @@ -191,6 +191,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/interface-inherits.json b/test/syntax/baseline/interface-inherits.json similarity index 99% rename from test/syntax/json/interface-inherits.json rename to test/syntax/baseline/interface-inherits.json index ced10527..f716ee17 100644 --- a/test/syntax/json/interface-inherits.json +++ b/test/syntax/baseline/interface-inherits.json @@ -148,6 +148,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/iterable.json b/test/syntax/baseline/iterable.json similarity index 99% rename from test/syntax/json/iterable.json rename to test/syntax/baseline/iterable.json index 7f8eaf9a..06350ad8 100644 --- a/test/syntax/json/iterable.json +++ b/test/syntax/baseline/iterable.json @@ -170,6 +170,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/iterator.json b/test/syntax/baseline/iterator.json similarity index 100% rename from test/syntax/json/iterator.json rename to test/syntax/baseline/iterator.json diff --git a/test/syntax/json/maplike.json b/test/syntax/baseline/maplike.json similarity index 99% rename from test/syntax/json/maplike.json rename to test/syntax/baseline/maplike.json index a8908067..d5bde5c5 100644 --- a/test/syntax/json/maplike.json +++ b/test/syntax/baseline/maplike.json @@ -226,6 +226,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/mixin.json b/test/syntax/baseline/mixin.json similarity index 99% rename from test/syntax/json/mixin.json rename to test/syntax/baseline/mixin.json index bbf5ef74..05602303 100644 --- a/test/syntax/json/mixin.json +++ b/test/syntax/baseline/mixin.json @@ -137,6 +137,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/namedconstructor.json b/test/syntax/baseline/namedconstructor.json similarity index 99% rename from test/syntax/json/namedconstructor.json rename to test/syntax/baseline/namedconstructor.json index 95881ab0..17618fe7 100644 --- a/test/syntax/json/namedconstructor.json +++ b/test/syntax/baseline/namedconstructor.json @@ -101,6 +101,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/namespace.json b/test/syntax/baseline/namespace.json similarity index 99% rename from test/syntax/json/namespace.json rename to test/syntax/baseline/namespace.json index 3333eda0..bd77feda 100644 --- a/test/syntax/json/namespace.json +++ b/test/syntax/baseline/namespace.json @@ -265,6 +265,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/nointerfaceobject.json b/test/syntax/baseline/nointerfaceobject.json similarity index 99% rename from test/syntax/json/nointerfaceobject.json rename to test/syntax/baseline/nointerfaceobject.json index 31bb73a9..a75b39b5 100644 --- a/test/syntax/json/nointerfaceobject.json +++ b/test/syntax/baseline/nointerfaceobject.json @@ -101,6 +101,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/nullable.json b/test/syntax/baseline/nullable.json similarity index 99% rename from test/syntax/json/nullable.json rename to test/syntax/baseline/nullable.json index 1d41ed15..6806a2c9 100644 --- a/test/syntax/json/nullable.json +++ b/test/syntax/baseline/nullable.json @@ -100,6 +100,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/nullableobjects.json b/test/syntax/baseline/nullableobjects.json similarity index 99% rename from test/syntax/json/nullableobjects.json rename to test/syntax/baseline/nullableobjects.json index 8163c1bb..a7ab3d48 100644 --- a/test/syntax/json/nullableobjects.json +++ b/test/syntax/baseline/nullableobjects.json @@ -180,6 +180,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/operation-optional-arg.json b/test/syntax/baseline/operation-optional-arg.json similarity index 99% rename from test/syntax/json/operation-optional-arg.json rename to test/syntax/baseline/operation-optional-arg.json index 92c77d71..aa8ef295 100644 --- a/test/syntax/json/operation-optional-arg.json +++ b/test/syntax/baseline/operation-optional-arg.json @@ -180,6 +180,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/overloading.json b/test/syntax/baseline/overloading.json similarity index 99% rename from test/syntax/json/overloading.json rename to test/syntax/baseline/overloading.json index 3dc82815..99bca81e 100644 --- a/test/syntax/json/overloading.json +++ b/test/syntax/baseline/overloading.json @@ -590,6 +590,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/overridebuiltins.json b/test/syntax/baseline/overridebuiltins.json similarity index 99% rename from test/syntax/json/overridebuiltins.json rename to test/syntax/baseline/overridebuiltins.json index d8791fd6..848fe536 100644 --- a/test/syntax/json/overridebuiltins.json +++ b/test/syntax/baseline/overridebuiltins.json @@ -134,6 +134,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/partial-interface.json b/test/syntax/baseline/partial-interface.json similarity index 99% rename from test/syntax/json/partial-interface.json rename to test/syntax/baseline/partial-interface.json index 4b9c93c1..9758f788 100644 --- a/test/syntax/json/partial-interface.json +++ b/test/syntax/baseline/partial-interface.json @@ -92,6 +92,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/primitives.json b/test/syntax/baseline/primitives.json similarity index 99% rename from test/syntax/json/primitives.json rename to test/syntax/baseline/primitives.json index c03b2ab5..fdaef5cc 100644 --- a/test/syntax/json/primitives.json +++ b/test/syntax/baseline/primitives.json @@ -515,6 +515,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/promise-void.json b/test/syntax/baseline/promise-void.json similarity index 99% rename from test/syntax/json/promise-void.json rename to test/syntax/baseline/promise-void.json index 761268a6..95af8f97 100644 --- a/test/syntax/json/promise-void.json +++ b/test/syntax/baseline/promise-void.json @@ -68,6 +68,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/prototyperoot.json b/test/syntax/baseline/prototyperoot.json similarity index 98% rename from test/syntax/json/prototyperoot.json rename to test/syntax/baseline/prototyperoot.json index ff622a8e..a1786f57 100644 --- a/test/syntax/json/prototyperoot.json +++ b/test/syntax/baseline/prototyperoot.json @@ -68,6 +68,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/putforwards.json b/test/syntax/baseline/putforwards.json similarity index 99% rename from test/syntax/json/putforwards.json rename to test/syntax/baseline/putforwards.json index 714bdb34..fd1b77c0 100644 --- a/test/syntax/json/putforwards.json +++ b/test/syntax/baseline/putforwards.json @@ -103,6 +103,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/record.json b/test/syntax/baseline/record.json similarity index 99% rename from test/syntax/json/record.json rename to test/syntax/baseline/record.json index 7b2e9b66..8e73911a 100644 --- a/test/syntax/json/record.json +++ b/test/syntax/baseline/record.json @@ -455,6 +455,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/reg-operations.json b/test/syntax/baseline/reg-operations.json similarity index 99% rename from test/syntax/json/reg-operations.json rename to test/syntax/baseline/reg-operations.json index 29375ccf..124efd3d 100644 --- a/test/syntax/json/reg-operations.json +++ b/test/syntax/baseline/reg-operations.json @@ -294,6 +294,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/replaceable.json b/test/syntax/baseline/replaceable.json similarity index 99% rename from test/syntax/json/replaceable.json rename to test/syntax/baseline/replaceable.json index 0c9ae41c..5da89166 100644 --- a/test/syntax/json/replaceable.json +++ b/test/syntax/baseline/replaceable.json @@ -103,6 +103,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/sequence.json b/test/syntax/baseline/sequence.json similarity index 99% rename from test/syntax/json/sequence.json rename to test/syntax/baseline/sequence.json index 0d181b02..ca7b1713 100644 --- a/test/syntax/json/sequence.json +++ b/test/syntax/baseline/sequence.json @@ -279,6 +279,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/setlike.json b/test/syntax/baseline/setlike.json similarity index 99% rename from test/syntax/json/setlike.json rename to test/syntax/baseline/setlike.json index 2955ed36..195bbe8d 100644 --- a/test/syntax/json/setlike.json +++ b/test/syntax/baseline/setlike.json @@ -155,6 +155,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/static.json b/test/syntax/baseline/static.json similarity index 99% rename from test/syntax/json/static.json rename to test/syntax/baseline/static.json index f28696e1..deea6ffd 100644 --- a/test/syntax/json/static.json +++ b/test/syntax/baseline/static.json @@ -277,6 +277,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/stringifier-attribute.json b/test/syntax/baseline/stringifier-attribute.json similarity index 99% rename from test/syntax/json/stringifier-attribute.json rename to test/syntax/baseline/stringifier-attribute.json index c92671f5..9f39c7ad 100644 --- a/test/syntax/json/stringifier-attribute.json +++ b/test/syntax/baseline/stringifier-attribute.json @@ -97,6 +97,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/stringifier-custom.json b/test/syntax/baseline/stringifier-custom.json similarity index 99% rename from test/syntax/json/stringifier-custom.json rename to test/syntax/baseline/stringifier-custom.json index 86760d05..c79a79e5 100644 --- a/test/syntax/json/stringifier-custom.json +++ b/test/syntax/baseline/stringifier-custom.json @@ -158,6 +158,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/stringifier.json b/test/syntax/baseline/stringifier.json similarity index 99% rename from test/syntax/json/stringifier.json rename to test/syntax/baseline/stringifier.json index 85a38b6c..10c6b9dc 100644 --- a/test/syntax/json/stringifier.json +++ b/test/syntax/baseline/stringifier.json @@ -81,6 +81,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/treatasnull.json b/test/syntax/baseline/treatasnull.json similarity index 99% rename from test/syntax/json/treatasnull.json rename to test/syntax/baseline/treatasnull.json index 5a7ea459..3d3c3de6 100644 --- a/test/syntax/json/treatasnull.json +++ b/test/syntax/baseline/treatasnull.json @@ -161,6 +161,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/treatasundefined.json b/test/syntax/baseline/treatasundefined.json similarity index 99% rename from test/syntax/json/treatasundefined.json rename to test/syntax/baseline/treatasundefined.json index c3664551..40e7cfa5 100644 --- a/test/syntax/json/treatasundefined.json +++ b/test/syntax/baseline/treatasundefined.json @@ -161,6 +161,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/typedef-union.json b/test/syntax/baseline/typedef-union.json similarity index 99% rename from test/syntax/json/typedef-union.json rename to test/syntax/baseline/typedef-union.json index 1d3c4833..dbfc158a 100644 --- a/test/syntax/json/typedef-union.json +++ b/test/syntax/baseline/typedef-union.json @@ -98,6 +98,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/typedef.json b/test/syntax/baseline/typedef.json similarity index 99% rename from test/syntax/json/typedef.json rename to test/syntax/baseline/typedef.json index aacaac16..20e10867 100644 --- a/test/syntax/json/typedef.json +++ b/test/syntax/baseline/typedef.json @@ -411,6 +411,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/typesuffixes.json b/test/syntax/baseline/typesuffixes.json similarity index 99% rename from test/syntax/json/typesuffixes.json rename to test/syntax/baseline/typesuffixes.json index 39702b93..5258b77d 100644 --- a/test/syntax/json/typesuffixes.json +++ b/test/syntax/baseline/typesuffixes.json @@ -107,6 +107,7 @@ }, { "type": "eof", + "value": "", "trivia": "\n" } ] diff --git a/test/syntax/json/uniontype.json b/test/syntax/baseline/uniontype.json similarity index 99% rename from test/syntax/json/uniontype.json rename to test/syntax/baseline/uniontype.json index 4763abb4..9320fc3c 100644 --- a/test/syntax/json/uniontype.json +++ b/test/syntax/baseline/uniontype.json @@ -251,6 +251,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/syntax/json/variadic-operations.json b/test/syntax/baseline/variadic-operations.json similarity index 99% rename from test/syntax/json/variadic-operations.json rename to test/syntax/baseline/variadic-operations.json index 1663fcad..5cfc1f67 100644 --- a/test/syntax/json/variadic-operations.json +++ b/test/syntax/baseline/variadic-operations.json @@ -181,6 +181,7 @@ }, { "type": "eof", + "value": "", "trivia": "" } ] diff --git a/test/util/acquire.js b/test/util/acquire.js index 6f37dd60..8126d925 100644 --- a/test/util/acquire.js +++ b/test/util/acquire.js @@ -4,5 +4,9 @@ const { collect } = require("./collect"); const fs = require("fs"); for (const test of collect("syntax")) { - fs.writeFileSync(test.jsonPath, `${JSON.stringify(test.ast, null, 4)}\n`) + fs.writeFileSync(test.baselinePath, `${JSON.stringify(test.ast, null, 4)}\n`); +} + +for (const test of collect("invalid", { expectError: true, raw: true })) { + fs.writeFileSync(test.baselinePath, `${test.error.message}\n`); } diff --git a/test/util/collect.js b/test/util/collect.js index b29e07ee..7822ba41 100644 --- a/test/util/collect.js +++ b/test/util/collect.js @@ -9,7 +9,7 @@ const jdp = require("jsondiffpatch"); * Collects test items from the specified directory * @param {string} base */ -function* collect(base, { expectError } = {}) { +function* collect(base, { expectError, raw } = {}) { base = pth.join(__dirname, "..", base); const dir = pth.join(base, "idl"); const idls = fs.readdirSync(dir) @@ -17,40 +17,43 @@ function* collect(base, { expectError } = {}) { .map(it => pth.join(dir, it)); for (const path of idls) { - const optFile = pth.join(base, "opt", pth.basename(path)).replace(".widl", ".json"); - let opt; - if (fs.existsSync(optFile)) - opt = JSON.parse(fs.readFileSync(optFile, "utf8")); - try { const text = fs.readFileSync(path, "utf8").replace(/\r\n/g, "\n"); - const ast = wp.parse(text, opt); - yield new TestItem({ text, ast, path, opt }); + const ast = wp.parse(text); + yield new TestItem({ text, ast, path, raw }); } catch (error) { if (expectError) { - yield new TestItem({ path, error }); + yield new TestItem({ path, error, raw }); } else { throw error; } } } -}; +} class TestItem { - constructor({ text, ast, path, error, opt }) { + constructor({ text, ast, path, error, raw }) { this.text = text; this.ast = ast; this.path = path; this.error = error; - this.opt = opt; - this.jsonPath = pth.join(pth.dirname(path), "../json", pth.basename(path).replace(".widl", ".json")); + const fileExtension = raw ? ".txt" : ".json"; + this.baselinePath = pth.join( + pth.dirname(path), + "../baseline", + pth.basename(path).replace(".widl", fileExtension) + ); } readJSON() { - return JSON.parse(fs.readFileSync(this.jsonPath, "utf8")); + return JSON.parse(this.readText()); + } + + readText() { + return fs.readFileSync(this.baselinePath, "utf8").replace(/\r/g, ""); } diff(target = this.readJSON()) {