Skip to content

Commit

Permalink
fix(ecma/codegen): don't print trailing coma for rest argument
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Dec 9, 2022
1 parent 66b5282 commit 3d0b652
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 12 deletions.
13 changes: 1 addition & 12 deletions crates/swc_ecma_codegen/src/lib.rs
Expand Up @@ -2481,23 +2481,12 @@ where
self.emit_leading_comments_of_span(node.span(), false)?;

srcmap!(node, true);

let is_last_rest = match node.props.last() {
Some(ObjectPatProp::Rest(..)) => true,
_ => false,
};
let format = if is_last_rest {
ListFormat::ObjectBindingPatternElements ^ ListFormat::AllowTrailingComma
} else {
ListFormat::ObjectBindingPatternElements
};

punct!("{");

self.emit_list(
node.span(),
Some(&node.props),
format | ListFormat::CanSkipTrailingComma,
ListFormat::ObjectBindingPatternElements | ListFormat::CanSkipTrailingComma,
)?;

punct!("}");
Expand Down
14 changes: 14 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issue-6589/js/input.js
@@ -0,0 +1,14 @@
export function func({a, b, ...rest}) {
console.log(a,b, rest)
}

const other = { unknow: "foo" }

let foo = {
...other,
bar: "baz"
};
let bar = {
bar: "baz",
...other
};
14 changes: 14 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issue-6589/js/output.js
@@ -0,0 +1,14 @@
export function func({ a , b , ...rest }) {
console.log(a, b, rest);
}
const other = {
unknow: "foo"
};
let foo = {
...other,
bar: "baz"
};
let bar = {
bar: "baz",
...other
};
@@ -0,0 +1 @@
export function func({a,b,...rest}){console.log(a,b,rest)}const other={unknow:"foo"};let foo={...other,bar:"baz"};let bar={bar:"baz",...other};
21 changes: 21 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issue-6589/ts/input.ts
@@ -0,0 +1,21 @@
export function func({
a,
b,
...rest
}: {
a: string,
b: string,
}) {
console.log(a,b, rest)
}

const other = { unknow: "foo" }

let foo = {
...other,
bar: "baz"
};
let bar = {
bar: "baz",
...other
};
17 changes: 17 additions & 0 deletions crates/swc_ecma_codegen/tests/fixture/issue-6589/ts/output.ts
@@ -0,0 +1,17 @@
export function func({ a , b , ...rest }: {
a: string;
b: string;
}) {
console.log(a, b, rest);
}
const other = {
unknow: "foo"
};
let foo = {
...other,
bar: "baz"
};
let bar = {
bar: "baz",
...other
};

0 comments on commit 3d0b652

Please sign in to comment.