Daniel Tschinder c2d2702cf9 Fix destructuring evaluation with call expressions (#4552)
* Fix destructuring evaluation with call expressions

Do not optimize destructions with callExpressions, as the call
might change the value of a variable that we are assigning to.

Fixes #4054

* Also deopt on member expressions

members expressions might be getters who have side effects
2016-09-24 19:08:53 -04:00

37 lines
652 B
JavaScript

var a = 1;
var b = 2;
var a = 1;
var b = 2;
var a = 1;
var b = 2;
var c = [3, 4];
var a = 1;
var b = 2;
var c = [3, 4];
var _ref = [1, 2, 3];
var a = _ref[0];
var b = _ref[1];
var _ref2 = [1, 2, 3];
var a = _ref2[0];
var b = _ref2[1];
var _ref3 = [a, b];
var a = _ref3[0];
var b = _ref3[1];
var _ref4 = [a[1], a[0]];
a[0] = _ref4[0];
a[1] = _ref4[1];
var _ref5 = [].concat(babelHelpers.toConsumableArray(foo), [bar]);
var a = _ref5[0];
var b = _ref5[1];
var _ref6 = [foo(), bar];
var a = _ref6[0];
var b = _ref6[1];
var _ref7 = [clazz.foo(), bar];
var a = _ref7[0];
var b = _ref7[1];
var _ref8 = [clazz.foo, bar];
var a = _ref8[0];
var b = _ref8[1];