mirror of
https://github.com/swc-project/swc.git
synced 2024-12-30 00:52:29 +03:00
a5f7b6946f
**Description:** While investigating, I found that problem is not the analysis of recursive functions. Instead, it was a problem with the IIFE evaluator, which replaces parameters even if it's recursive. **Related issue:** - Closes https://github.com/swc-project/swc/issues/5846
44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
function processNode(
|
|
node,
|
|
index,
|
|
parent,
|
|
pathNodes
|
|
) {
|
|
const children = node ? node[mergeChildrenPropName] : dataNodes;
|
|
const pos = node ? getPosition(parent.pos, index) : '0';
|
|
const connectNodes = node ? [...pathNodes, node] : [];
|
|
|
|
// Process node if is not root
|
|
if (node) {
|
|
const key = syntheticGetKey(node, pos);
|
|
const data = {
|
|
node,
|
|
index,
|
|
pos,
|
|
key,
|
|
parentPos: parent.node ? parent.pos : null,
|
|
level: parent.level + 1,
|
|
nodes: connectNodes,
|
|
};
|
|
|
|
callback(data);
|
|
}
|
|
|
|
// Process children node
|
|
if (children) {
|
|
children.forEach((subNode, subIndex) => {
|
|
processNode(
|
|
subNode,
|
|
subIndex,
|
|
{
|
|
node,
|
|
pos,
|
|
level: parent ? parent.level + 1 : -1,
|
|
},
|
|
connectNodes,
|
|
);
|
|
});
|
|
}
|
|
}
|
|
|
|
processNode(null); |