1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.buildScopeIIFE = buildScopeIIFE;
- exports.collectShadowedParamsNames = collectShadowedParamsNames;
- exports.iifeVisitor = void 0;
- var _core = require("@babel/core");
- const iifeVisitor = {
- "ReferencedIdentifier|BindingIdentifier"(path, state) {
- const {
- scope,
- node
- } = path;
- const {
- name
- } = node;
- if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) {
- state.needsOuterBinding = true;
- path.stop();
- }
- },
- "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": path => path.skip()
- };
- exports.iifeVisitor = iifeVisitor;
- function collectShadowedParamsNames(param, functionScope, shadowedParams) {
- for (const name of Object.keys(param.getBindingIdentifiers())) {
- var _functionScope$bindin;
- const constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations;
- if (constantViolations) {
- for (const redeclarator of constantViolations) {
- const node = redeclarator.node;
- switch (node.type) {
- case "VariableDeclarator":
- {
- if (node.init === null) {
- const declaration = redeclarator.parentPath;
- if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) {
- redeclarator.remove();
- break;
- }
- }
- shadowedParams.add(name);
- break;
- }
- case "FunctionDeclaration":
- shadowedParams.add(name);
- break;
- }
- }
- }
- }
- }
- function buildScopeIIFE(shadowedParams, body) {
- const args = [];
- const params = [];
- for (const name of shadowedParams) {
- args.push(_core.types.identifier(name));
- params.push(_core.types.identifier(name));
- }
- return _core.types.returnStatement(_core.types.callExpression(_core.types.arrowFunctionExpression(params, body), args));
- }
- //# sourceMappingURL=shadow-utils.js.map
|