mirror of
https://github.com/Myriad-Dreamin/tinymist.git
synced 2025-11-22 04:26:51 +00:00
refactor: destructuring pattern handling in ExprWorker
This commit is contained in:
parent
79215fb191
commit
11e6e31cab
1 changed files with 8 additions and 5 deletions
|
|
@ -516,7 +516,7 @@ impl ExprWorker<'_> {
|
||||||
}
|
}
|
||||||
ast::DestructuringItem::Named(named) => {
|
ast::DestructuringItem::Named(named) => {
|
||||||
let key = Decl::var(named.name()).into();
|
let key = Decl::var(named.name()).into();
|
||||||
let val = self.check_pattern_expr(named.expr());
|
let val = self.check_pattern(named.pattern());
|
||||||
names.push((key, val));
|
names.push((key, val));
|
||||||
}
|
}
|
||||||
ast::DestructuringItem::Spread(spreading) => {
|
ast::DestructuringItem::Spread(spreading) => {
|
||||||
|
|
@ -525,14 +525,17 @@ impl ExprWorker<'_> {
|
||||||
} else {
|
} else {
|
||||||
Decl::spread(spreading.span()).into()
|
Decl::spread(spreading.span()).into()
|
||||||
};
|
};
|
||||||
|
let pattern = Pattern::Expr(Expr::Star).into();
|
||||||
|
|
||||||
if inputs.is_empty() {
|
if inputs.is_empty() {
|
||||||
spread_left =
|
spread_left = Some((decl.clone(), pattern));
|
||||||
Some((decl, self.check_pattern_expr(spreading.expr())));
|
|
||||||
} else {
|
} else {
|
||||||
spread_right =
|
spread_right = Some((decl.clone(), pattern));
|
||||||
Some((decl, self.check_pattern_expr(spreading.expr())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.resolve_as(Decl::as_def(&decl, None));
|
||||||
|
self.scope_mut()
|
||||||
|
.insert_mut(decl.name().clone(), decl.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue