diff options
Diffstat (limited to 'node_modules/regenerator-transform/lib/meta.js')
| -rw-r--r-- | node_modules/regenerator-transform/lib/meta.js | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/node_modules/regenerator-transform/lib/meta.js b/node_modules/regenerator-transform/lib/meta.js deleted file mode 100644 index ad6cec20..00000000 --- a/node_modules/regenerator-transform/lib/meta.js +++ /dev/null @@ -1,102 +0,0 @@ -"use strict"; - -var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); -var _assert = _interopRequireDefault(require("assert")); -var _util = require("./util.js"); -/** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -var mMap = new WeakMap(); -function m(node) { - if (!mMap.has(node)) { - mMap.set(node, {}); - } - return mMap.get(node); -} -var hasOwn = Object.prototype.hasOwnProperty; -function makePredicate(propertyName, knownTypes) { - function onlyChildren(node) { - var t = (0, _util.getTypes)(); - t.assertNode(node); - - // Assume no side effects until we find out otherwise. - var result = false; - function check(child) { - if (result) { - // Do nothing. - } else if (Array.isArray(child)) { - child.some(check); - } else if (t.isNode(child)) { - _assert["default"].strictEqual(result, false); - result = predicate(child); - } - return result; - } - var keys = t.VISITOR_KEYS[node.type]; - if (keys) { - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var child = node[key]; - check(child); - } - } - return result; - } - function predicate(node) { - (0, _util.getTypes)().assertNode(node); - var meta = m(node); - if (hasOwn.call(meta, propertyName)) return meta[propertyName]; - - // Certain types are "opaque," which means they have no side - // effects or leaps and we don't care about their subexpressions. - if (hasOwn.call(opaqueTypes, node.type)) return meta[propertyName] = false; - if (hasOwn.call(knownTypes, node.type)) return meta[propertyName] = true; - return meta[propertyName] = onlyChildren(node); - } - predicate.onlyChildren = onlyChildren; - return predicate; -} -var opaqueTypes = { - FunctionExpression: true, - ArrowFunctionExpression: true -}; - -// These types potentially have side effects regardless of what side -// effects their subexpressions have. -var sideEffectTypes = { - CallExpression: true, - // Anything could happen! - ForInStatement: true, - // Modifies the key variable. - UnaryExpression: true, - // Think delete. - BinaryExpression: true, - // Might invoke .toString() or .valueOf(). - AssignmentExpression: true, - // Side-effecting by definition. - UpdateExpression: true, - // Updates are essentially assignments. - NewExpression: true // Similar to CallExpression. -}; - -// These types are the direct cause of all leaps in control flow. -var leapTypes = { - YieldExpression: true, - BreakStatement: true, - ContinueStatement: true, - ReturnStatement: true, - ThrowStatement: true -}; - -// All leap types are also side effect types. -for (var type in leapTypes) { - if (hasOwn.call(leapTypes, type)) { - sideEffectTypes[type] = leapTypes[type]; - } -} -exports.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes); -exports.containsLeap = makePredicate("containsLeap", leapTypes);
\ No newline at end of file |
