From b70f405b5f7c6f7afeb4bdb9272fcf2ab0b764cd Mon Sep 17 00:00:00 2001 From: unvalley <38400669+unvalley@users.noreply.github.com> Date: Fri, 14 Jun 2024 12:23:31 +0900 Subject: [PATCH] fix(lint/useJsxKeyInIterable): fix a false positive when key is in parenthesized return statement (#3205) --- CHANGELOG.md | 4 ++++ .../src/lint/correctness/use_jsx_key_in_iterable.rs | 1 + .../tests/specs/correctness/useJsxKeyInIterable/valid.jsx | 7 ++++++- .../specs/correctness/useJsxKeyInIterable/valid.jsx.snap | 7 ++++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb52cf0f6d67..3daeb3358628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ our [guidelines for writing a good changelog entry](https://github.com/biomejs/b - Add [nursery/noShorthandPropertyOverrides](https://biomejs.dev/linter/rules/no-shorthand-property-overrides). [#2958](https://github.com/biomejs/biome/issues/2958) Contributed by @neokidev +#### Bug fixes + +- Fix [[#3084](https://github.com/biomejs/biome/issues/3084)] false positive by correctly recognize parenthesized return statement. Contributed by @unvalley + ### CLI #### Enhancement diff --git a/crates/biome_js_analyze/src/lint/correctness/use_jsx_key_in_iterable.rs b/crates/biome_js_analyze/src/lint/correctness/use_jsx_key_in_iterable.rs index d59fc091a8ab..d4bba0f3bb1f 100644 --- a/crates/biome_js_analyze/src/lint/correctness/use_jsx_key_in_iterable.rs +++ b/crates/biome_js_analyze/src/lint/correctness/use_jsx_key_in_iterable.rs @@ -193,6 +193,7 @@ fn handle_function_body( .as_ref() .and_then(|ret| { let returned_value = ret.argument()?; + let returned_value = unwrap_parenthesis(returned_value)?; Some(ReactComponentExpression::can_cast( returned_value.syntax().kind(), )) diff --git a/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx b/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx index e1953f741ba7..5d00b470cdb7 100644 --- a/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx +++ b/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx @@ -95,4 +95,9 @@ React.Children.map(c => React.cloneElement(c, {key: c})); [].map((item) => { const node = ; return {node}; -}) +}); + +[].map((el) => { + const content =

Paragraph

+ return (
{content}
); +}); diff --git a/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx.snap b/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx.snap index 640a37a6a66a..ceb9f23e5640 100644 --- a/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx.snap +++ b/crates/biome_js_analyze/tests/specs/correctness/useJsxKeyInIterable/valid.jsx.snap @@ -101,6 +101,11 @@ React.Children.map(c => React.cloneElement(c, {key: c})); [].map((item) => { const node = ; return {node}; -}) +}); + +[].map((el) => { + const content =

Paragraph

+ return (
{content}
); +}); ```