From dbbb6fca567cf06df8a548c6a7f87730fd38b4c2 Mon Sep 17 00:00:00 2001 From: Boshen <1430279+Boshen@users.noreply.github.com> Date: Sat, 29 Jun 2024 15:27:22 +0000 Subject: [PATCH] fix(linter): global variable check should always check builtin variables (#3973) closes #3374 --- crates/oxc_linter/src/context.rs | 11 +++++++---- crates/oxc_linter/src/rules/eslint/no_undef.rs | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/crates/oxc_linter/src/context.rs b/crates/oxc_linter/src/context.rs index 2ccf338c6de6c..40657f50d6382 100644 --- a/crates/oxc_linter/src/context.rs +++ b/crates/oxc_linter/src/context.rs @@ -137,13 +137,16 @@ impl<'a> LintContext<'a> { } pub fn env_contains_var(&self, var: &str) -> bool { + if GLOBALS["builtin"].contains_key("var") { + return true; + } for env in self.env().iter() { - let env = GLOBALS.get(env).unwrap_or(&GLOBALS["builtin"]); - if env.get(var).is_some() { - return true; + if let Some(env) = GLOBALS.get(env) { + if env.contains_key(var) { + return true; + } } } - false } diff --git a/crates/oxc_linter/src/rules/eslint/no_undef.rs b/crates/oxc_linter/src/rules/eslint/no_undef.rs index 3bf4e78e2f893..4315a53557a4a 100644 --- a/crates/oxc_linter/src/rules/eslint/no_undef.rs +++ b/crates/oxc_linter/src/rules/eslint/no_undef.rs @@ -156,6 +156,7 @@ fn test() { "class C { static { a; let a; } }", "class C { static { function a() {} a; } }", "class C { static { a; function a() {} } }", + "String;Array;Boolean;" ]; let fail = vec![