34 lines
		
	
	
		
			917 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			917 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
exports.__esModule = true;
 | 
						|
 | 
						|
exports.default = function (_ref) {
 | 
						|
  var t = _ref.types;
 | 
						|
 | 
						|
  return {
 | 
						|
    visitor: {
 | 
						|
      ArrowFunctionExpression: function ArrowFunctionExpression(path, state) {
 | 
						|
        if (state.opts.spec) {
 | 
						|
          var node = path.node;
 | 
						|
 | 
						|
          if (node.shadow) return;
 | 
						|
 | 
						|
          node.shadow = { this: false };
 | 
						|
          node.type = "FunctionExpression";
 | 
						|
 | 
						|
          var boundThis = t.thisExpression();
 | 
						|
          boundThis._forceShadow = path;
 | 
						|
 | 
						|
          path.ensureBlock();
 | 
						|
          path.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(state.addHelper("newArrowCheck"), [t.thisExpression(), boundThis])));
 | 
						|
 | 
						|
          path.replaceWith(t.callExpression(t.memberExpression(node, t.identifier("bind")), [t.thisExpression()]));
 | 
						|
        } else {
 | 
						|
          path.arrowFunctionToShadowed();
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  };
 | 
						|
};
 | 
						|
 | 
						|
module.exports = exports["default"]; |