diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index 7327fadcf0..aaf4794f77 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 484a2b5ee5..89d8cf8a81 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 b6d30323e4..720c9a9232 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 a9b0e3f498..c5bc796ff6 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 f64b86d90b..01d7cac7d0 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 cde31923ba..222a264e0f 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 b18e07c5fb..2d57b01c03 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 b2fb42c337..33feb2ec4e 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",