Skip to main content

oxilean_parse/pattern/
patterncompiler_collect_pattern_ctors_group.rs

1//! # PatternCompiler - collect_pattern_ctors_group Methods
2//!
3//! This module contains method implementations for `PatternCompiler`.
4//!
5//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
6
7use crate::Pattern;
8
9use super::patterncompiler_type::PatternCompiler;
10
11impl PatternCompiler {
12    /// Helper: collect constructor names from a pattern recursively.
13    pub(super) fn collect_pattern_ctors(&self, pattern: &Pattern, covered: &mut Vec<String>) {
14        match pattern {
15            Pattern::Ctor(name, _) => {
16                if !covered.contains(name) {
17                    covered.push(name.clone());
18                }
19            }
20            Pattern::Or(left, right) => {
21                self.collect_pattern_ctors(&left.value, covered);
22                self.collect_pattern_ctors(&right.value, covered);
23            }
24            Pattern::Wild | Pattern::Var(_) | Pattern::Lit(_) => {}
25        }
26    }
27}