diff --git a/packages/babel-traverse/src/path/lib/virtual-types-validator.ts b/packages/babel-traverse/src/path/lib/virtual-types-validator.ts index 2ebb77765ab5..38f157a36008 100644 --- a/packages/babel-traverse/src/path/lib/virtual-types-validator.ts +++ b/packages/babel-traverse/src/path/lib/virtual-types-validator.ts @@ -20,6 +20,7 @@ import { isVar as nodeIsVar, isVariableDeclaration, react, + isForOfStatement, } from "@babel/types"; import type * as t from "@babel/types"; const { isCompatTag } = react; @@ -197,7 +198,7 @@ export function isSpreadProperty(this: NodePath): boolean { } export function isForAwaitStatement(this: NodePath): boolean { - return isForStatement(this.node, { await: true }); + return isForOfStatement(this.node, { await: true }); } export function isExistentialTypeParam(this: NodePath): void { diff --git a/packages/babel-traverse/test/path/virtual-validators.js b/packages/babel-traverse/test/path/virtual-validators.js new file mode 100644 index 000000000000..f241eb297bf2 --- /dev/null +++ b/packages/babel-traverse/test/path/virtual-validators.js @@ -0,0 +1,27 @@ +import { parse } from "@babel/parser"; + +import _traverse from "../../lib/index.js"; +const traverse = _traverse.default || _traverse; + +function getPath(code) { + const ast = parse(code, { sourceType: "module" }); + let path; + traverse(ast, { + Program: function (_path) { + path = _path; + _path.stop(); + }, + }); + return path; +} + +describe("path.isForAwaitStatement", () => { + it.each(["for await (const x of []);"])( + `NodePath(%p).get("body.0").isForAwaitStatement() should be true`, + input => { + const path = getPath(input).get("body.0"); + expect(path.node).toBeTruthy(); + expect(path.isForAwaitStatement()).toBe(true); + }, + ); +});