oxilean_parse/pattern/
patterncompiler_collect_ctors_from_pattern_group.rs1use crate::Pattern;
8
9use super::patterncompiler_type::PatternCompiler;
10
11impl PatternCompiler {
12 pub(super) fn collect_ctors_from_pattern(
14 &self,
15 pattern: &Pattern,
16 seen: &mut Vec<(String, usize)>,
17 ) {
18 match pattern {
19 Pattern::Ctor(name, args) => {
20 if !seen.iter().any(|(n, _)| n == name) {
21 seen.push((name.clone(), args.len()));
22 }
23 }
24 Pattern::Or(left, right) => {
25 self.collect_ctors_from_pattern(&left.value, seen);
26 self.collect_ctors_from_pattern(&right.value, seen);
27 }
28 Pattern::Wild | Pattern::Var(_) | Pattern::Lit(_) => {}
29 }
30 }
31}