Skip to content

Commit 01b146f

Browse files
authored
Merge pull request #1608 from codeflash-ai/codeflash/optimize-pr1561-2026-02-20T13.45.13
⚡️ Speed up method `JavaScriptSupport._extract_types_from_definition` by 1,618% in PR #1561 (`add/support_react`)
2 parents b470219 + 85b6680 commit 01b146f

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

codeflash/languages/javascript/support.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,17 +1011,24 @@ def _extract_types_from_definition(self, type_source: str, analyzer: TreeSitterA
10111011
tree = analyzer.parse(source_bytes)
10121012
type_names: set[str] = set()
10131013

1014-
def walk_for_types(node: Any) -> None:
1014+
# Iterative traversal to avoid recursion and reduce call overhead.
1015+
# Look for type_identifier nodes (user-defined types)
1016+
# Skip primitive types
1017+
stack = [tree.root_node]
1018+
while stack:
1019+
node = stack.pop()
10151020
# Look for type_identifier nodes (user-defined types)
10161021
if node.type == "type_identifier":
10171022
type_name = source_bytes[node.start_byte : node.end_byte].decode("utf8")
10181023
# Skip primitive types
10191024
if type_name not in _PRIMITIVE_TYPES:
10201025
type_names.add(type_name)
1021-
for child in node.children:
1022-
walk_for_types(child)
1026+
# push children onto the stack
1027+
# using extend is efficient and keeps the traversal iterative
1028+
children = node.children
1029+
if children:
1030+
stack.extend(children)
10231031

1024-
walk_for_types(tree.root_node)
10251032
return type_names
10261033

10271034
def _find_imported_type_definitions(

0 commit comments

Comments
 (0)