From fdaaf2298a7a9305f46619d3eecbd8d7aa717bfb Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Mon, 30 Nov 2020 18:10:30 +0800 Subject: [PATCH] Refactor: Stop mutating AST during `getSortedChildNodes` (#9797) --- src/main/comments.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/comments.js b/src/main/comments.js index 57db1e932..448e83028 100644 --- a/src/main/comments.js +++ b/src/main/comments.js @@ -26,8 +26,7 @@ const { addTrailingComment, } = require("../common/util"); -const childNodesCacheKey = Symbol("child-nodes"); - +const childNodesCache = new WeakMap(); function getSortedChildNodes(node, options, resultArray) { if (!node) { return; @@ -51,8 +50,8 @@ function getSortedChildNodes(node, options, resultArray) { resultArray.splice(i + 1, 0, node); return; } - } else if (node[childNodesCacheKey]) { - return node[childNodesCacheKey]; + } else if (childNodesCache.has(node)) { + return childNodesCache.get(node); } const childNodes = @@ -75,10 +74,8 @@ function getSortedChildNodes(node, options, resultArray) { } if (!resultArray) { - Object.defineProperty(node, childNodesCacheKey, { - value: (resultArray = []), - enumerable: false, - }); + resultArray = []; + childNodesCache.set(node, resultArray); } childNodes.forEach((childNode) => {