Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ working directory:
1 | console.log('')
: ^^^^^^^
`----
help: Either define 'console' or remove the reference to it. If 'console' is a global variable, add it to the 'globals' configuration.

Found 1 warning and 0 errors.
Finished in <variable>ms on 1 file with 94 rules using 1 threads.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ working directory:
1 | console.log(foo)
: ^^^^^^^
`----
help: Either define 'console' or remove the reference to it. If 'console' is a global variable, add it to the 'globals' configuration.

Found 1 warning and 0 errors.
Finished in <variable>ms on 1 file with 94 rules using 1 threads.
Expand Down
4 changes: 3 additions & 1 deletion crates/oxc_linter/src/rules/eslint/no_setter_return.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ use oxc_span::Span;
use crate::{AstNode, context::LintContext, rule::Rule};

fn no_setter_return_diagnostic(span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn("Setter cannot return a value").with_label(span)
OxcDiagnostic::warn("Setter cannot return a value")
.with_help("Remove the return statement or ensure it does not return a value.")
.with_label(span)
}

#[derive(Debug, Default, Clone)]
Expand Down
6 changes: 5 additions & 1 deletion crates/oxc_linter/src/rules/eslint/no_undef.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ use crate::{
};

fn no_undef_diagnostic(name: &str, span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn(format!("'{name}' is not defined.")).with_label(span)
OxcDiagnostic::warn(format!("'{name}' is not defined."))
.with_help(format!(
"Either define '{name}' or remove the reference to it. If '{name}' is a global variable, add it to the 'globals' configuration."
))
.with_label(span)
}

#[derive(Debug, Default, Clone, JsonSchema, Deserialize)]
Expand Down
4 changes: 3 additions & 1 deletion crates/oxc_linter/src/rules/eslint/no_unreachable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ use oxc_span::{GetSpan, Span};
use crate::{context::LintContext, rule::Rule};

fn no_unreachable_diagnostic(span: Span) -> OxcDiagnostic {
OxcDiagnostic::warn("Unreachable code.").with_label(span)
OxcDiagnostic::warn("Unreachable code.")
.with_help("Remove the unreachable code or fix the control flow to make it reachable.")
.with_label(span)
}

/// <https://github.com/eslint/eslint/blob/069aa680c78b8516b9a1b568519f1d01e74fb2a2/lib/rules/no-unreachable.js#L196>
Expand Down
42 changes: 42 additions & 0 deletions crates/oxc_linter/src/snapshots/eslint_no_setter_return.snap
Original file line number Diff line number Diff line change
Expand Up @@ -7,249 +7,291 @@ source: crates/oxc_linter/src/tester.rs
1 │ ({ set a(val){ return val + 1; } })
· ───────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:17]
1 │ ({ set a(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:24]
1 │ class A { set a(val) { return 1; } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:31]
1 │ class A { static set a(val) { return 1; } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:23]
1 │ (class { set a(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:17]
1 │ ({ set a(val) { return val; } })
· ───────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:24]
1 │ class A { set a(val) { return undefined; } }
· ─────────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:23]
1 │ (class { set a(val) { return null; } })
· ────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:17]
1 │ ({ set a(val) { return x + y; } })
· ─────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:24]
1 │ class A { set a(val) { return foo(); } }
· ─────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:23]
1 │ (class { set a(val) { return this._a; } })
· ───────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:17]
1 │ ({ set a(val) { return this.a; } })
· ──────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:28]
1 │ ({ set a(val) { if (foo) { return 1; }; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:30]
1 │ class A { set a(val) { try { return 1; } catch(e) {} } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:57]
1 │ (class { set a(val) { while (foo){ if (bar) break; else return 1; } } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:17]
1 │ ({ set a(val) { return 1; }, set b(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:43]
1 │ ({ set a(val) { return 1; }, set b(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:24]
1 │ class A { set a(val) { return 1; } set b(val) { return 1; } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:49]
1 │ class A { set a(val) { return 1; } set b(val) { return 1; } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:23]
1 │ (class { set a(val) { return 1; } static set b(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:55]
1 │ (class { set a(val) { return 1; } static set b(val) { return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:27]
1 │ ({ set a(val) { if(val) { return 1; } else { return 2 }; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:46]
1 │ ({ set a(val) { if(val) { return 1; } else { return 2 }; } })
· ────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:46]
1 │ class A { set a(val) { switch(val) { case 1: return x; case 2: return y; default: return z } } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:64]
1 │ class A { set a(val) { switch(val) { case 1: return x; case 2: return y; default: return z } } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:83]
1 │ class A { set a(val) { switch(val) { case 1: return x; case 2: return y; default: return z } } }
· ────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:62]
1 │ (class { static set a(val) { if (val > 0) { this._val = val; return val; } return false; } })
· ───────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:76]
1 │ (class { static set a(val) { if (val > 0) { this._val = val; return val; } return false; } })
· ─────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:27]
1 │ ({ set a(val) { if(val) { return 1; } else { return; }; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:46]
1 │ class A { set a(val) { switch(val) { case 1: return x; case 2: return; default: return z } } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:81]
1 │ class A { set a(val) { switch(val) { case 1: return x; case 2: return; default: return z } } }
· ────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:72]
1 │ (class { static set a(val) { if (val > 0) { this._val = val; return; } return false; } })
· ─────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:32]
1 │ ({ set a(val) { function b(){} return b(); } })
· ───────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:24]
1 │ class A { set a(val) { return () => {}; } }
· ────────────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:49]
1 │ (class { set a(val) { function b(){ return 1; } return 2; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:41]
1 │ ({ set a(val) { function b(){ return; } return 1; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:58]
1 │ class A { set a(val) { var x = function() { return 1; }; return 2; } }
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:50]
1 │ (class { set a(val) { var x = () => { return; }; return 2; } })
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:33]
1 │ function f(){}; ({ set a(val) { return 1; } });
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:44]
1 │ x = function f(){}; class A { set a(val) { return 1; } };
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:40]
1 │ x = () => {}; A = class { set a(val) { return 1; } };
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.

⚠ eslint(no-setter-return): Setter cannot return a value
╭─[no_setter_return.js:1:25]
1 │ return; ({ set a(val) { return 1; } }); return 2;
· ─────────
╰────
help: Remove the return statement or ensure it does not return a value.
Loading
Loading