From 3a92828a0aa4cbc91b9e406c72d3e7000fa56892 Mon Sep 17 00:00:00 2001 From: Cameron Date: Mon, 13 Nov 2023 00:41:33 +0000 Subject: [PATCH] fix(linter) Fix no instanceof array with parenthesis (#1243) --- crates/oxc_linter/src/rules/unicorn/no_instanceof_array.rs | 3 ++- crates/oxc_linter/src/snapshots/no_instanceof_array.snap | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/oxc_linter/src/rules/unicorn/no_instanceof_array.rs b/crates/oxc_linter/src/rules/unicorn/no_instanceof_array.rs index b73548462..ca69e8732 100644 --- a/crates/oxc_linter/src/rules/unicorn/no_instanceof_array.rs +++ b/crates/oxc_linter/src/rules/unicorn/no_instanceof_array.rs @@ -42,7 +42,7 @@ impl Rule for NoInstanceofArray { return; } - match &expr.right { + match &expr.right.without_parenthesized() { Expression::Identifier(identifier) if identifier.name == "Array" => { ctx.diagnostic_with_fix(NoInstanceofArrayDiagnostic(expr.span), || { let modified_code = { @@ -78,6 +78,7 @@ fn test() { let fail = vec![ ("arr instanceof Array", None), ("[] instanceof Array", None), + ("[] instanceof (Array)", None), ("[1,2,3] instanceof Array === true", None), ("fun.call(1, 2, 3) instanceof Array", None), ("obj.arr instanceof Array", None), diff --git a/crates/oxc_linter/src/snapshots/no_instanceof_array.snap b/crates/oxc_linter/src/snapshots/no_instanceof_array.snap index fd494e166..ac306347d 100644 --- a/crates/oxc_linter/src/snapshots/no_instanceof_array.snap +++ b/crates/oxc_linter/src/snapshots/no_instanceof_array.snap @@ -16,6 +16,13 @@ expression: no_instanceof_array ╰──── help: The instanceof Array check doesn't work across realms/contexts, for example, frames/windows in browsers or the vm module in Node.js. + ⚠ eslint-plugin-unicorn(no-instanceof-array): Use `Array.isArray()` instead of `instanceof Array`. + ╭─[no_instanceof_array.tsx:1:1] + 1 │ [] instanceof (Array) + · ───────────────────── + ╰──── + help: The instanceof Array check doesn't work across realms/contexts, for example, frames/windows in browsers or the vm module in Node.js. + ⚠ eslint-plugin-unicorn(no-instanceof-array): Use `Array.isArray()` instead of `instanceof Array`. ╭─[no_instanceof_array.tsx:1:1] 1 │ [1,2,3] instanceof Array === true