summaryrefslogtreecommitdiff
path: root/src/ide/complete.rs
diff options
context:
space:
mode:
authorMarmare314 <49279081+Marmare314@users.noreply.github.com>2023-04-06 15:26:09 +0200
committerGitHub <noreply@github.com>2023-04-06 15:26:09 +0200
commit0f8219b392e96d3cf7d784ee5d474274169d9918 (patch)
tree60ce53bb076b61b09184f4f1aefa2fa63ebb3ed2 /src/ide/complete.rs
parenta73149767c82509b77ccf6996ab0b1125cc9c249 (diff)
Unpacking syntax (#532)
Closes #341
Diffstat (limited to 'src/ide/complete.rs')
-rw-r--r--src/ide/complete.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/ide/complete.rs b/src/ide/complete.rs
index da9e0725..0c80c8df 100644
--- a/src/ide/complete.rs
+++ b/src/ide/complete.rs
@@ -1096,7 +1096,9 @@ impl<'a> CompletionContext<'a> {
let mut sibling = Some(node.clone());
while let Some(node) = &sibling {
if let Some(v) = node.cast::<ast::LetBinding>() {
- defined.insert(v.binding().take());
+ for ident in v.kind().idents() {
+ defined.insert(ident.take());
+ }
}
sibling = node.prev_sibling();
}
@@ -1105,10 +1107,9 @@ impl<'a> CompletionContext<'a> {
if let Some(v) = parent.cast::<ast::ForLoop>() {
if node.prev_sibling_kind() != Some(SyntaxKind::In) {
let pattern = v.pattern();
- if let Some(key) = pattern.key() {
- defined.insert(key.take());
+ for ident in pattern.idents() {
+ defined.insert(ident.take());
}
- defined.insert(pattern.value().take());
}
}