sanex3339 9 anni fa
parent
commit
0296263804
2 ha cambiato i file con 7 aggiunte e 40 eliminazioni
  1. 3 12
      src/NodeUtils.js
  2. 4 28
      src/NodeUtils.ts

+ 3 - 12
src/NodeUtils.js

@@ -16,6 +16,9 @@ class NodeUtils {
         return node;
     }
     static getBlockScopeOfNode(node, depth = 0) {
+        if (!node.parentNode) {
+            throw new ReferenceError('`parentNode` property of given node is `undefined`');
+        }
         if (node.parentNode.type === NodeType_1.NodeType.Program) {
             return node.parentNode;
         }
@@ -30,18 +33,6 @@ class NodeUtils {
         }
         return node;
     }
-    static getParentNodeWithType(node, types, limitNodeTypes = [], depth = 0) {
-        if (node.parentNode.type === NodeType_1.NodeType.Program || Utils_1.Utils.arrayContains(limitNodeTypes, node.parentNode.type)) {
-            return node.parentNode;
-        }
-        if (!Utils_1.Utils.arrayContains(types, node.parentNode.type)) {
-            return NodeUtils.getParentNodeWithType(node.parentNode, types, limitNodeTypes, depth);
-        }
-        if (depth > 0) {
-            return NodeUtils.getParentNodeWithType(node.parentNode, types, limitNodeTypes, --depth);
-        }
-        return node.parentNode;
-    }
     static insertNodeAtIndex(blockScopeBody, node, index) {
         if (!NodeUtils.validateNode(node)) {
             return;

+ 4 - 28
src/NodeUtils.ts

@@ -57,6 +57,10 @@ export class NodeUtils {
      * @returns {INode}
      */
     public static getBlockScopeOfNode (node: INode, depth: number = 0): BlockScopeNode {
+        if (!node.parentNode) {
+            throw new ReferenceError('`parentNode` property of given node is `undefined`');
+        }
+
         if (node.parentNode.type === NodeType.Program) {
             return <BlockScopeNode> node.parentNode;
         }
@@ -76,34 +80,6 @@ export class NodeUtils {
         return <BlockScopeNode> node; // blocks statement of scopeNodes
     }
 
-    /**
-     * @param node
-     * @param types
-     * @param limitNodeTypes
-     * @param depth
-     * @returns {INode}
-     */
-    public static getParentNodeWithType (
-        node: INode,
-        types: string[],
-        limitNodeTypes: string[] = [],
-        depth: number = 0
-    ): INode {
-        if (node.parentNode.type === NodeType.Program || Utils.arrayContains(limitNodeTypes, node.parentNode.type)) {
-            return node.parentNode;
-        }
-
-        if (!Utils.arrayContains(types, node.parentNode.type)) {
-            return NodeUtils.getParentNodeWithType(node.parentNode, types, limitNodeTypes, depth);
-        }
-
-        if (depth > 0) {
-            return NodeUtils.getParentNodeWithType(node.parentNode, types, limitNodeTypes, --depth);
-        }
-
-        return node.parentNode;
-    }
-
     /**
      * @param blockScopeBody
      * @param node