Early return when returning statement with spread
I'm hitting an issue where the code generated by following (contrived) example returns early, produces a case where spread is expanding, however return
var adder = {
add(...numbers) {
return numbers.reduce((a, b) => a + b, 0)
},
prepare() {
return this.add.bind(this, ...arguments)
}
}
Returns:
var adder = {
add: function add() {
var numbers = [], len = arguments.length;
while ( len-- ) numbers[ len ] = arguments[ len ];
return numbers.reduce(function (a, b) { return a + b; }, 0)
},
prepare: function prepare() {
var i = arguments.length, argsArray = Array(i);
while ( i-- ) argsArray[i] = arguments[i];
return var ref = this.add;
ref.bind.apply(ref, [ this ].concat( argsArray ))
}
}
Checkout prepare()
. It's returning a variable assignment, which throws off Uglify, but also leaves unexecuted code.