diff options
Diffstat (limited to 'node_modules/babel-traverse/lib')
9 files changed, 80 insertions, 15 deletions
diff --git a/node_modules/babel-traverse/lib/path/context.js b/node_modules/babel-traverse/lib/path/context.js index bbb0c337e..961e66e0c 100644 --- a/node_modules/babel-traverse/lib/path/context.js +++ b/node_modules/babel-traverse/lib/path/context.js @@ -246,7 +246,7 @@ function setKey(key) { } function requeue() { - var pathToQueue = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0]; + var pathToQueue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this; if (pathToQueue.removed) return; diff --git a/node_modules/babel-traverse/lib/path/evaluation.js b/node_modules/babel-traverse/lib/path/evaluation.js index 77fcf488a..724d4728e 100644 --- a/node_modules/babel-traverse/lib/path/evaluation.js +++ b/node_modules/babel-traverse/lib/path/evaluation.js @@ -230,7 +230,49 @@ function evaluate() { return arr; } - if (path.isObjectExpression()) {} + if (path.isObjectExpression()) { + var obj = {}; + var props = path.get("properties"); + for (var _iterator3 = props, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : (0, _getIterator3.default)(_iterator3);;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + var prop = _ref3; + + if (prop.isObjectMethod() || prop.isSpreadProperty()) { + return deopt(prop); + } + var keyPath = prop.get("key"); + var key = keyPath; + if (prop.node.computed) { + key = key.evaluate(); + if (!key.confident) { + return deopt(keyPath); + } + key = key.value; + } else if (key.isIdentifier()) { + key = key.node.name; + } else { + key = key.node.value; + } + var valuePath = prop.get("value"); + var _value2 = valuePath.evaluate(); + if (!_value2.confident) { + return deopt(valuePath); + } + _value2 = _value2.value; + obj[key] = _value2; + } + return obj; + } if (path.isLogicalExpression()) { var wasConfident = confident; diff --git a/node_modules/babel-traverse/lib/path/index.js b/node_modules/babel-traverse/lib/path/index.js index d257dac5b..d97a3d190 100644 --- a/node_modules/babel-traverse/lib/path/index.js +++ b/node_modules/babel-traverse/lib/path/index.js @@ -135,7 +135,7 @@ var NodePath = function () { }; NodePath.prototype.buildCodeFrameError = function buildCodeFrameError(msg) { - var Error = arguments.length <= 1 || arguments[1] === undefined ? SyntaxError : arguments[1]; + var Error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SyntaxError; return this.hub.file.buildCodeFrameError(this.node, msg, Error); }; diff --git a/node_modules/babel-traverse/lib/path/inference/index.js b/node_modules/babel-traverse/lib/path/inference/index.js index 4f6a7edce..d93966378 100644 --- a/node_modules/babel-traverse/lib/path/inference/index.js +++ b/node_modules/babel-traverse/lib/path/inference/index.js @@ -85,6 +85,8 @@ function _isBaseType(baseName, type, soft) { return t.isAnyTypeAnnotation(type); } else if (baseName === "mixed") { return t.isMixedTypeAnnotation(type); + } else if (baseName === "empty") { + return t.isEmptyTypeAnnotation(type); } else if (baseName === "void") { return t.isVoidTypeAnnotation(type); } else { diff --git a/node_modules/babel-traverse/lib/path/inference/inferers.js b/node_modules/babel-traverse/lib/path/inference/inferers.js index 5fe093b23..ecce2b482 100644 --- a/node_modules/babel-traverse/lib/path/inference/inferers.js +++ b/node_modules/babel-traverse/lib/path/inference/inferers.js @@ -1,7 +1,7 @@ "use strict"; exports.__esModule = true; -exports.Class = exports.Function = exports.Identifier = undefined; +exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = exports.Identifier = undefined; var _infererReference = require("./inferer-reference"); @@ -163,8 +163,11 @@ function Func() { return t.genericTypeAnnotation(t.identifier("Function")); } -exports.Function = Func; -exports.Class = Func; +exports.FunctionExpression = Func; +exports.ArrowFunctionExpression = Func; +exports.FunctionDeclaration = Func; +exports.ClassExpression = Func; +exports.ClassDeclaration = Func; function CallExpression() { return resolveCall(this.get("callee")); } diff --git a/node_modules/babel-traverse/lib/path/lib/virtual-types.js b/node_modules/babel-traverse/lib/path/lib/virtual-types.js index c4261da70..1cb61cc8c 100644 --- a/node_modules/babel-traverse/lib/path/lib/virtual-types.js +++ b/node_modules/babel-traverse/lib/path/lib/virtual-types.js @@ -15,7 +15,7 @@ var ReferencedIdentifier = exports.ReferencedIdentifier = { var node = _ref.node; var parent = _ref.parent; - if (!t.isIdentifier(node, opts)) { + if (!t.isIdentifier(node, opts) && !t.isJSXMemberExpression(parent, opts)) { if (t.isJSXIdentifier(node, opts)) { if (_babelTypes.react.isCompatTag(node.name)) return false; } else { diff --git a/node_modules/babel-traverse/lib/path/modification.js b/node_modules/babel-traverse/lib/path/modification.js index 9c8c7d3e5..a763f6d7b 100644 --- a/node_modules/babel-traverse/lib/path/modification.js +++ b/node_modules/babel-traverse/lib/path/modification.js @@ -257,7 +257,7 @@ function pushContainer(listKey, nodes) { } function hoist() { - var scope = arguments.length <= 0 || arguments[0] === undefined ? this.scope : arguments[0]; + var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.scope; var hoister = new _hoister2.default(this, scope); return hoister.run(); diff --git a/node_modules/babel-traverse/lib/scope/index.js b/node_modules/babel-traverse/lib/scope/index.js index a1146e3ab..36cfb3429 100644 --- a/node_modules/babel-traverse/lib/scope/index.js +++ b/node_modules/babel-traverse/lib/scope/index.js @@ -10,6 +10,10 @@ var _create = require("babel-runtime/core-js/object/create"); var _create2 = _interopRequireDefault(_create); +var _map = require("babel-runtime/core-js/map"); + +var _map2 = _interopRequireDefault(_map); + var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); @@ -234,6 +238,8 @@ var Scope = function () { this.parentBlock = path.parent; this.block = path.node; this.path = path; + + this.labels = new _map2.default(); } Scope.prototype.traverse = function traverse(node, opts, state) { @@ -241,7 +247,7 @@ var Scope = function () { }; Scope.prototype.generateDeclaredUidIdentifier = function generateDeclaredUidIdentifier() { - var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0]; + var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "temp"; var id = this.generateUidIdentifier(name); this.push({ id: id }); @@ -249,13 +255,13 @@ var Scope = function () { }; Scope.prototype.generateUidIdentifier = function generateUidIdentifier() { - var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0]; + var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "temp"; return t.identifier(this.generateUid(name)); }; Scope.prototype.generateUid = function generateUid() { - var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0]; + var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "temp"; name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, ""); @@ -264,7 +270,7 @@ var Scope = function () { do { uid = this._generateUid(name, i); i++; - } while (this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid)); + } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid)); var program = this.getProgramParent(); program.references[uid] = true; @@ -459,9 +465,21 @@ var Scope = function () { return t.callExpression(file.addHelper(helperName), args); }; + Scope.prototype.hasLabel = function hasLabel(name) { + return !!this.getLabel(name); + }; + + Scope.prototype.getLabel = function getLabel(name) { + return this.labels.get(name); + }; + + Scope.prototype.registerLabel = function registerLabel(path) { + this.labels.set(path.node.label.name, path); + }; + Scope.prototype.registerDeclaration = function registerDeclaration(path) { if (path.isLabeledStatement()) { - this.registerBinding("label", path); + this.registerLabel(path); } else if (path.isFunctionDeclaration()) { this.registerBinding("hoisted", path.get("id"), path); } else if (path.isVariableDeclaration()) { @@ -529,7 +547,7 @@ var Scope = function () { }; Scope.prototype.registerBinding = function registerBinding(kind, path) { - var bindingPath = arguments.length <= 2 || arguments[2] === undefined ? path : arguments[2]; + var bindingPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path; if (!kind) throw new ReferenceError("no `kind`"); diff --git a/node_modules/babel-traverse/lib/visitors.js b/node_modules/babel-traverse/lib/visitors.js index a3b145d1c..dadf5d061 100644 --- a/node_modules/babel-traverse/lib/visitors.js +++ b/node_modules/babel-traverse/lib/visitors.js @@ -234,7 +234,7 @@ function validateVisitorMethods(path, val) { } function merge(visitors) { - var states = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; + var states = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var wrapper = arguments[2]; var rootVisitor = {}; |