Tree Sitter Upgrade #5
+9
-5
@@ -44,12 +44,16 @@ class SkillParser:
|
|||||||
|
|
||||||
def _traverse_tree(
|
def _traverse_tree(
|
||||||
self,
|
self,
|
||||||
node,
|
root_node,
|
||||||
content: str,
|
content: str,
|
||||||
diagnostics: list[Diagnostic],
|
diagnostics: list[Diagnostic],
|
||||||
symbols: list[DocumentSymbol]
|
symbols: list[DocumentSymbol]
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Recursively traverses the AST to find errors and symbols."""
|
"""Iteratively traverses the AST to find errors and symbols."""
|
||||||
|
stack = [root_node]
|
||||||
|
|
||||||
|
while stack:
|
||||||
|
node = stack.pop()
|
||||||
|
|
||||||
# 1. Handle Errors (Diagnostics)
|
# 1. Handle Errors (Diagnostics)
|
||||||
if node.type in ERROR_NODE_TYPES:
|
if node.type in ERROR_NODE_TYPES:
|
||||||
@@ -73,9 +77,9 @@ class SkillParser:
|
|||||||
if symbol:
|
if symbol:
|
||||||
symbols.append(symbol)
|
symbols.append(symbol)
|
||||||
|
|
||||||
# 3. Continue traversal
|
# 3. Continue traversal - push children in reverse order to maintain original DFS order
|
||||||
for child in node.children:
|
for child in reversed(node.children):
|
||||||
self._traverse_tree(child, content, diagnostics, symbols)
|
stack.append(child)
|
||||||
|
|
||||||
def _is_symbol_node(self, node) -> bool:
|
def _is_symbol_node(self, node) -> bool:
|
||||||
"""Determines if a node is significant enough to be an outline symbol."""
|
"""Determines if a node is significant enough to be an outline symbol."""
|
||||||
|
|||||||
Reference in New Issue
Block a user