1use swc_ecma_ast::*;
2use swc_ecma_visit::{noop_visit_type, Visit, VisitWith};
3
4use crate::ident::IdentLike;
5
6pub struct VarCollector<'a, I: IdentLike> {
9 pub to: &'a mut Vec<I>,
10}
11
12impl<I: IdentLike> Visit for VarCollector<'_, I> {
13 noop_visit_type!(fail);
14
15 fn visit_arrow_expr(&mut self, _: &ArrowExpr) {}
16
17 fn visit_constructor(&mut self, _: &Constructor) {}
18
19 fn visit_expr(&mut self, _: &Expr) {}
20
21 fn visit_function(&mut self, _: &Function) {}
22
23 fn visit_key_value_pat_prop(&mut self, node: &KeyValuePatProp) {
24 node.value.visit_with(self);
25 }
26
27 fn visit_ident(&mut self, i: &Ident) {
28 self.to.push(I::from_ident(i))
29 }
30
31 fn visit_var_declarator(&mut self, node: &VarDeclarator) {
32 node.name.visit_with(self);
33 }
34}