From 23b60dc1975db38c280d8a123aff97544d1673e0 Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期四, 09 六月 2022 15:34:21 +0800 Subject: [PATCH] TODO#139890 FAQ 常見問題 1-文案調整 --- PAMapp/node_modules/@babel/traverse/lib/path/modification.js | 69 ++++++++++++++++++++++++++-------- 1 files changed, 53 insertions(+), 16 deletions(-) diff --git a/PAMapp/node_modules/@babel/traverse/lib/path/modification.js b/PAMapp/node_modules/@babel/traverse/lib/path/modification.js index 8b8c089..c5de87b 100644 --- a/PAMapp/node_modules/@babel/traverse/lib/path/modification.js +++ b/PAMapp/node_modules/@babel/traverse/lib/path/modification.js @@ -3,16 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); -exports.insertBefore = insertBefore; exports._containerInsert = _containerInsert; -exports._containerInsertBefore = _containerInsertBefore; exports._containerInsertAfter = _containerInsertAfter; -exports.insertAfter = insertAfter; -exports.updateSiblingKeys = updateSiblingKeys; +exports._containerInsertBefore = _containerInsertBefore; exports._verifyNodeList = _verifyNodeList; -exports.unshiftContainer = unshiftContainer; -exports.pushContainer = pushContainer; exports.hoist = hoist; +exports.insertAfter = insertAfter; +exports.insertBefore = insertBefore; +exports.pushContainer = pushContainer; +exports.unshiftContainer = unshiftContainer; +exports.updateSiblingKeys = updateSiblingKeys; var _cache = require("../cache"); @@ -30,7 +30,13 @@ callExpression, cloneNode, expressionStatement, - isExpression + isAssignmentExpression, + isCallExpression, + isExpression, + isIdentifier, + isSequenceExpression, + isSuper, + thisExpression } = _t; function insertBefore(nodes_) { @@ -96,8 +102,27 @@ return this._containerInsert(this.key + 1, nodes); } +const last = arr => arr[arr.length - 1]; + +function isHiddenInSequenceExpression(path) { + return isSequenceExpression(path.parent) && (last(path.parent.expressions) !== path.node || isHiddenInSequenceExpression(path.parentPath)); +} + +function isAlmostConstantAssignment(node, scope) { + if (!isAssignmentExpression(node) || !isIdentifier(node.left)) { + return false; + } + + const blockScope = scope.getBlockParent(); + return blockScope.hasOwnBinding(node.left.name) && blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1; +} + function insertAfter(nodes_) { this._assertUnremoved(); + + if (this.isSequenceExpression()) { + return last(this.get("expressions")).insertAfter(nodes_); + } const nodes = this._verifyNodeList(nodes_); @@ -123,16 +148,28 @@ return [this]; } - if (parentPath.isMethod({ - computed: true, - key: node - })) { - scope = scope.parent; - } + if (isHiddenInSequenceExpression(this)) { + nodes.unshift(node); + } else if (isCallExpression(node) && isSuper(node.callee)) { + nodes.unshift(node); + nodes.push(thisExpression()); + } else if (isAlmostConstantAssignment(node, scope)) { + nodes.unshift(node); + nodes.push(cloneNode(node.left)); + } else if (scope.isPure(node, true)) { + nodes.push(node); + } else { + if (parentPath.isMethod({ + computed: true, + key: node + })) { + scope = scope.parent; + } - const temp = scope.generateDeclaredUidIdentifier(); - nodes.unshift(expressionStatement(assignmentExpression("=", cloneNode(temp), node))); - nodes.push(expressionStatement(cloneNode(temp))); + const temp = scope.generateDeclaredUidIdentifier(); + nodes.unshift(expressionStatement(assignmentExpression("=", cloneNode(temp), node))); + nodes.push(expressionStatement(cloneNode(temp))); + } } return this.replaceExpressionWithStatements(nodes); -- Gitblit v1.8.0