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