123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = gatherSequenceExpressions;
-
- var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers");
-
- var _generated = require("../validators/generated");
-
- var _generated2 = require("../builders/generated");
-
- var _cloneNode = require("../clone/cloneNode");
-
- function gatherSequenceExpressions(nodes, scope, declars) {
- const exprs = [];
- let ensureLastUndefined = true;
-
- for (const node of nodes) {
- if (!(0, _generated.isEmptyStatement)(node)) {
- ensureLastUndefined = false;
- }
-
- if ((0, _generated.isExpression)(node)) {
- exprs.push(node);
- } else if ((0, _generated.isExpressionStatement)(node)) {
- exprs.push(node.expression);
- } else if ((0, _generated.isVariableDeclaration)(node)) {
- if (node.kind !== "var") return;
-
- for (const declar of node.declarations) {
- const bindings = (0, _getBindingIdentifiers.default)(declar);
-
- for (const key of Object.keys(bindings)) {
- declars.push({
- kind: node.kind,
- id: (0, _cloneNode.default)(bindings[key])
- });
- }
-
- if (declar.init) {
- exprs.push((0, _generated2.assignmentExpression)("=", declar.id, declar.init));
- }
- }
-
- ensureLastUndefined = true;
- } else if ((0, _generated.isIfStatement)(node)) {
- const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode();
- const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode();
- if (!consequent || !alternate) return;
- exprs.push((0, _generated2.conditionalExpression)(node.test, consequent, alternate));
- } else if ((0, _generated.isBlockStatement)(node)) {
- const body = gatherSequenceExpressions(node.body, scope, declars);
- if (!body) return;
- exprs.push(body);
- } else if ((0, _generated.isEmptyStatement)(node)) {
- if (nodes.indexOf(node) === 0) {
- ensureLastUndefined = true;
- }
- } else {
- return;
- }
- }
-
- if (ensureLastUndefined) {
- exprs.push(scope.buildUndefinedNode());
- }
-
- if (exprs.length === 1) {
- return exprs[0];
- } else {
- return (0, _generated2.sequenceExpression)(exprs);
- }
- }
|