diff options
Diffstat (limited to 'node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js')
| -rw-r--r-- | node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js b/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js deleted file mode 100644 index 0d53bf6f..00000000 --- a/node_modules/@babel/plugin-transform-block-scoping/lib/annex-B_3_3.js +++ /dev/null @@ -1,101 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.annexB33FunctionsVisitor = void 0; -exports.isVarScope = isVarScope; -var _core = require("@babel/core"); -const annexB33FunctionsVisitor = exports.annexB33FunctionsVisitor = Object.assign({ - VariableDeclaration(path) { - if (isStrict(path)) return; - if (path.node.kind !== "var") return; - const varScope = path.scope.getFunctionParent() || path.scope.getProgramParent(); - varScope.path.traverse(functionsToVarVisitor, { - names: Object.keys(path.getBindingIdentifiers()) - }); - } -}, { - BlockStatement(path) { - if (isStrict(path)) return; - if (_core.types.isFunction(path.parent, { - body: path.node - })) return; - transformStatementList(path.get("body")); - }, - SwitchCase(path) { - if (isStrict(path)) return; - transformStatementList(path.get("consequent")); - } -}); -function transformStatementList(paths) { - outer: for (const path of paths) { - if (!path.isFunctionDeclaration()) continue; - if (path.node.async || path.node.generator) return; - const { - scope - } = path.parentPath; - if (isVarScope(scope)) return; - const { - name - } = path.node.id; - let currScope = scope; - do { - if (currScope.parent.hasOwnBinding(name)) continue outer; - currScope = currScope.parent; - } while (!isVarScope(currScope)); - maybeTransformBlockScopedFunction(path); - } -} -function maybeTransformBlockScopedFunction(path) { - const { - node, - parentPath: { - scope - } - } = path; - const { - id - } = node; - scope.removeOwnBinding(id.name); - node.id = null; - const varNode = _core.types.variableDeclaration("var", [_core.types.variableDeclarator(id, _core.types.toExpression(node))]); - varNode._blockHoist = 2; - const [varPath] = path.replaceWith(varNode); - scope.registerDeclaration(varPath); -} -const functionsToVarVisitor = { - Scope(path, { - names - }) { - for (const name of names) { - const binding = path.scope.getOwnBinding(name); - if (binding && binding.kind === "hoisted") { - maybeTransformBlockScopedFunction(binding.path); - } - } - }, - "Expression|Declaration"(path) { - path.skip(); - } -}; -function isVarScope(scope) { - return scope.path.isFunctionParent() || scope.path.isProgram(); -} -function isStrict(path) { - return !!path.find(({ - node - }) => { - var _node$directives; - if (_core.types.isProgram(node)) { - if (node.sourceType === "module") return true; - } else if (_core.types.isClass(node)) { - return true; - } else if (!_core.types.isBlockStatement(node)) { - return false; - } - return (_node$directives = node.directives) == null ? void 0 : _node$directives.some(directive => directive.value.value === "use strict"); - }); -} - -//# sourceMappingURL=annex-B_3_3.js.map |
