Files
Kadhirash SivakumarandGitHub ef8d761f0c fix: Preserve computed key evaluation order in nested object rest (#17576)
* fix: Preserve computed key evaluation order in nested object rest (#17274)

* fix: use inline memoization for computed keys to preserve eval order

* test: use distinct values to properly validate computed key ordering fix

* docs: update comments to reflect inline memoization approach

* refactor: remove redundant state flags and AST mutations

* fix: only memoize computed keys when rest elements are present

* refactor: address review feedback
2025-11-12 08:52:39 -05:00

55 lines
779 B
JavaScript

var _key, _key2, _key3;
var key, x, y, z;
// impure
key = 1;
var _ = {
1: {
a: 1,
y: 1
}
},
{
[_key = key++]: {
y
}
} = _,
x = babelHelpers.objectWithoutProperties(_[_key], ["y"]);
expect(x).toEqual({
a: 1
});
expect(key).toBe(2);
expect(y).toBe(1);
// takes care of the order
key = 1;
var _$ = {
2: {
y: 2,
z: 3
},
3: {
y: 4,
z: 6
}
},
{
[_key2 = ++key]: {
y
},
[_key3 = ++key]: {
z
}
} = _$,
rest_y = babelHelpers.objectWithoutProperties(_$[_key2], ["y"]),
rest_z = babelHelpers.objectWithoutProperties(_$[_key3], ["z"]);
expect(y).toBe(2);
expect(rest_y).toEqual({
z: 3
});
expect(z).toBe(6);
expect(rest_z).toEqual({
y: 4
});
expect(key).toBe(3);