diff --git a/packages/babel-parser/src/parser/lval.js b/packages/babel-parser/src/parser/lval.js index 40067c19b1f2..13b4b6b42555 100644 --- a/packages/babel-parser/src/parser/lval.js +++ b/packages/babel-parser/src/parser/lval.js @@ -1,5 +1,6 @@ // @flow +/*:: declare var invariant; */ import * as charCodes from "charcodes"; import { types as tt, type TokenType } from "../tokenizer/types"; import type { @@ -24,7 +25,7 @@ import { type BindingTypes, BIND_NONE } from "../util/scopeflags"; import { ExpressionErrors } from "./util"; import { Errors } from "./error"; -const unwrapParenthesizedExpression = (node: Node) => { +const unwrapParenthesizedExpression = (node: Node): Node => { return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; @@ -112,7 +113,7 @@ export default class LValParser extends NodeUtils { case "ObjectProperty": // ObjectProperty is not allowed in LHS - this.toAssignable(node.value, /* isLHS */ false); + this.toAssignable(node.value); break; case "SpreadElement": { @@ -137,11 +138,12 @@ export default class LValParser extends NodeUtils { node.type = "AssignmentPattern"; delete node.operator; // AssignmentPattern is not allowed in LHS - this.toAssignable(node.left, /* isLHS */ false); + this.toAssignable(node.left); break; case "ParenthesizedExpression": - this.toAssignable(((parenthesized: any): Expression), isLHS); + /*::invariant (parenthesized !== undefined) */ + this.toAssignable(parenthesized, isLHS); break; default: diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-3/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-3/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-3/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-4/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-4/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-4/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-5/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-5/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-5/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-6/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-6/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-6/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-left-hand-side/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-left-hand-side/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-left-hand-side/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/input.js b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/input.js new file mode 100644 index 000000000000..eee831f1acfb --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/input.js @@ -0,0 +1 @@ +([...(a)]) => {} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/output.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/output.json new file mode 100644 index 000000000000..0bf2bd22b495 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-pattern-in-rest-binding/output.json @@ -0,0 +1,54 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:5)" + ], + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "ArrayPattern", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "elements": [ + { + "type": "RestElement", + "start":2,"end":8,"loc":{"start":{"line":1,"column":2},"end":{"line":1,"column":8}}, + "argument": { + "type": "ParenthesizedExpression", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8}}, + "expression": { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"a"}, + "name": "a" + } + } + } + ] + } + ], + "body": { + "type": "BlockStatement", + "start":14,"end":16,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":16}}, + "body": [], + "directives": [] + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-2/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/invalid-parenthesized-assignment-pattern-2/options.json rename to packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/options.json diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-1/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-1/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-1/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-2/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-2/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-2/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-3/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-3/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-3/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-member-expression/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-member-expression/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-assignment-array-pattern-member-expression/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-expression/options.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-expression/options.json deleted file mode 100644 index 0861962d889d..000000000000 --- a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-parenthesized-expression/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "createParenthesizedExpressions": true -} diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/input.js b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/input.js new file mode 100644 index 000000000000..995e36cbbf15 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/input.js @@ -0,0 +1 @@ +[...(a)] = [] diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/output.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/output.json new file mode 100644 index 000000000000..e921772279a5 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-lhs/output.json @@ -0,0 +1,46 @@ +{ + "type": "File", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "program": { + "type": "Program", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "expression": { + "type": "AssignmentExpression", + "start":0,"end":13,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}}, + "operator": "=", + "left": { + "type": "ArrayPattern", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "elements": [ + { + "type": "RestElement", + "start":1,"end":7,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":7}}, + "argument": { + "type": "ParenthesizedExpression", + "start":4,"end":7,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":7}}, + "expression": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"a"}, + "name": "a" + } + } + } + ] + }, + "right": { + "type": "ArrayExpression", + "start":11,"end":13,"loc":{"start":{"line":1,"column":11},"end":{"line":1,"column":13}}, + "elements": [] + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/input.js b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/input.js new file mode 100644 index 000000000000..1272c4ab8d93 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/input.js @@ -0,0 +1 @@ +[...(a.b)] = [] diff --git a/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/output.json b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/output.json new file mode 100644 index 000000000000..fcc263340f86 --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/create-parenthesized-expressions/valid-pattern-in-rest-member-lhs/output.json @@ -0,0 +1,56 @@ +{ + "type": "File", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "program": { + "type": "Program", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "expression": { + "type": "AssignmentExpression", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "operator": "=", + "left": { + "type": "ArrayPattern", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "elements": [ + { + "type": "RestElement", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "argument": { + "type": "ParenthesizedExpression", + "start":4,"end":9,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":9}}, + "expression": { + "type": "MemberExpression", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8}}, + "object": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"a"}, + "name": "a" + }, + "computed": false, + "property": { + "type": "Identifier", + "start":7,"end":8,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":8},"identifierName":"b"}, + "name": "b" + } + } + } + } + ] + }, + "right": { + "type": "ArrayExpression", + "start":13,"end":15,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":15}}, + "elements": [] + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/241/input.js b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-2/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/uncategorised/241/input.js rename to packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-2/input.js diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-2/output.json b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-2/output.json new file mode 100644 index 000000000000..09d15bfd29ff --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-2/output.json @@ -0,0 +1,52 @@ +{ + "type": "File", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:5)" + ], + "program": { + "type": "Program", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":0,"end":14,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":14}}, + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":1,"end":2,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":2},"identifierName":"a"}, + "name": "a" + }, + { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"b"}, + "extra": { + "parenthesized": true, + "parenStart": 4 + }, + "name": "b" + } + ], + "body": { + "type": "NumericLiteral", + "start":12,"end":14,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":14}}, + "extra": { + "rawValue": 42, + "raw": "42" + }, + "value": 42 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/invalid-parenthesized-in-params/input.js b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-array-pattern/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/arrow-functions/invalid-parenthesized-in-params/input.js rename to packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-array-pattern/input.js diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/invalid-parenthesized-in-params/output.json b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-array-pattern/output.json similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/arrow-functions/invalid-parenthesized-in-params/output.json rename to packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens-array-pattern/output.json diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/options.json b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/options.json deleted file mode 100644 index cb6c66081ebf..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:11)" -} diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/output.json b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/output.json new file mode 100644 index 000000000000..07989bd92794 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/arrow-functions/inner-parens/output.json @@ -0,0 +1,56 @@ +{ + "type": "File", + "start":0,"end":24,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:12)" + ], + "program": { + "type": "Program", + "start":0,"end":24,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":24,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":23,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":23}}, + "id": { + "type": "Identifier", + "start":4,"end":7,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":7},"identifierName":"foo"}, + "name": "foo" + }, + "init": { + "type": "ArrowFunctionExpression", + "start":10,"end":23,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":23}}, + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":12,"end":15,"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":15},"identifierName":"foo"}, + "extra": { + "parenthesized": true, + "parenStart": 11 + }, + "name": "foo" + } + ], + "body": { + "type": "BlockStatement", + "start":21,"end":23,"loc":{"start":{"line":1,"column":21},"end":{"line":1,"column":23}}, + "body": [], + "directives": [] + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/input.js b/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/input.js new file mode 100644 index 000000000000..552f8ecd7b95 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/input.js @@ -0,0 +1 @@ +[...(a.b)] = []; diff --git a/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/output.json b/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/output.json new file mode 100644 index 000000000000..cbb65676f607 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/destructuring/lhs-parenthesized-rest-member/output.json @@ -0,0 +1,56 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "expression": { + "type": "AssignmentExpression", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "operator": "=", + "left": { + "type": "ArrayPattern", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "elements": [ + { + "type": "RestElement", + "start":1,"end":9,"loc":{"start":{"line":1,"column":1},"end":{"line":1,"column":9}}, + "argument": { + "type": "MemberExpression", + "start":5,"end":8,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":8}}, + "extra": { + "parenthesized": true, + "parenStart": 4 + }, + "object": { + "type": "Identifier", + "start":5,"end":6,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":6},"identifierName":"a"}, + "name": "a" + }, + "computed": false, + "property": { + "type": "Identifier", + "start":7,"end":8,"loc":{"start":{"line":1,"column":7},"end":{"line":1,"column":8},"identifierName":"b"}, + "name": "b" + } + } + } + ] + }, + "right": { + "type": "ArrayExpression", + "start":13,"end":15,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":15}}, + "elements": [] + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/240/input.js b/packages/babel-parser/test/fixtures/es2015/uncategorised/240/input.js deleted file mode 100644 index cc7b1e3792e2..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/240/input.js +++ /dev/null @@ -1 +0,0 @@ -((a)) => 42 \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/240/options.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/240/options.json deleted file mode 100644 index b5b75f41875c..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/240/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:1)" -} diff --git a/packages/babel-parser/test/fixtures/es2015/uncategorised/241/options.json b/packages/babel-parser/test/fixtures/es2015/uncategorised/241/options.json deleted file mode 100644 index 27a7b64d71d4..000000000000 --- a/packages/babel-parser/test/fixtures/es2015/uncategorised/241/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:4)" -} diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/input.js new file mode 100644 index 000000000000..94e158632d1a --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/input.js @@ -0,0 +1 @@ +var foo = async ([...(foo)]) => {}; diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/output.json new file mode 100644 index 000000000000..0d501cde269f --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-array/output.json @@ -0,0 +1,66 @@ +{ + "type": "File", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:22)" + ], + "program": { + "type": "Program", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34}}, + "id": { + "type": "Identifier", + "start":4,"end":7,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":7},"identifierName":"foo"}, + "name": "foo" + }, + "init": { + "type": "ArrowFunctionExpression", + "start":10,"end":34,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":34}}, + "id": null, + "generator": false, + "async": true, + "params": [ + { + "type": "ArrayPattern", + "start":17,"end":27,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":27}}, + "elements": [ + { + "type": "RestElement", + "start":18,"end":26,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":26}}, + "argument": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":25},"identifierName":"foo"}, + "extra": { + "parenthesized": true, + "parenStart": 21 + }, + "name": "foo" + } + } + ] + } + ], + "body": { + "type": "BlockStatement", + "start":32,"end":34,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":34}}, + "body": [], + "directives": [] + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/input.js b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/input.js new file mode 100644 index 000000000000..7d476ae8fce4 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/input.js @@ -0,0 +1 @@ +var foo = async ({...(foo)}) => {}; diff --git a/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/output.json b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/output.json new file mode 100644 index 000000000000..66f60ce4f6af --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2017/async-functions/parenthesized-async-arrow-rest-object/output.json @@ -0,0 +1,66 @@ +{ + "type": "File", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:22)" + ], + "program": { + "type": "Program", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":35,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":4,"end":34,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":34}}, + "id": { + "type": "Identifier", + "start":4,"end":7,"loc":{"start":{"line":1,"column":4},"end":{"line":1,"column":7},"identifierName":"foo"}, + "name": "foo" + }, + "init": { + "type": "ArrowFunctionExpression", + "start":10,"end":34,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":34}}, + "id": null, + "generator": false, + "async": true, + "params": [ + { + "type": "ObjectPattern", + "start":17,"end":27,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":27}}, + "properties": [ + { + "type": "RestElement", + "start":18,"end":26,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":26}}, + "argument": { + "type": "Identifier", + "start":22,"end":25,"loc":{"start":{"line":1,"column":22},"end":{"line":1,"column":25},"identifierName":"foo"}, + "extra": { + "parenthesized": true, + "parenStart": 21 + }, + "name": "foo" + } + } + ] + } + ], + "body": { + "type": "BlockStatement", + "start":32,"end":34,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":34}}, + "body": [], + "directives": [] + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/options.json b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/options.json deleted file mode 100644 index b5b75f41875c..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:1)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/output.json b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/output.json new file mode 100644 index 000000000000..9fb39c9ca6ef --- /dev/null +++ b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-arrow/output.json @@ -0,0 +1,47 @@ +{ + "type": "File", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:2)" + ], + "program": { + "type": "Program", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":0,"end":10,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":10}}, + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":2,"end":3,"loc":{"start":{"line":1,"column":2},"end":{"line":1,"column":3},"identifierName":"a"}, + "extra": { + "parenthesized": true, + "parenStart": 1 + }, + "name": "a" + } + ], + "body": { + "type": "NumericLiteral", + "start":9,"end":10,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":10}}, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/options.json b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/options.json deleted file mode 100644 index b5b75f41875c..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:1)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/output.json b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/output.json new file mode 100644 index 000000000000..7aefdb8c93dc --- /dev/null +++ b/packages/babel-parser/test/fixtures/esprima/es2015-arrow-function/non-arrow-param-followed-by-rest/output.json @@ -0,0 +1,56 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "errors": [ + "SyntaxError: Invalid parenthesized assignment pattern (1:2)" + ], + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ExpressionStatement", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "expression": { + "type": "ArrowFunctionExpression", + "start":0,"end":15,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":15}}, + "id": null, + "generator": false, + "async": false, + "params": [ + { + "type": "Identifier", + "start":2,"end":3,"loc":{"start":{"line":1,"column":2},"end":{"line":1,"column":3},"identifierName":"a"}, + "extra": { + "parenthesized": true, + "parenStart": 1 + }, + "name": "a" + }, + { + "type": "RestElement", + "start":5,"end":9,"loc":{"start":{"line":1,"column":5},"end":{"line":1,"column":9}}, + "argument": { + "type": "Identifier", + "start":8,"end":9,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":9},"identifierName":"b"}, + "name": "b" + } + } + ], + "body": { + "type": "NumericLiteral", + "start":14,"end":15,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":15}}, + "extra": { + "rawValue": 0, + "raw": "0" + }, + "value": 0 + } + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/input.js b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/input.js deleted file mode 100644 index 375e21014c8b..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/input.js +++ /dev/null @@ -1 +0,0 @@ -((a)) => 42 diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/options.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/options.json deleted file mode 100644 index b5b75f41875c..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0085/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:1)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/input.js b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/input.js deleted file mode 100644 index 89739afb96ad..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/input.js +++ /dev/null @@ -1 +0,0 @@ -(a, (b)) => 42 diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/options.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/options.json deleted file mode 100644 index 27a7b64d71d4..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0086/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:4)" -}