Optimize output of rest param transformer
arv opened this issue · 0 comments
arv commented
In a strict function if all accesses of the rest param is rest[expr]
and rest.length
we could generate code that only references arguments
.
For example:
'use strict';
function f(x, ...xs) {
for (let i = 0; i < xs.length; i++) {
print(xs[i]);
}
}
Today we compile that into:
'use strict';
function f(x) {
for (var xs = [],
$__0 = 1; $__0 < arguments.length; $__0++)
xs[$__0 - 1] = arguments[$__0];
for (var i = 0; i < xs.length; i++) {
print(xs[i]);
}
}
But we could compile it into:
'use strict';
function f(x) {
for (var i = 0; i < arguments.length - 1; i++) {
print(arguments[i + 1]);
}
}