catch variables only used in plural selection

This commit is contained in:
Damien Elmes 2021-03-26 14:20:44 +10:00
parent 0c338bfd53
commit 8294b18c68

View file

@ -95,12 +95,8 @@ impl Visitor {
} }
} }
fn visit_expression(&mut self, expression: &Expression<&str>) { fn visit_inline_expression(&mut self, expr: &InlineExpression<&str>) {
match expression { match expr {
Expression::SelectExpression { variants, .. } => {
self.visit_pattern(&variants.last().unwrap().value)
}
Expression::InlineExpression(expr) => match expr {
InlineExpression::VariableReference { id } => { InlineExpression::VariableReference { id } => {
write!(self.text, "${}", id.name).unwrap(); write!(self.text, "${}", id.name).unwrap();
self.variables.insert(id.name.to_string()); self.variables.insert(id.name.to_string());
@ -109,7 +105,16 @@ impl Visitor {
self.visit_expression(expression); self.visit_expression(expression);
} }
_ => {} _ => {}
}, }
}
fn visit_expression(&mut self, expression: &Expression<&str>) {
match expression {
Expression::SelectExpression { selector, variants } => {
self.visit_inline_expression(&selector);
self.visit_pattern(&variants.last().unwrap().value)
}
Expression::InlineExpression(expr) => self.visit_inline_expression(expr),
} }
} }
} }