implement object rest/spread (#2265)
- improve parse errors for destructuring spread elements - `unsafe` for object literals with rest elements Miscellaneous - increase mocha unicode surrogate test timeout
This commit is contained in:
@@ -695,3 +695,65 @@ export_default_class_decl: {
|
||||
}
|
||||
expect_exact: "export default class Car{};export class Cab{};"
|
||||
}
|
||||
|
||||
object_rest_spread: {
|
||||
mangle = {
|
||||
toplevel: true,
|
||||
}
|
||||
input: {
|
||||
var { w: w1, ...V } = { w: 7, x: 1, y: 2 }; console.log(w1, V);
|
||||
let { w: w2, ...L } = { w: 8, x: 3, y: 4 }; console.log(w2, L);
|
||||
const { w: w3, ...C } = { w: 9, x: 5, y: 6 }; console.log(w3, C);
|
||||
|
||||
let b;
|
||||
({ b, ...V } = { a: 1, b: 2, c: 3 }); console.log(V);
|
||||
({ b, ...L } = { a: 4, b: 5, c: 6 }); console.log(L);
|
||||
|
||||
(function({ y, ...p }){ console.log(p); })({ x: 1, y: 2, z: 3 });
|
||||
(({ y, ...p }) => { console.log(p); })({ x: 4, y: 5, z: 6 });
|
||||
|
||||
const T = { a: 1, b: 2 }; console.log({ ...T, w: 0, ...{}, ...L, ...{K: 9} });
|
||||
}
|
||||
expect: {
|
||||
var { w: o, ...l } = { w: 7, x: 1, y: 2 }; console.log(o, l);
|
||||
let { w: c, ...n } = { w: 8, x: 3, y: 4 }; console.log(c, n);
|
||||
const { w: e, ...s } = { w: 9, x: 5, y: 6 }; console.log(e, s);
|
||||
|
||||
let g;
|
||||
({ b: g, ...l } = { a: 1, b: 2, c: 3 }); console.log(l);
|
||||
({ b: g, ...n } = { a: 4, b: 5, c: 6 }); console.log(n);
|
||||
|
||||
(function({ y: o, ...l }) { console.log(l); })({ x: 1, y: 2, z: 3 });
|
||||
(({ y: o, ...l }) => { console.log(l); })({ x: 4, y: 5, z: 6 });
|
||||
|
||||
const w = { a: 1, b: 2 }; console.log({ ...w, w: 0, ...{}, ...n, ...{ K: 9 } });
|
||||
}
|
||||
}
|
||||
|
||||
object_spread_unsafe: {
|
||||
options = {
|
||||
collapse_vars: true,
|
||||
evaluate: true,
|
||||
join_vars: true,
|
||||
passes: 3,
|
||||
reduce_vars: true,
|
||||
side_effects: true,
|
||||
toplevel: true,
|
||||
unsafe: true,
|
||||
unused: true,
|
||||
}
|
||||
mangle = {
|
||||
toplevel: true,
|
||||
}
|
||||
input: {
|
||||
var o1 = { x: 1, y: 2 };
|
||||
var o2 = { x: 3, z: 4 };
|
||||
var cloned = { ...o1 };
|
||||
var merged = { ...o1, ...o2 };
|
||||
console.log(cloned, merged);
|
||||
}
|
||||
expect: {
|
||||
var o = { x: 1, y: 2 }, l = { ...o }, x = { ...o, ...{ x: 3, z: 4 } };
|
||||
console.log(l, x);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user