aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Davis2022-07-20 02:51:35 +0000
committerGitHub2022-07-20 02:51:35 +0000
commit9753da6ab79f863e2e8a54874dd45a077e1ffb96 (patch)
treedaba28cc9f289364736bd42e7e4c77744ba9943e
parent791bf7e50a19bcf7612788deb7514847089cb976 (diff)
Fix locals tracking in Rust closures (#3027)
The fix comes from the rewriting of the `closure_parameters` stanza: it was capturing the entire `closure_parameters` node including paretheses, whitespace, and commas. Capturing the identifiers within fixes the tracking. In order to make sure locals definitions from closure parameters don't leak out of the body of the closure, though, we should also mark the closure itself as a locals scope.
-rw-r--r--runtime/queries/rust/locals.scm3
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/queries/rust/locals.scm b/runtime/queries/rust/locals.scm
index 6428f9b4..9c85b84a 100644
--- a/runtime/queries/rust/locals.scm
+++ b/runtime/queries/rust/locals.scm
@@ -1,6 +1,7 @@
; Scopes
(block) @local.scope
+(closure_expression) @local.scope
; Definitions
@@ -10,7 +11,7 @@
(let_declaration
pattern: (identifier) @local.definition)
-(closure_parameters (identifier)) @local.definition
+(closure_parameters (identifier) @local.definition)
; References
(identifier) @local.reference