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
Paragraph
+ return (Paragraph
+ return (