Skip to content

Commit f4ab05f

Browse files
committed
fix(linter): panic in unicorn/no-useless-spread (#10715)
closes #10714 `to_expression` was unwrapping a `none` value, it now matches on the array element to prevent this
1 parent c4a5dba commit f4ab05f

File tree

1 file changed

+14
-1
lines changed
  • crates/oxc_linter/src/rules/unicorn/no_useless_spread

1 file changed

+14
-1
lines changed

crates/oxc_linter/src/rules/unicorn/no_useless_spread/mod.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,18 @@ fn diagnose_array_in_array_spread<'a>(
281281
spreads.iter().flat_map(|arr| arr.elements.iter()).collect::<Vec<_>>();
282282
let n = elements.len();
283283
for (i, el) in elements.into_iter().enumerate() {
284-
codegen.print_expression(el.to_expression());
284+
match el {
285+
ArrayExpressionElement::Elision(_) => {
286+
if i == n - 1 {
287+
codegen.print_ascii_byte(b',');
288+
}
289+
}
290+
ArrayExpressionElement::SpreadElement(spread) => {
291+
codegen.print_str("...");
292+
codegen.print_expression(&spread.argument);
293+
}
294+
_ => codegen.print_expression(el.to_expression()),
295+
}
285296
if i < n - 1 {
286297
codegen.print_ascii_byte(b',');
287298
codegen.print_ascii_byte(b' ');
@@ -760,6 +771,8 @@ fn test() {
760771
// Issue: <https://github.com/oxc-project/oxc/issues/8115>
761772
("setupServer(...[...importHandlers])", "setupServer(...importHandlers)"),
762773
("setupServer(...[1, 2, 3])", "setupServer(1, 2, 3)"),
774+
("[...[1,2,,,],...[3,4,,,]]", "[1, 2, , , 3, 4, , ,]"),
775+
("[...[...foo], ...[...bar]]", "[...foo, ...bar]"),
763776
];
764777
Tester::new(NoUselessSpread::NAME, NoUselessSpread::PLUGIN, pass, fail)
765778
.expect_fix(fix)

0 commit comments

Comments
 (0)