//! Hard limits to avoid unbounded host stack use and pathological recursion.
/// Maximum nested depth for user-defined function calls (VM).
///
/// Kept conservative: each depth level uses native stack in the VM, so a very large
/// limit can still overflow the host stack before the check trips. Empirically
/// the host thread (default 8 MiB Rust stack) starts overflowing around 200
/// frames in unoptimized builds, so the production cap stays comfortably below
/// that.
#[cfg(test)]
pub const MAX_USER_CALL_DEPTH: usize = 32;
/// `MAX_USER_CALL_DEPTH` constant.
#[cfg(not(test))]
pub const MAX_USER_CALL_DEPTH: usize = 150;
#[cfg(test)]
mod tests {
#[test]
fn test_build_uses_lower_call_depth_cap() {
assert_eq!(super::MAX_USER_CALL_DEPTH, 32);
}
#[test]
fn max_user_call_depth_is_positive_v7() {
assert!(std::hint::black_box(super::MAX_USER_CALL_DEPTH) > 0);
}
#[test]
fn limits_cap_is_small_v29() {
assert!(std::hint::black_box(super::MAX_USER_CALL_DEPTH) < 1000);
}
}