fix(linter): improve docs and diagnostics message for no-else-return (#6327)

This commit is contained in:
DonIsaac 2024-10-07 05:54:59 +00:00
parent f6e42b6d85
commit 93c6db6550
2 changed files with 286 additions and 169 deletions

View file

@ -16,9 +16,9 @@ declare_oxc_lint!(
/// Disallow `else` blocks after `return` statements in `if` statements
///
/// ### Why is this bad?
/// If an if block contains a return statement, the else block becomes unnecessary. Its contents can be placed outside of the block.
/// If an `if` block contains a `return` statement, the `else` block becomes
/// unnecessary. Its contents can be placed outside of the block.
///
/// ### Example
/// ```javascript
/// function foo() {
/// if (x) {
@ -28,15 +28,146 @@ declare_oxc_lint!(
/// }
/// }
/// ```
///
/// This rule is aimed at highlighting an unnecessary block of code
/// following an `if` containing a return statement. As such, it will warn
/// when it encounters an `else` following a chain of `if`s, all of them
/// containing a `return` statement.
///
/// Options
/// This rule has an object option:
///
/// - `allowElseIf`: `true` _(default)_ allows `else if` blocks after a return
/// - `allowElseIf`: `false` disallows `else if` blocks after a return
///
/// ### Examples
///
/// #### `allowElseIf: true`
/// Examples of **incorrect** code for this rule:
/// ```javascript
/// function foo1() {
/// if (x) {
/// return y;
/// } else {
/// return z;
/// }
/// }
///
/// function foo2() {
/// if (x) {
/// return y;
/// } else if (z) {
/// return w;
/// } else {
/// return t;
/// }
/// }
///
/// function foo3() {
/// if (x) {
/// return y;
/// } else {
/// var t = "foo";
/// }
///
/// return t;
/// }
///
/// function foo4() {
/// if (error) {
/// return 'It failed';
/// } else {
/// if (loading) {
/// return "It's still loading";
/// }
/// }
/// }
///
/// // Two warnings for nested occurrences
/// function foo5() {
/// if (x) {
/// if (y) {
/// return y;
/// } else {
/// return x;
/// }
/// } else {
/// return z;
/// }
/// }
/// ```
///
/// Examples of **correct** code for this rule:
/// ```javascript
/// function foo1() {
/// if (x) {
/// return y;
/// }
///
/// return z;
/// }
///
/// function foo2() {
/// if (x) {
/// return y;
/// } else if (z) {
/// var t = "foo";
/// } else {
/// return w;
/// }
/// }
///
/// function foo3() {
/// if (x) {
/// if (z) {
/// return y;
/// }
/// } else {
/// return z;
/// }
/// }
///
/// function foo4() {
/// if (error) {
/// return 'It failed';
/// } else if (loading) {
/// return "It's still loading";
/// }
/// }
/// ```
///
/// #### `allowElseIf: false`
///
/// Examples of **incorrect** code for this rule:
/// ```javascript
/// function foo() {
/// if (error) {
/// return 'It failed';
/// } else if (loading) {
/// return "It's still loading";
/// }
/// }
/// ```
///
/// Examples of **correct** code for this rule:
/// ```javascript
/// function foo() {
/// if (error) {
/// return 'It failed';
/// }
///
/// if (loading) {
/// return "It's still loading";
/// }
/// }
/// ```
NoElseReturn,
suspicious,
fix
);
fn no_else_return_diagnostic(else_stmt: &Statement) -> OxcDiagnostic {
OxcDiagnostic::warn("Disallow `else` blocks after `return` statements in `if` statements")
.with_help("Unnecessary 'else' after 'return'.")
.with_label(else_stmt.span())
OxcDiagnostic::warn("Unnecessary 'else' after 'return'.").with_label(else_stmt.span())
}
fn is_safe_from_name_collisions(

View file

@ -1,586 +1,572 @@
---
source: crates/oxc_linter/src/tester.rs
---
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:48]
1 │ function foo1() { if (true) { return x; } else { return y; } }
· ─────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { return y; }` with ` return y; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:61]
1 │ function foo2() { if (true) { var x = bar; return x; } else { var y = baz; return y; } }
· ──────────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { var y = baz; return y; }` with ` var y = baz; return y; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:44]
1 │ function foo3() { if (true) return x; else return y; }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else return y;` with ` return y;`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:74]
1 │ function foo4() { if (true) { if (false) return x; else return y; } else { return z; } }
· ─────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { return z; }` with ` return z; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:57]
1 │ function foo4() { if (true) { if (false) return x; else return y; } else { return z; } }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else return y;` with ` return y;`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:69]
1 │ function foo5() { if (true) { if (false) { if (true) return x; else { w = y; } } else { w = x; } } else { return z; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { w = y; }` with ` w = y; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:69]
1 │ function foo6() { if (true) { if (false) { if (true) return x; else return y; } } else { return z; } }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else return y;` with ` return y;`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:98]
1 │ function foo7() { if (true) { if (false) { if (true) return x; else return y; } return w; } else { return z; } }
· ─────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { return z; }` with ` return z; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:69]
1 │ function foo7() { if (true) { if (false) { if (true) return x; else return y; } return w; } else { return z; } }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else return y;` with ` return y;`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:86]
1 │ function foo8() { if (true) { if (false) { if (true) return x; else return y; } else { w = x; } } else { return z; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { w = x; }` with ` w = x; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:69]
1 │ function foo8() { if (true) { if (false) { if (true) return x; else return y; } else { w = x; } } else { return z; } }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else return y;` with ` return y;`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:76]
1 │ function foo9() {if (x) { return true; } else if (y) { return true; } else { notAReturn(); } }
· ─────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { notAReturn(); }` with ` notAReturn(); `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:48]
1 │ function foo9a() {if (x) { return true; } else if (y) { return true; } else { notAReturn(); } }
· ──────────────────────────────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else if (y) { return true; } else { notAReturn(); }` with ` if (y) { return true; } else { notAReturn(); }`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:72]
1 │ function foo9b() {if (x) { return true; } if (y) { return true; } else { notAReturn(); } }
· ─────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { notAReturn(); }` with ` notAReturn(); `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:46]
1 │ function foo10() { if (foo) return bar; else (foo).bar(); }
· ────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else (foo).bar();` with ` (foo).bar();`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo11() { if (foo) return bar
2 │ else { [1, 2, 3].map(foo) } }
· ──────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { [1, 2, 3].map(foo) }` with `
[1, 2, 3].map(foo) `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo12() { if (foo) return bar
2 │ else { baz() }
· ─────────
3 │ [1, 2, 3].map(foo) }
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { baz() }` with `
baz() `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo13() { if (foo) return bar;
2 │ else { [1, 2, 3].map(foo) } }
· ──────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { [1, 2, 3].map(foo) }` with `
[1, 2, 3].map(foo) `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo14() { if (foo) return bar
2 │ else { baz(); }
· ──────────
3 │ [1, 2, 3].map(foo) }
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { baz(); }` with `
baz(); `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:46]
1 │ function foo15() { if (foo) return bar; else { baz() } qaz() }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { baz() }` with ` baz() `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo16() { if (foo) return bar
2 │ else { baz() } qaz() }
· ─────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { baz() }` with `
baz() `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo17() { if (foo) return bar
2 │ else { baz() }
· ─────────
3 │ qaz() }
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else { baz() }` with `
baz() `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:2:9]
1 │ function foo18() { if (foo) return function() {}
2 │ else [1, 2, 3].map(bar) }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace `
else [1, 2, 3].map(bar)` with `
[1, 2, 3].map(bar)`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo19() { if (true) { return x; } else if (false) { return y; } }
· ────────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else if (false) { return y; }` with ` if (false) { return y; }`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:48]
1 │ function foo20() {if (x) { return true; } else if (y) { notAReturn() } else { notAReturn(); } }
· ──────────────────────────────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else if (y) { notAReturn() } else { notAReturn(); }` with ` if (y) { notAReturn() } else { notAReturn(); }`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo21() { var x = true; if (x) { return x; } else if (x === false) { return false; } }
· ──────────────────────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else if (x === false) { return false; }` with ` if (x === false) { return false; }`.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { var a; if (bar) { return true; } else { var a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { var a; }` with ` var a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:67]
1 │ function foo() { if (bar) { var a; if (baz) { return true; } else { var a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { var a; }` with ` var a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { var a; if (bar) { return true; } else { var a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { var a; }` with ` var a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:67]
1 │ function foo() { if (bar) { var a; if (baz) { return true; } else { var a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { var a; }` with ` var a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { let a; if (bar) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:59]
1 │ class foo { bar() { let a; if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:67]
1 │ function foo() { if (bar) { let a; if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:66]
1 │ function foo() {let a; if (bar) { if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:62]
1 │ function foo() { const a = 1; if (bar) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:73]
1 │ function foo() { if (bar) { const a = 1; if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { let a; if (bar) { return true; } else { const a = 1 } }
· ───────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:67]
1 │ function foo() { if (bar) { let a; if (baz) { return true; } else { const a = 1; } } }
· ────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:61]
1 │ function foo() { class a {}; if (bar) { return true; } else { const a = 1; } }
· ────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:72]
1 │ function foo() { if (bar) { class a {}; if (baz) { return true; } else { const a = 1; } } }
· ────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:62]
1 │ function foo() { const a = 1; if (bar) { return true; } else { class a {} } }
· ──────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:73]
1 │ function foo() { if (bar) { const a = 1; if (baz) { return true; } else { class a {} } } }
· ──────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { var a; if (bar) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { if (bar) { var a; return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } while (baz) { var a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:50]
1 │ function foo(a) { if (bar) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:54]
1 │ function foo(a = 1) { if (bar) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:57]
1 │ function foo(a, b = a) { if (bar) { return true; } else { let a; } if (bar) { return true; } else { let b; }}
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:100]
1 │ function foo(a, b = a) { if (bar) { return true; } else { let a; } if (bar) { return true; } else { let b; }}
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo(...args) { if (bar) { return true; } else { let args; } }
· ─────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:68]
1 │ function foo() { try {} catch (a) { if (bar) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:79]
1 │ function foo() { try {} catch (a) { if (bar) { if (baz) { return true; } else { let a; } } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:79]
1 │ function foo() { try {} catch ({bar, a = 1}) { if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let arguments; } }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let arguments; }` with ` let arguments; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let arguments; } return arguments[0]; }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let arguments; }` with ` let arguments; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let arguments; } if (baz) { return arguments[0]; } }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let arguments; }` with ` let arguments; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let arguments; } } }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let arguments; }` with ` let arguments; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } a; }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } if (baz) { a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } } a; }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } if (quux) { a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:47]
1 │ function a() { if (foo) { return true; } else { let a; } a(); }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:45]
1 │ function a() { if (a) { return true; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:44]
1 │ function a() { if (foo) { return a; } else { let a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } function baz() { a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } (() => a) } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } var a; }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } var a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } var { a } = {}; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } if (quux) { var a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } } if (quux) { var a; } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:81]
1 │ function foo() { if (quux) { var a; } if (bar) { if (baz) { return true; } else { let a; } } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else { let a; } function a(){} }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (baz) { if (bar) { return true; } else { let a; } function a(){} } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } } if (quux) { function a(){} } }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:60]
1 │ function foo() { if (bar) { if (baz) { return true; } else { let a; } } function a(){} }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { let a; if (bar) { return true; } else { function a(){} } }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:56]
1 │ function foo() { var a; if (bar) { return true; } else { function a(){} } }
· ──────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:49]
1 │ function foo() { if (bar) { return true; } else function baz() {} };
· ─────────────────
╰────
help: Unnecessary 'else' after 'return'.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:32]
1 │ if (foo) { return true; } else { let a; }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.
help: Replace ` else { let a; }` with ` let a; `.
⚠ eslint(no-else-return): Disallow `else` blocks after `return` statements in `if` statements
⚠ eslint(no-else-return): Unnecessary 'else' after 'return'.
╭─[no_else_return.tsx:1:39]
1 │ let a; if (foo) { return true; } else { let a; }
· ──────────
╰────
help: Unnecessary 'else' after 'return'.