@babel/parser error recovery#10363
Conversation
packages/babel-parser/test/fixtures/core/scope/undecl-export-if/output.json
Show resolved
Hide resolved
| "SyntaxError: Invalid regular expression flag (1:19)", | ||
| "SyntaxError: Invalid regular expression flag (1:20)", | ||
| "SyntaxError: Invalid regular expression flag (1:21)", | ||
| "SyntaxError: Invalid regular expression flag (1:22)" |
There was a problem hiding this comment.
The input file is var x = /[P QR]/\u0067. It throws one error for each character of \u0067, but I think that it is ok?
|
Before reviewing this PR: I'm slowly going through all the 2000 test files changed, to check if all of them are correct. I will leave comments for significant tests. |
nicolo-ribaudo
left a comment
There was a problem hiding this comment.
Progress: 280/2054
| }, | ||
| "errors": [ | ||
| "SyntaxError: Invalid left-hand side in assignment expression (1:0)", | ||
| "SyntaxError: Invalid left-hand side in assignment expression (1:0)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Invalid left-hand side in for-in statement (1:5)", | ||
| "SyntaxError: Invalid left-hand side in for-in statement (1:5)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Expecting Unicode escape sequence \\uXXXX (1:1)", | ||
| "SyntaxError: Expecting Unicode escape sequence \\uXXXX (1:2)" |
There was a problem hiding this comment.
This is reported twice correctly, because the input file is
\\| { | ||
| "throws": "Bad character escape sequence (1:3)" | ||
| } | ||
| "throws": "Unterminated string constant (1:0)" |
There was a problem hiding this comment.
This change is ok, because the input file is
"\uTODO: For tests which throw, also test the error that is generated without the errorRecovery option. For tests which don't throw this isn't needed, since the thrown error will always be the first one in the errors array.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Binding 'eval' in strict mode (1:41)", | ||
| "SyntaxError: Binding 'eval' in strict mode (1:41)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Octal literal in strict mode (1:35)", | ||
| "SyntaxError: Octal literal in strict mode (1:35)" |
There was a problem hiding this comment.
This is duplicated. The input code is
function hello() { 'use strict'; "\1"; }| } | ||
| }, | ||
| "errors": [ | ||
| "SyntaxError: Legacy octal literals are not allowed in strict mode (1:33)", |
There was a problem hiding this comment.
Duplicated.
function hello() { 'use strict'; 021; }| }, | ||
| "errors": [ | ||
| "SyntaxError: Unexpected reserved word 'interface' (1:37)", | ||
| "SyntaxError: Binding 'interface' in strict mode (1:37)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| "errors": [ | ||
| "SyntaxError: Unexpected reserved word 'static' (1:23)", | ||
| "SyntaxError: Binding 'static' in strict mode (1:23)", | ||
| "SyntaxError: Binding 'static' in strict mode (1:23)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Only '=' operator can be used for specifying default value. (1:3)", | ||
| "SyntaxError: Invalid left-hand side in array destructuring pattern (1:2)" |
There was a problem hiding this comment.
This second error should be removed
|
Here is a helper script (executed at project root) to output those fixtures whose errors.length > 1, I wish it could help const glob = require("glob");
const fs = require("fs");
glob("packages/babel-parser/test/fixtures/**/output.json", (er, files) => {
if (er) {
console.error(er);
return;
}
files.forEach((file) => {
fs.readFile(file, (err, data) => {
const json = JSON.parse(data);
if (json.errors && json.errors.length > 1) {
console.log(file);
}
})
})
}) |
| }, | ||
| "errors": [ | ||
| "SyntaxError: Escape sequence in keyword export (1:15)", | ||
| "SyntaxError: Unexpected keyword 'export' (1:4)" |
There was a problem hiding this comment.
This error should be removed.
Consider change test case to
expor\u{74} default 123;options.json
{
"sourceType": "module"
}There was a problem hiding this comment.
I think that it isn't what this test is for. Since it is in the identifiers folder, I think that here we are testing that export can't be used as an identifier, even if it contains escape sequences.
There was a problem hiding this comment.
The identifiers/invalid-escape-seq-if is actually testing invalid escape only:
\u0069\u{66} (true) {}We may create new test cases invalid-escape-seq alongside identifiers so we can test different error types.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Escape sequence in keyword import (1:40)", | ||
| "SyntaxError: Unexpected keyword 'import' (1:4)" |
There was a problem hiding this comment.
This error should be removed.
Consider change test case to
\u{69}\u{6d}\u{70}\u{6f}\u{72}\u{74} foo from "foo";options.json
{
"sourceType": "module"
}
| }, | ||
| "errors": [ | ||
| "SyntaxError: The only valid meta property for new is new.target (1:4)", | ||
| "SyntaxError: new.target can only be used in functions (1:0)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
Thanks for your script! I have modified it so that it reports
Codeconst glob = require("glob");
const pfy = require("util").promisify;
const preq = (pkg, method) => pfy(require(pkg)[method]);
const readFile = preq("fs", "readFile");
const exists = preq("fs", "exists");
const exec = preq("child_process", "exec");
const messageUpdates = [
{
old: "Invalid or unexpected token",
cur: "A numeric separator is only allowed between two digits",
},
];
glob("packages/babel-parser/test/fixtures/**/input.*", async (er, files) => {
if (er) {
console.error(er);
return;
}
const result = {
multiple: [],
different: [],
throws: [],
input: [],
};
await Promise.all(
files.map(async file => {
const output = file.replace(/input\.[a-z]+$/, "output.json");
const options = file.replace(/input\.[a-z]+$/, "options.json");
try {
if (await exists(output)) {
const { errors } = JSON.parse(await readFile(output));
if (!errors || errors.length === 0) return;
if (errors.length > 1) {
result.multiple.push(file);
return;
}
const { throws } = JSON.parse(
(await exec(`git show master:${options}`)).stdout
);
const error = errors[0].replace("SyntaxError: ", "");
const updated = messageUpdates.some(
({ old, cur }) => throws.includes(old) && error.includes(cur)
);
if (error !== throws && !updated) {
result.different.push(file);
return;
}
} else {
const data = await Promise.all([
readFile(options),
exec(`git show master:${options}`),
]);
const { throws } = JSON.parse(data[0]);
const { throws: oldThrows } = JSON.parse(data[1].stdout);
if (throws !== oldThrows) {
result.throws.push(file);
return;
}
}
const data = await Promise.all([
readFile(file),
exec(`git show master:${file}`),
]);
if (data[0].toString() !== data[1].stdout.toString()) {
result.input.push(file);
}
} catch (e) {
console.error(file, e);
process.exit();
}
})
);
console.log("**The following tests have more than one error:**");
console.log(list(result.multiple));
console.log("\n");
console.log("**The following tests generated a different error:**");
console.log(list(result.different));
console.log("\n");
console.log("**The following tests threw a different error:**");
console.log(list(result.throws));
console.log("\n");
console.log("**The following input files had to be changed:**");
console.log(list(result.input));
});
function list(arr) {
return arr
.sort()
.map(x => ` - [ ] \`${x}\``)
.join("\n");
}I will track review progress, based on the output of this script, in the PR description. |
| }, | ||
| "errors": [ | ||
| "SyntaxError: Invalid left-hand side in assignment expression (1:1)", | ||
| "SyntaxError: Invalid left-hand side in array destructuring pattern (1:1)" |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| }, | ||
| "errors": [ | ||
| "SyntaxError: Assigning to 'eval' in strict mode (1:15)", | ||
| "SyntaxError: Binding 'eval' in strict mode (1:15)" |
There was a problem hiding this comment.
This error should be deduplicated.
Input code:
"use strict"; (eval = 10) => 42It might be hard to do, because we are first parsing eval = 10 as an assignment expression, and then converting it to a paremeter later when we find =>
6664b40 to
fd9ca7c
Compare
| }, | ||
| "errors": [ | ||
| "SyntaxError: Yield cannot be used as name inside a generator function (2:3)", | ||
| "SyntaxError: Binding invalid left-hand side in function paramter list (2:3)" |
There was a problem hiding this comment.
This should be deduplicated.
Input code:
function* fn() {
(yield fn) => {};
}| }, | ||
| "errors": [ | ||
| "SyntaxError: Dynamic imports require a parameter: import('a.js') (2:9)", | ||
| "SyntaxError: The only valid meta property for import is import.meta (2:16)" |
There was a problem hiding this comment.
I like this double error, since it hints about the two possible interpretations.
Input code:
function failsParse() {
return import.then();
}|
@nicolo-ribaudo Interesting feature!! 👍 What about the lexer? Code like this BTW. it should be possible to recover from all errors if you either 1) return to statement level if invalid expression or 2) Insert a dummy AST node. I started to experiment with this myself and just done with a lexer that recover just fine, so I can give you ideas if you need them :) |
|
Thanks for these insights! Since this PR is already really big and will be a pain to review, I wanted to only avoid "easy" parser errors for now. I'll make more and more errors recoverable in future iterations.
If it's open source I'd love to see it! |
|
@nicolo-ribaudo My lexer recovery code can be seen here. Just a WIP for now :) |
|
Thanks! I won't have time to update this PR in the following, but I'll try to take a look at yours. |
|
@nicolo-ribaudo I'm more or less done with my lexer now in case you plan to take a look. It's located here. It recover from all errors as seen in this tests. |
11f1fc9 to
d0c330a
Compare
|
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/11425/ |
|
Build successful! You can test your changes in the REPL here: https://babeljs.io/repl/build/11563/ |
98fa30a to
d9a3f2b
Compare
|
✔️ I added the last 5 commits during the review of this PR |
Note for reviewers: #10363 (comment)
OLD MESSAGE: I'm manually reviewing all the tests with a different error. You can find the script I used to generate this list at #10363 (comment).
Review progress
The following tests have more than one error:
packages/babel-parser/test/fixtures/core/scope/undecl-export-if/input.jspackages/babel-parser/test/fixtures/core/uncategorised/108/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/core/uncategorised/366/input.jspackages/babel-parser/test/fixtures/core/uncategorised/446/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/core/uncategorised/499/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/core/uncategorised/500/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/core/uncategorised/547/input.jspackages/babel-parser/test/fixtures/core/uncategorised/548/input.jspackages/babel-parser/test/fixtures/es2015/destructuring/error-operator-for-default/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/es2015/identifiers/invalid-escape-seq-const/input.jspackages/babel-parser/test/fixtures/es2015/identifiers/invalid-escape-seq-export/input.jspackages/babel-parser/test/fixtures/es2015/identifiers/invalid-escape-seq-import/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-export-default-and-export-as-default/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring10/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring11/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring12/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring13/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring14/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring15/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring16/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring17/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring18/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring19/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring2/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring3/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring4/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring5/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring6/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring7/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring8/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export-destructuring9/input.jspackages/babel-parser/test/fixtures/es2015/modules/duplicate-named-export/input.jspackages/babel-parser/test/fixtures/es2015/shorthand/2/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/233/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/234/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/242/input.js@babel/parser error recovery #10363packages/babel-parser/test/fixtures/es2015/uncategorised/252/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/291/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/333/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/344/input.jspackages/babel-parser/test/fixtures/es2015/yield/parameter-default-inside-arrow-inside-generator-5/input.jspackages/babel-parser/test/fixtures/es2015/yield/parameter-name-arrow-inside-generator-1/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/es2015/yield/parameter-name-arrow-inside-generator-2/input.jspackages/babel-parser/test/fixtures/es2015/yield/parameter-name-arrow-inside-generator-3/input.jspackages/babel-parser/test/fixtures/es2015/yield/yield-star-parameter-default-inside-generator/input.jspackages/babel-parser/test/fixtures/es2018/object-rest-spread/11/input.jspackages/babel-parser/test/fixtures/es2018/object-rest-spread/12/input.jspackages/babel-parser/test/fixtures/es2018/object-rest-spread/13/input.jspackages/babel-parser/test/fixtures/es2018/object-rest-spread/14/input.jspackages/babel-parser/test/fixtures/es2018/object-rest-spread/15/input.jspackages/babel-parser/test/fixtures/esprima/es2015-export-declaration/invalid-export-named-default/input.jspackages/babel-parser/test/fixtures/esprima/es2015-identifier/invalid_escaped_surrogate_pairs/input.jspackages/babel-parser/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameter/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/esprima/es2015-yield/invalid-yield-generator-arrow-parameters/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0041/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0042/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0043/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0044/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0087/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0099/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0217/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0218/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0222/input.jspackages/babel-parser/test/fixtures/experimental/dynamic-import/direct-calls-only/input.js@babel/parser error recovery #10363 (comment)packages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-102/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-103/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-113/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-114/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-115/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-118/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-120/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-123/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-126/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-127/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-13/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-137/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-138/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-139/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-14/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-142/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-144/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-147/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-15/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-18/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-2/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-20/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-23/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-25/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-3/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-30/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-31/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-41/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-42/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-43/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-46/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-48/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-51/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-54/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-55/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-65/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-66/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-67/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-70/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-72/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-75/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-78/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-79/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-89/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-90/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-91/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-94/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-96/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-99/input.jspackages/babel-parser/test/fixtures/experimental/partial-application/in-SuperCall/input.jspackages/babel-parser/test/fixtures/experimental/partial-application/in-new/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-do-while-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-for-await-of-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-for-classic-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-for-in-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-for-of-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-while-loop,-outer-topic-reference-in-loop-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-topic-style,-unbound-topic,-do-expression,-with-statement,-outer-topic-reference-in-with-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-unbound-topic,-inner-class-in-pipeline-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-unbound-topic,-inner-function-in-pipeline-body/input.jspackages/babel-parser/test/fixtures/experimental/pipeline-operator/proposal-smart-error,-unbound-topic,-pipeline-head-in-inner-function-in-pipeline-body/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects3/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects4/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects6/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects7/input.jspackages/babel-parser/test/fixtures/flow/typeapp-call/underscore_is_illegal_type_param_name/input.jsThe following tests generated a different error:
packages/babel-parser/test/fixtures/es2015/meta-properties/new-invalid-prop/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/201/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/205/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/209/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/210/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/214/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/215/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/221/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/251/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/284/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/37/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/395/input.jspackages/babel-parser/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern-invalid-member-expr/input.jspackages/babel-parser/test/fixtures/esprima/es2015-arrow-function/object-binding-pattern-invalid-nested-param/input.jspackages/babel-parser/test/fixtures/esprima/es2015-super-property/invalid_super_not_inside_function/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0015/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0020/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0021/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0025/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0026/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0028/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0033/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0034/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0098/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0163/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0165/input.jspackages/babel-parser/test/fixtures/experimental/decorators-2/no-constructor-decorators/input.jspackages/babel-parser/test/fixtures/experimental/decorators/no-constructor-decorators/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects1/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects2/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_disallowed_in_non_objects5/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_forbidden_in_exact/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_must_appear_last/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_object_invalid1/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_object_invalid2/input.jspackages/babel-parser/test/fixtures/flow/explicit-inexact-object/explicit_inexact_object_invalid3/input.jspackages/babel-parser/test/fixtures/flow/predicates/4/input.jspackages/babel-parser/test/fixtures/flow/regression/issue-58-failing-1/input.jspackages/babel-parser/test/fixtures/flow/regression/issue-58-failing-2/input.jspackages/babel-parser/test/fixtures/flow/regression/issue-58-failing-3/input.jspackages/babel-parser/test/fixtures/flow/regression/issue-58-failing-4/input.jsThe following tests threw a different error:
packages/babel-parser/test/fixtures/core/uncategorised/347/input.jspackages/babel-parser/test/fixtures/core/uncategorised/453/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/216/input.jspackages/babel-parser/test/fixtures/es2015/yield/in-class-heritage/input.jspackages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.jspackages/babel-parser/test/fixtures/es2017/async-functions/invalid-escape-await/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0002/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0048/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-27/input.jspackages/babel-parser/test/fixtures/flow/regression/issue-58-ambiguous/input.jspackages/babel-parser/test/fixtures/typescript/variable-declarator/definite-assignment-not-allowed/input.tsThe following input files had to be changed:
packages/babel-parser/test/fixtures/es2015/destructuring/binding-this/input.jspackages/babel-parser/test/fixtures/es2015/generators/invalid-escape-yield/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/125/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/222/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/223/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/232/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/233/input.jspackages/babel-parser/test/fixtures/es2015/uncategorised/234/input.jspackages/babel-parser/test/fixtures/esprima/es2015-destructuring-assignment-object-pattern/invalid-pattern-with-method/input.jspackages/babel-parser/test/fixtures/esprima/expression-primary-array/migrated_0012/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0162/input.jspackages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0169/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-52/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-53/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-56/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-57/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-58/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-59/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-60/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-61/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-62/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-63/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-64/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-68/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-69/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-71/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-73/input.jspackages/babel-parser/test/fixtures/experimental/numeric-separator/invalid-74/input.js