aboutsummaryrefslogtreecommitdiff
path: root/node_modules/babel-types/lib/converters.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babel-types/lib/converters.js')
-rw-r--r--node_modules/babel-types/lib/converters.js170
1 files changed, 91 insertions, 79 deletions
diff --git a/node_modules/babel-types/lib/converters.js b/node_modules/babel-types/lib/converters.js
index 94db954bd..bd0a3c674 100644
--- a/node_modules/babel-types/lib/converters.js
+++ b/node_modules/babel-types/lib/converters.js
@@ -49,103 +49,115 @@ function toComputedKey(node) {
return key;
}
-function toSequenceExpression(nodes, scope) {
- if (!nodes || !nodes.length) return;
+function gatherSequenceExpressions(nodes, scope, declars) {
+ var exprs = [];
+ var ensureLastUndefined = true;
- var declars = [];
- var bailed = false;
+ for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
+ var _ref;
- var result = convert(nodes);
- if (bailed) return;
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
- for (var i = 0; i < declars.length; i++) {
- scope.push(declars[i]);
- }
+ var node = _ref;
- return result;
+ ensureLastUndefined = false;
- function convert(nodes) {
- var ensureLastUndefined = false;
- var exprs = [];
+ if (t.isExpression(node)) {
+ exprs.push(node);
+ } else if (t.isExpressionStatement(node)) {
+ exprs.push(node.expression);
+ } else if (t.isVariableDeclaration(node)) {
+ if (node.kind !== "var") return;
- for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
- var _ref;
+ for (var _iterator2 = node.declarations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
+ var _ref2;
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var declar = _ref2;
- var node = _ref;
-
- if (t.isExpression(node)) {
- exprs.push(node);
- } else if (t.isExpressionStatement(node)) {
- exprs.push(node.expression);
- } else if (t.isVariableDeclaration(node)) {
- if (node.kind !== "var") return bailed = true;
-
- for (var _iterator2 = node.declarations, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
- var _ref2;
-
- if (_isArray2) {
- if (_i2 >= _iterator2.length) break;
- _ref2 = _iterator2[_i2++];
- } else {
- _i2 = _iterator2.next();
- if (_i2.done) break;
- _ref2 = _i2.value;
- }
-
- var declar = _ref2;
-
- var bindings = t.getBindingIdentifiers(declar);
- for (var key in bindings) {
- declars.push({
- kind: node.kind,
- id: bindings[key]
- });
- }
-
- if (declar.init) {
- exprs.push(t.assignmentExpression("=", declar.id, declar.init));
- }
+ var bindings = t.getBindingIdentifiers(declar);
+ for (var key in bindings) {
+ declars.push({
+ kind: node.kind,
+ id: bindings[key]
+ });
}
- ensureLastUndefined = true;
- continue;
- } else if (t.isIfStatement(node)) {
- var consequent = node.consequent ? convert([node.consequent]) : scope.buildUndefinedNode();
- var alternate = node.alternate ? convert([node.alternate]) : scope.buildUndefinedNode();
- if (!consequent || !alternate) return bailed = true;
-
- exprs.push(t.conditionalExpression(node.test, consequent, alternate));
- } else if (t.isBlockStatement(node)) {
- exprs.push(convert(node.body));
- } else if (t.isEmptyStatement(node)) {
- ensureLastUndefined = true;
- continue;
- } else {
- return bailed = true;
+ if (declar.init) {
+ exprs.push(t.assignmentExpression("=", declar.id, declar.init));
+ }
}
- ensureLastUndefined = false;
- }
+ ensureLastUndefined = true;
+ } else if (t.isIfStatement(node)) {
+ var consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode();
+ var alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode();
+ if (!consequent || !alternate) return;
+
+ exprs.push(t.conditionalExpression(node.test, consequent, alternate));
+ } else if (t.isBlockStatement(node)) {
+ var body = gatherSequenceExpressions(node.body, scope, declars);
+ if (!body) return;
- if (ensureLastUndefined || exprs.length === 0) {
- exprs.push(scope.buildUndefinedNode());
+ exprs.push(body);
+ } else if (t.isEmptyStatement(node)) {
+ ensureLastUndefined = true;
+ } else {
+ return;
}
+ }
- if (exprs.length === 1) {
- return exprs[0];
+ if (ensureLastUndefined) {
+ exprs.push(scope.buildUndefinedNode());
+ }
+
+ if (exprs.length === 1) {
+ return exprs[0];
+ } else {
+ return t.sequenceExpression(exprs);
+ }
+}
+
+function toSequenceExpression(nodes, scope) {
+ if (!nodes || !nodes.length) return;
+
+ var declars = [];
+ var result = gatherSequenceExpressions(nodes, scope, declars);
+ if (!result) return;
+
+ for (var _iterator3 = declars, _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 {
- return t.sequenceExpression(exprs);
+ _i3 = _iterator3.next();
+ if (_i3.done) break;
+ _ref3 = _i3.value;
}
+
+ var declar = _ref3;
+
+ scope.push(declar);
}
+
+ return result;
}
function toKeyAlias(node) {