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 2f0038910d1d2..f1b23816ae61b 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 @@ -1058,6 +1058,11 @@ fn test_classes() { } new Bar(); ", + // Variables used in class property initializers should not be marked as unused + "let a = 0; class A { c = a++ } new A()", + "let a = 0; class A { c = a } new A()", + "let a = 0; class A { c = a + 1 } new A()", + "let a = 0, b = 1; class A { c = a; d = b++ } new A()", ]; let fail = vec![ diff --git a/crates/oxc_linter/src/rules/eslint/no_unused_vars/usage.rs b/crates/oxc_linter/src/rules/eslint/no_unused_vars/usage.rs index 6ed8db457b5c8..828910d7fe22b 100644 --- a/crates/oxc_linter/src/rules/eslint/no_unused_vars/usage.rs +++ b/crates/oxc_linter/src/rules/eslint/no_unused_vars/usage.rs @@ -416,7 +416,8 @@ impl<'a> Symbol<'_, 'a> { // used by others AstKind::VariableDeclarator(_) | AstKind::JSXExpressionContainer(_) - | AstKind::Argument(_) => { + | AstKind::Argument(_) + | AstKind::PropertyDefinition(_) => { // definitely used, short-circuit return false; }