diff --git a/crates/oxc_linter/src/rules/eslint/no_unused_vars/allowed.rs b/crates/oxc_linter/src/rules/eslint/no_unused_vars/allowed.rs index 375c851782db0..efc2441387dc1 100644 --- a/crates/oxc_linter/src/rules/eslint/no_unused_vars/allowed.rs +++ b/crates/oxc_linter/src/rules/eslint/no_unused_vars/allowed.rs @@ -32,6 +32,10 @@ impl<'s, 'a> Symbol<'s, 'a> { | AstKind::ArrayExpressionElement(_) | AstKind::ExpressionArrayElement(_) | AstKind::ArrayExpression(_) + // a ? b : function foo() {} + // Only considered used if the function is the test or the selected branch, + // but we can't determine that here. + | AstKind::ConditionalExpression(_) => { continue; } diff --git a/crates/oxc_linter/src/rules/eslint/no_unused_vars/tests/oxc.rs b/crates/oxc_linter/src/rules/eslint/no_unused_vars/tests/oxc.rs index e249f9a2d8128..6933c9e7a6768 100644 --- a/crates/oxc_linter/src/rules/eslint/no_unused_vars/tests/oxc.rs +++ b/crates/oxc_linter/src/rules/eslint/no_unused_vars/tests/oxc.rs @@ -54,6 +54,9 @@ fn test_vars_simple() { ", None, ), + ("console.log(function a() {} ? b : c)", None), + ("console.log(a ? function b() {} : c)", None), + ("console.log(a ? b : function c() {})", None), ]; let fail = vec![ ("let a = 1", None),