diff --git a/ast/spec.md b/ast/spec.md index 346b7b95aa..2b57c89eac 100644 --- a/ast/spec.md +++ b/ast/spec.md @@ -35,7 +35,6 @@ These are the core Babylon AST node types. - [ForStatement](#forstatement) - [ForInStatement](#forinstatement) - [ForOfStatement](#forofstatement) - - [ForAwaitStatement](#forawaitstatement) - [Declarations](#declarations) - [FunctionDeclaration](#functiondeclaration) - [VariableDeclaration](#variabledeclaration) @@ -478,16 +477,7 @@ A `for`/`in` statement. ```js interface ForOfStatement <: ForInStatement { type: "ForOfStatement"; -} -``` - -A `for`/`await` statement. - -## ForAwaitStatement - -```js -interface ForAwaitStatement <: ForInStatement { - type: "ForAwaitStatement"; + await: boolean; } ``` diff --git a/src/parser/statement.js b/src/parser/statement.js index a26d3a9a0b..7194a555d7 100644 --- a/src/parser/statement.js +++ b/src/parser/statement.js @@ -530,14 +530,13 @@ pp.parseFor = function (node, init) { // same from parser's perspective. pp.parseForIn = function (node, init, forAwait) { - let type; + const type = this.match(tt._in) ? "ForInStatement" : "ForOfStatement"; if (forAwait) { this.eatContextual("of"); - type = "ForAwaitStatement"; } else { - type = this.match(tt._in) ? "ForInStatement" : "ForOfStatement"; this.next(); } + node.await = !!forAwait; node.left = init; node.right = this.parseExpression(); this.expect(tt.parenR); diff --git a/test/fixtures/esprima/es2015-for-of/for-of/expected.json b/test/fixtures/esprima/es2015-for-of/for-of/expected.json index 32de26d7ac..8b229f61b2 100644 --- a/test/fixtures/esprima/es2015-for-of/for-of/expected.json +++ b/test/fixtures/esprima/es2015-for-of/for-of/expected.json @@ -32,6 +32,7 @@ "type": "ForOfStatement", "start": 0, "end": 13, + "await": false, "loc": { "start": { "line": 1, diff --git a/test/fixtures/experimental/async-generators/for-await/expected.json b/test/fixtures/experimental/async-generators/for-await/expected.json index 1551481f51..273efee728 100644 --- a/test/fixtures/experimental/async-generators/for-await/expected.json +++ b/test/fixtures/experimental/async-generators/for-await/expected.json @@ -78,7 +78,7 @@ }, "body": [ { - "type": "ForAwaitStatement", + "type": "ForOfStatement", "start": 23, "end": 46, "loc": { @@ -91,6 +91,7 @@ "column": 25 } }, + "await": true, "left": { "type": "VariableDeclaration", "start": 34,