facebookarchive / prepack

A JavaScript bundle optimizer.
http://prepack.io
Other
14.22k stars 425 forks source link

Invariant when trying to apply Babel helper for objectSpread #2574

Closed trueadm closed 5 years ago

trueadm commented 5 years ago

We hit an invariant when dealing with this test case:

function objectSpread(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};
    var ownKeys = Object.keys(source);

    if (typeof Object.getOwnPropertySymbols === 'function') {
      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
        return Object.getOwnPropertyDescriptor(source, sym).enumerable;
      }));
    }

    ownKeys.forEach(function (key) {
      babelHelpers.defineProperty(target, key, source[key]);
    });
  }

  return target;
}

function fn(baseHeaders, contentEncoding, userAgent) {
  var headers = objectSpread({}, baseHeaders);

  if (contentEncoding) {
    headers['Content-Encoding'] = contentEncoding;
  }

  if (userAgent) {
    headers['User-Agent'] = userAgent;
  }

  return headers;
}

global.__optimize && __optimize(fn);