oxilean-parse 0.1.2

OxiLean parser - Concrete syntax to abstract syntax
Documentation
//! # PatternCompiler - max_pattern_depth_group Methods
//!
//! This module contains method implementations for `PatternCompiler`.
//!
//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)

use crate::Pattern;

use super::patterncompiler_type::PatternCompiler;

impl PatternCompiler {
    /// Check if pattern depth is reasonable (prevent stack overflow).
    pub fn max_pattern_depth(&self, pattern: &Pattern) -> usize {
        match pattern {
            Pattern::Wild | Pattern::Var(_) | Pattern::Lit(_) => 0,
            Pattern::Ctor(_, args) => {
                1 + args
                    .iter()
                    .map(|a| self.max_pattern_depth(&a.value))
                    .max()
                    .unwrap_or(0)
            }
            Pattern::Or(left, right) => {
                1 + std::cmp::max(
                    self.max_pattern_depth(&left.value),
                    self.max_pattern_depth(&right.value),
                )
            }
        }
    }
}