/ queries / javascript / scopes.scm
scopes.scm
 1  ;; ═════════════════════════════════════════════════════════════════
 2  ;; JavaScript Scope Node Queries
 3  ;; ═════════════════════════════════════════════════════════════════
 4  ;; These patterns identify nodes that create new lexical scopes.
 5  ;; Used for building the scope hierarchy in the BindingGraph.
 6  
 7  ;; ───────────────────────────────────────────────────────────────────
 8  ;; Functions (create function scope)
 9  ;; ───────────────────────────────────────────────────────────────────
10  (function_declaration) @scope_node
11  (function_expression) @scope_node
12  (arrow_function) @scope_node
13  (method_definition) @scope_node
14  (generator_function_declaration) @scope_node
15  (generator_function) @scope_node
16  
17  ;; ───────────────────────────────────────────────────────────────────
18  ;; Classes (create class scope)
19  ;; ───────────────────────────────────────────────────────────────────
20  (class_declaration) @scope_node
21  (class) @scope_node
22  (class_body) @scope_node
23  
24  ;; ───────────────────────────────────────────────────────────────────
25  ;; Blocks (create block scope for let/const)
26  ;; ───────────────────────────────────────────────────────────────────
27  (statement_block) @scope_node
28  
29  ;; ───────────────────────────────────────────────────────────────────
30  ;; Loops (create loop scope)
31  ;; ───────────────────────────────────────────────────────────────────
32  (for_statement) @scope_node
33  ;; Note: for-in and for-of are included in for_statement in tree-sitter-javascript
34  
35  ;; ───────────────────────────────────────────────────────────────────
36  ;; Conditionals (create conditional scope)
37  ;; ───────────────────────────────────────────────────────────────────
38  (if_statement) @scope_node
39  (switch_statement) @scope_node
40  (switch_case) @scope_node
41  
42  ;; ───────────────────────────────────────────────────────────────────
43  ;; Exception handling (create exception scope)
44  ;; ───────────────────────────────────────────────────────────────────
45  (try_statement) @scope_node
46  (catch_clause) @scope_node
47  (finally_clause) @scope_node
48  
49  ;; ───────────────────────────────────────────────────────────────────
50  ;; With statement (deprecated but still creates scope)
51  ;; ───────────────────────────────────────────────────────────────────
52  (with_statement) @scope_node