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