From e831ad3037315cf3157f58c40e44e2932980479f Mon Sep 17 00:00:00 2001 From: therewillbecode Date: Fri, 14 Mar 2025 08:58:15 +0000 Subject: [PATCH] Add correctness examples to no-class-assign --- .../src/rules/eslint/no_class_assign.rs | 59 +++++++++++++++++-- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/crates/oxc_linter/src/rules/eslint/no_class_assign.rs b/crates/oxc_linter/src/rules/eslint/no_class_assign.rs index 7e6f4873ccf54..fe4bb841fa328 100644 --- a/crates/oxc_linter/src/rules/eslint/no_class_assign.rs +++ b/crates/oxc_linter/src/rules/eslint/no_class_assign.rs @@ -17,17 +17,64 @@ pub struct NoClassAssign; declare_oxc_lint!( /// ### What it does + /// /// Disallow reassigning class variables. /// /// ### Why is this bad? - /// `ClassDeclaration` creates a variable that can be re-assigned, - /// but the re-assignment is a mistake in most cases. /// - /// ### Example + /// `ClassDeclaration` creates a variable that can be re-assigned, but the re-assignment is a + /// mistake in most cases. + /// + /// ### Examples + /// + /// Examples of **incorrect** code for this rule: + /// ```javascript + /// class A { } + /// A = 0; + /// ``` + /// + /// ```javascript + /// A = 0; + /// class A { } + /// ``` + /// + /// ```javascript + /// class A { + /// b() { + /// A = 0; + /// } + /// } + /// ``` + /// + /// ```javascript + /// let A = class A { + /// b() { + /// A = 0; + /// // `let A` is shadowed by the class name. + /// } + /// } + /// ``` + /// + /// Examples of **correct** code for this rule: + /// ```javascript + /// let A = class A { } + /// A = 0; // A is a variable. + /// ``` + /// + /// ```javascript + /// let A = class { + /// b() { + /// A = 0; // A is a variable. + /// } + /// } + /// ``` + /// /// ```javascript - /// class A {} - /// A = 123; - /// let a = new A() // Error + /// class A { + /// b(A) { + /// A = 0; // A is a parameter. + /// } + /// } /// ``` NoClassAssign, eslint,