From b1887782ac65ff12a7b9ff3cf0208d833537968c Mon Sep 17 00:00:00 2001 From: rzvxa <3788964+rzvxa@users.noreply.github.com> Date: Tue, 28 May 2024 17:58:31 +0000 Subject: [PATCH] fix(linter/eslint): fix `require-await` false positives in `ForOfStatement`. (#3457) closes #3456 --- crates/oxc_linter/src/rules/eslint/require_await.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/crates/oxc_linter/src/rules/eslint/require_await.rs b/crates/oxc_linter/src/rules/eslint/require_await.rs index 477f8fdf3..7858ab8b2 100644 --- a/crates/oxc_linter/src/rules/eslint/require_await.rs +++ b/crates/oxc_linter/src/rules/eslint/require_await.rs @@ -1,5 +1,6 @@ use oxc_ast::{ ast::{ArrowFunctionExpression, AwaitExpression, ForOfStatement, Function, PropertyKey}, + visit::walk::walk_for_of_statement, AstKind, Visit, }; use oxc_diagnostics::OxcDiagnostic; @@ -96,6 +97,8 @@ impl<'a> Visit<'a> for AwaitFinder { fn visit_for_of_statement(&mut self, stmt: &ForOfStatement) { if stmt.r#await { self.found = true; + } else { + walk_for_of_statement(self, stmt); } } @@ -144,6 +147,14 @@ fn test() { "const foo = async function *(){}", r#"const foo = async function *(){ console.log("bar") }"#, r#"async function* run() { console.log("bar") }"#, + " + const foo = async ( + ): Promise => { + for (const bar of baz) { + x(await y(z)); + } + }; + ", ]; let fail = vec![