oxilean_parse/pattern/
patterncompiler_count_bindings_group.rs1use crate::Pattern;
8
9use super::patterncompiler_type::PatternCompiler;
10
11impl PatternCompiler {
12 #[allow(dead_code)]
14 pub fn count_bindings(&self, pattern: &Pattern) -> usize {
15 match pattern {
16 Pattern::Wild => 0,
17 Pattern::Var(_) => 1,
18 Pattern::Ctor(_, args) => args.iter().map(|a| self.count_bindings(&a.value)).sum(),
19 Pattern::Lit(_) => 0,
20 Pattern::Or(left, right) => {
21 let left_count = self.count_bindings(&left.value);
22 let right_count = self.count_bindings(&right.value);
23 left_count.max(right_count)
24 }
25 }
26 }
27}