diff --git a/crates/oxc_linter/src/rules.rs b/crates/oxc_linter/src/rules.rs index a16bba6951185..5736533ae68d9 100644 --- a/crates/oxc_linter/src/rules.rs +++ b/crates/oxc_linter/src/rules.rs @@ -122,6 +122,7 @@ mod eslint { pub mod no_unsafe_finally; pub mod no_unsafe_negation; pub mod no_unsafe_optional_chaining; + pub mod no_unused_expressions; pub mod no_unused_labels; pub mod no_unused_private_class_members; pub mod no_unused_vars; @@ -180,7 +181,7 @@ mod typescript { pub mod no_unnecessary_type_constraint; pub mod no_unsafe_declaration_merging; pub mod no_unsafe_function_type; - pub mod no_unused_expressions; + pub mod no_useless_empty_export; pub mod no_var_requires; pub mod no_wrapper_object_types; @@ -560,12 +561,12 @@ oxc_macros::declare_all_lint_rules! { eslint::no_dupe_else_if, eslint::no_dupe_keys, eslint::no_duplicate_case, - eslint::no_empty, + eslint::no_else_return, eslint::no_empty_character_class, eslint::no_empty_function, eslint::no_empty_pattern, eslint::no_empty_static_block, - eslint::no_else_return, + eslint::no_empty, eslint::no_eq_null, eslint::no_eval, eslint::no_ex_assign, @@ -583,10 +584,10 @@ oxc_macros::declare_all_lint_rules! { eslint::no_loss_of_precision, eslint::no_magic_numbers, eslint::no_multi_str, - eslint::no_new, eslint::no_new_func, eslint::no_new_native_nonconstructor, eslint::no_new_wrappers, + eslint::no_new, eslint::no_nonoctal_decimal_escape, eslint::no_obj_calls, eslint::no_plusplus, @@ -613,6 +614,7 @@ oxc_macros::declare_all_lint_rules! { eslint::no_unsafe_finally, eslint::no_unsafe_negation, eslint::no_unsafe_optional_chaining, + eslint::no_unused_expressions, eslint::no_unused_labels, eslint::no_unused_private_class_members, eslint::no_unused_vars, @@ -855,7 +857,6 @@ oxc_macros::declare_all_lint_rules! { typescript::consistent_type_definitions, typescript::consistent_type_imports, typescript::explicit_function_return_type, - typescript::no_unused_expressions, typescript::no_inferrable_types, typescript::no_confusing_non_null_assertion, typescript::no_duplicate_enum_values, diff --git a/crates/oxc_linter/src/rules/typescript/no_unused_expressions.rs b/crates/oxc_linter/src/rules/eslint/no_unused_expressions.rs similarity index 100% rename from crates/oxc_linter/src/rules/typescript/no_unused_expressions.rs rename to crates/oxc_linter/src/rules/eslint/no_unused_expressions.rs diff --git a/crates/oxc_linter/src/snapshots/typescript_no_unused_expressions.snap b/crates/oxc_linter/src/snapshots/eslint_no_unused_expressions.snap similarity index 72% rename from crates/oxc_linter/src/snapshots/typescript_no_unused_expressions.snap rename to crates/oxc_linter/src/snapshots/eslint_no_unused_expressions.snap index 39fda8439bca9..71af5bbb6c115 100644 --- a/crates/oxc_linter/src/snapshots/typescript_no_unused_expressions.snap +++ b/crates/oxc_linter/src/snapshots/eslint_no_unused_expressions.snap @@ -1,245 +1,245 @@ --- source: crates/oxc_linter/src/tester.rs --- - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ 0 · ─ ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a · ─ ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ f(), 0 · ────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:2] 1 │ {0} · ─ ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ [] · ── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a && b(); · ───────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a() || false · ──────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a || (b = c) · ──────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a ? b() || (c = d) : e · ────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ `untagged template literal` · ─────────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ tag`tagged template literal` · ──────────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a && b() · ──────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a ? b() : c() · ───────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a || b · ────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a() && b · ──────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a ? b : 0 · ───────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ a ? b : c() · ─────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ foo.bar; · ──────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ !a · ── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ +a · ── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:23] 1 │ "directive one"; f(); "directive two"; · ──────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:39] 1 │ function foo() {"directive one"; f(); "directive two"; } · ──────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:10] 1 │ if (0) { "not a directive"; f(); } · ────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:34] 1 │ function foo() { var foo = true; "use strict"; } · ───────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:35] 1 │ var foo = () => { var foo = true; "use strict"; } · ───────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ `untagged template literal` · ─────────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ `untagged template literal` · ─────────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ tag`tagged template literal` · ──────────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ obj?.foo · ──────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ obj?.foo.bar · ──────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ obj?.foo().bar · ────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │
· ─────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ <> · ───── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:20] 1 │ class C { static { 'use strict'; } } · ───────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ class C { static { 2 │ 'foo' @@ -248,7 +248,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:3:4] 2 │ 'foo' 3 │ 'bar' @@ -257,7 +257,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:11] 1 │ 2 │ if (0) 0; @@ -266,7 +266,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ f(0), {}; @@ -275,7 +275,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ a, b(); @@ -284,7 +284,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ ╭─▶ a() && @@ -295,7 +295,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ a?.b; @@ -304,7 +304,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ (a?.b).c; @@ -313,7 +313,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ a?.['b']; @@ -322,7 +322,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ (a?.['b']).c; @@ -331,7 +331,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ a?.b()?.c; @@ -340,7 +340,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ (a?.b()).c; @@ -349,7 +349,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ one[2]?.[3][4]; @@ -358,7 +358,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:2:4] 1 │ 2 │ one.two?.three.four; @@ -367,7 +367,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:4:6] 3 │ const foo = true; 4 │ 'use strict'; @@ -376,7 +376,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:6:6] 5 │ 6 │ 'use strict'; @@ -385,7 +385,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:5:6] 4 │ 5 │ 'use strict'; @@ -394,21 +394,21 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ foo && foo?.bar; · ──────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ foo ? foo?.bar : bar.baz; · ───────────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:3:4] 2 │ class Foo {} 3 │ Foo; @@ -417,14 +417,14 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:1] 1 │ Map; · ──────────────────── ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:3:4] 2 │ declare const foo: number | undefined; 3 │ foo; @@ -433,7 +433,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:3:4] 2 │ declare const foo: number | undefined; 3 │ foo as any; @@ -448,7 +448,7 @@ source: crates/oxc_linter/src/tester.rs 4 │ ╰──── - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:3:4] 2 │ declare const foo: number | undefined; 3 │ foo!; @@ -457,7 +457,7 @@ source: crates/oxc_linter/src/tester.rs ╰──── help: Consider removing this expression - ⚠ typescript-eslint(no-unused-expressions): Disallow unused expressions + ⚠ eslint(no-unused-expressions): Disallow unused expressions ╭─[no_unused_expressions.tsx:1:36] 1 │ const _func = (value: number) => { value + 1; } · ──────────