oxilean_parse/pattern/
patterncompiler_max_pattern_depth_group.rs1use crate::Pattern;
8
9use super::patterncompiler_type::PatternCompiler;
10
11impl PatternCompiler {
12 pub fn max_pattern_depth(&self, pattern: &Pattern) -> usize {
14 match pattern {
15 Pattern::Wild | Pattern::Var(_) | Pattern::Lit(_) => 0,
16 Pattern::Ctor(_, args) => {
17 1 + args
18 .iter()
19 .map(|a| self.max_pattern_depth(&a.value))
20 .max()
21 .unwrap_or(0)
22 }
23 Pattern::Or(left, right) => {
24 1 + std::cmp::max(
25 self.max_pattern_depth(&left.value),
26 self.max_pattern_depth(&right.value),
27 )
28 }
29 }
30 }
31}