diff --git a/crates/oxc_linter/src/rules/react/jsx_no_useless_fragment.rs b/crates/oxc_linter/src/rules/react/jsx_no_useless_fragment.rs index 2678e4403..1fcdb0ad7 100644 --- a/crates/oxc_linter/src/rules/react/jsx_no_useless_fragment.rs +++ b/crates/oxc_linter/src/rules/react/jsx_no_useless_fragment.rs @@ -88,11 +88,13 @@ impl JsxNoUselessFragment { && !is_fragment_with_only_text_and_is_not_child(node.id(), &elem.children, ctx) && !(self.allow_expressions && is_fragment_with_single_expression(&elem.children)) { - ctx.diagnostic(JsxNoUselessFragmentDiagnostic::NeedsMoreChildren(elem.span)); + let span = elem.opening_element.span; + ctx.diagnostic(JsxNoUselessFragmentDiagnostic::NeedsMoreChildren(span)); } if is_child_of_html_element(node, ctx) { - ctx.diagnostic(JsxNoUselessFragmentDiagnostic::ChildOfHtmlElement(elem.span)); + let span = elem.opening_element.span; + ctx.diagnostic(JsxNoUselessFragmentDiagnostic::ChildOfHtmlElement(span)); } } fn check_fragment(&self, node: &AstNode, elem: &JSXFragment, ctx: &LintContext) { @@ -100,11 +102,13 @@ impl JsxNoUselessFragment { && !is_fragment_with_only_text_and_is_not_child(node.id(), &elem.children, ctx) && !(self.allow_expressions && is_fragment_with_single_expression(&elem.children)) { - ctx.diagnostic(JsxNoUselessFragmentDiagnostic::NeedsMoreChildren(elem.span)); + let span = elem.opening_fragment.span; + ctx.diagnostic(JsxNoUselessFragmentDiagnostic::NeedsMoreChildren(span)); } if is_child_of_html_element(node, ctx) { - ctx.diagnostic(JsxNoUselessFragmentDiagnostic::ChildOfHtmlElement(elem.span)); + let span = elem.opening_fragment.span; + ctx.diagnostic(JsxNoUselessFragmentDiagnostic::ChildOfHtmlElement(span)); } } } diff --git a/crates/oxc_linter/src/snapshots/jsx_no_useless_fragment.snap b/crates/oxc_linter/src/snapshots/jsx_no_useless_fragment.snap index 1186ac67b..2b636e843 100644 --- a/crates/oxc_linter/src/snapshots/jsx_no_useless_fragment.snap +++ b/crates/oxc_linter/src/snapshots/jsx_no_useless_fragment.snap @@ -5,58 +5,57 @@ expression: jsx_no_useless_fragment ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │ <>> - · ───── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │ <>{}> - · ─────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │
moo<>foo>
- · ──────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Passing a fragment to a HTML element is useless. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │moo<>foo>
- · ──────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │ <>{meow}> - · ─────────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │<>{meow}>
- · ─────────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Passing a fragment to a HTML element is useless. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │<>{meow}>
- · ─────────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] 1 │ <>> - · ─────────── + · ── ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] - 1 │ - 2 │ ╭─▶ <> - 3 │ │ - 4 │ ╰─▶ > - 5 │ + 1 │ + 2 │ <> + · ── + 3 │ ╰──── ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. @@ -67,78 +66,76 @@ expression: jsx_no_useless_fragment ⚠ eslint-plugin-react(jsx-no-useless-fragment): Fragments should contain more than one child. ╭─[jsx_no_useless_fragment.tsx:1:1] - 1 │ - 2 │ ╭─▶