diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index bee813c59196..4e2f7a513010 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1016,7 +1016,11 @@ export default class StatementParser extends ExpressionParser { // `const` with no initializer is allowed in TypeScript. // It could be a declaration like `const x: number;`. if (!isTypescript) { - this.unexpected(); + this.raise( + this.state.lastTokEnd, + Errors.DeclarationMissingInitializer, + "Const declarations", + ); } } else if ( decl.id.type !== "Identifier" && diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/536/options.json b/packages/babel-parser/test/fixtures/core/uncategorised/536/options.json deleted file mode 100644 index c958665c03e2..000000000000 --- a/packages/babel-parser/test/fixtures/core/uncategorised/536/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:7)" -} diff --git a/packages/babel-parser/test/fixtures/core/uncategorised/536/output.json b/packages/babel-parser/test/fixtures/core/uncategorised/536/output.json new file mode 100644 index 000000000000..603923e34e5d --- /dev/null +++ b/packages/babel-parser/test/fixtures/core/uncategorised/536/output.json @@ -0,0 +1,33 @@ +{ + "type": "File", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "errors": [ + "SyntaxError: Const declarations require an initialization value (1:7)" + ], + "program": { + "type": "Program", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7}}, + "id": { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"a"}, + "name": "a" + }, + "init": null + } + ], + "kind": "const" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/es2015-for-of/unexpected-number/options.json b/packages/babel-parser/test/fixtures/esprima/es2015-for-of/unexpected-number/options.json index d50e8469b860..c83e2245d03d 100644 --- a/packages/babel-parser/test/fixtures/esprima/es2015-for-of/unexpected-number/options.json +++ b/packages/babel-parser/test/fixtures/esprima/es2015-for-of/unexpected-number/options.json @@ -1,3 +1,3 @@ { - "throws": "Unexpected token (1:14)" -} + "throws": "Unexpected token, expected \";\" (1:14)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/options.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/options.json deleted file mode 100644 index 98d712379010..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:15)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/output.json new file mode 100644 index 000000000000..fdf1d3c3fc9b --- /dev/null +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0138/output.json @@ -0,0 +1,51 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "errors": [ + "SyntaxError: Const declarations require an initialization value (1:15)" + ], + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":6,"end":12,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":12}}, + "id": { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"x"}, + "name": "x" + }, + "init": { + "type": "NumericLiteral", + "start":10,"end":12,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":12}}, + "extra": { + "rawValue": 12, + "raw": "12" + }, + "value": 12 + } + }, + { + "type": "VariableDeclarator", + "start":14,"end":15,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":15}}, + "id": { + "type": "Identifier", + "start":14,"end":15,"loc":{"start":{"line":1,"column":14},"end":{"line":1,"column":15},"identifierName":"y"}, + "name": "y" + }, + "init": null + } + ], + "kind": "const" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/options.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/options.json deleted file mode 100644 index c958665c03e2..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:7)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/output.json new file mode 100644 index 000000000000..e19f992ee2bb --- /dev/null +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0139/output.json @@ -0,0 +1,51 @@ +{ + "type": "File", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "errors": [ + "SyntaxError: Const declarations require an initialization value (1:7)" + ], + "program": { + "type": "Program", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":16,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":16}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7}}, + "id": { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"x"}, + "name": "x" + }, + "init": null + }, + { + "type": "VariableDeclarator", + "start":9,"end":15,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":15}}, + "id": { + "type": "Identifier", + "start":9,"end":10,"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":10},"identifierName":"y"}, + "name": "y" + }, + "init": { + "type": "NumericLiteral", + "start":13,"end":15,"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":15}}, + "extra": { + "rawValue": 12, + "raw": "12" + }, + "value": 12 + } + } + ], + "kind": "const" + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/options.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/options.json deleted file mode 100644 index c958665c03e2..000000000000 --- a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "throws": "Unexpected token (1:7)" -} diff --git a/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/output.json b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/output.json new file mode 100644 index 000000000000..1ed957df3a9b --- /dev/null +++ b/packages/babel-parser/test/fixtures/esprima/invalid-syntax/migrated_0140/output.json @@ -0,0 +1,33 @@ +{ + "type": "File", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "errors": [ + "SyntaxError: Const declarations require an initialization value (1:7)" + ], + "program": { + "type": "Program", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start":0,"end":8,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":8}}, + "declarations": [ + { + "type": "VariableDeclarator", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7}}, + "id": { + "type": "Identifier", + "start":6,"end":7,"loc":{"start":{"line":1,"column":6},"end":{"line":1,"column":7},"identifierName":"x"}, + "name": "x" + }, + "init": null + } + ], + "kind": "const" + } + ], + "directives": [] + } +} \ No newline at end of file