Files
Huáng JùnliàngandGitHub 26af3161e6 Optimize do expression output (#17444)
* add new test case

* opt: conditionally apply the flatten transform

Only apply the flatten transform when the do expression contains Break/Continue/Return. This enables us to optimize the output since we don't have to memoize intermediate results.

* update test outputs

* remove unreachable code

variable declaration within for in/of can not have initializer.

* update test case to cover spread element

* add more test cases for early exit scenario

* make node 6 happy

* revert complex variable declaration removal
2025-07-25 14:29:47 -04:00

42 lines
689 B
JavaScript

function f1(a) {
var _do2;
{
var _do;
if (effects.push(1), a) return 0;
_do = arg => effects.push(arg);
}
{
var _do3;
if (effects.push(2), false) return 1;
_do3 = 'arg';
}
_do2 = _do3;
_do(_do2);
}
function f2(a) {
var _do5, _do6, _do7, _do8, _do0;
{
var _do4;
if (effects.push(1), false) return 0;
_do4 = {
key: arg => effects.push(arg)
};
}
_do8 = _do4;
{
var _do9;
if (effects.push(2), a) return 1;
_do9 = 'key';
}
_do0 = _do8[_do9];
_do5 = _do0;
{
var _do1;
if (effects.push(3), false) return [2];
_do1 = ['arg'];
}
_do7 = _do1;
_do6 = [..._do7];
_do5.call(_do4, ..._do6);
}