diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 7327fadcf045..aaf4794f7724 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -1017,7 +1017,7 @@ export default class ExpressionParser extends LValParser { return id; } } else if (this.match(tt._do)) { - return this.parseDo(true); + return this.parseDo(this.startNodeAtNode(id), true); } } @@ -1034,7 +1034,7 @@ export default class ExpressionParser extends LValParser { } case tt._do: { - return this.parseDo(false); + return this.parseDo(this.startNode(), false); } case tt.slash: @@ -1207,12 +1207,11 @@ export default class ExpressionParser extends LValParser { // https://github.com/tc39/proposal-do-expressions // https://github.com/tc39/proposal-async-do-expressions - parseDo(isAsync: boolean): N.DoExpression { + parseDo(node: N.Node, isAsync: boolean): N.DoExpression { this.expectPlugin("doExpressions"); if (isAsync) { this.expectPlugin("asyncDoExpressions"); } - const node = this.startNode(); node.async = isAsync; this.next(); // eat `do` const oldLabels = this.state.labels; diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/asi-async-do-and-while/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/asi-async-do-and-while/output.json index 484a2b5ee528..89d8cf8a811c 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/asi-async-do-and-while/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/asi-async-do-and-while/output.json @@ -12,7 +12,7 @@ "start":0,"end":17,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "expression": { "type": "DoExpression", - "start":6,"end":17,"loc":{"start":{"line":1,"column":6},"end":{"line":3,"column":1}}, + "start":0,"end":17,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/conditional-statement/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/conditional-statement/output.json index b6d30323e45a..720c9a9232de 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/conditional-statement/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/conditional-statement/output.json @@ -21,7 +21,7 @@ }, "init": { "type": "DoExpression", - "start":14,"end":82,"loc":{"start":{"line":1,"column":14},"end":{"line":5,"column":1}}, + "start":8,"end":82,"loc":{"start":{"line":1,"column":8},"end":{"line":5,"column":1}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/expression-statement/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/expression-statement/output.json index a9b0e3f49819..c5bc796ff697 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/expression-statement/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/expression-statement/output.json @@ -12,7 +12,7 @@ "start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "expression": { "type": "DoExpression", - "start":6,"end":23,"loc":{"start":{"line":1,"column":6},"end":{"line":3,"column":1}}, + "start":0,"end":23,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-break/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-break/output.json index f64b86d90b0b..01d7cac7d088 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-break/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-break/output.json @@ -56,7 +56,7 @@ }, "init": { "type": "DoExpression", - "start":65,"end":92,"loc":{"start":{"line":4,"column":20},"end":{"line":6,"column":7}}, + "start":59,"end":92,"loc":{"start":{"line":4,"column":14},"end":{"line":6,"column":7}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-generators/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-generators/output.json index cde31923ba08..222a264e0fed 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-generators/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-generators/output.json @@ -33,7 +33,7 @@ "start":27,"end":60,"loc":{"start":{"line":2,"column":2},"end":{"line":4,"column":3}}, "argument": { "type": "DoExpression", - "start":39,"end":60,"loc":{"start":{"line":2,"column":14},"end":{"line":4,"column":3}}, + "start":33,"end":60,"loc":{"start":{"line":2,"column":8},"end":{"line":4,"column":3}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-return/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-return/output.json index b18e07c5fb92..2d57b01c0329 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-return/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/invalid-return/output.json @@ -30,7 +30,7 @@ "start":20,"end":55,"loc":{"start":{"line":2,"column":2},"end":{"line":4,"column":3}}, "argument": { "type": "DoExpression", - "start":33,"end":55,"loc":{"start":{"line":2,"column":15},"end":{"line":4,"column":3}}, + "start":27,"end":55,"loc":{"start":{"line":2,"column":9},"end":{"line":4,"column":3}}, "async": true, "body": { "type": "BlockStatement", diff --git a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/scoping-variable/output.json b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/scoping-variable/output.json index b2fb42c3379a..33feb2ec4eaa 100644 --- a/packages/babel-parser/test/fixtures/experimental/async-do-expressions/scoping-variable/output.json +++ b/packages/babel-parser/test/fixtures/experimental/async-do-expressions/scoping-variable/output.json @@ -21,7 +21,7 @@ }, "init": { "type": "DoExpression", - "start":14,"end":53,"loc":{"start":{"line":1,"column":14},"end":{"line":4,"column":1}}, + "start":8,"end":53,"loc":{"start":{"line":1,"column":8},"end":{"line":4,"column":1}}, "async": true, "body": { "type": "BlockStatement",