diff --git a/Cargo.toml b/Cargo.toml index a08b2e412e47..de9646a64a71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ exclude = ["crates/proc-macro-srv/proc-macro-test/imp"] resolver = "2" [workspace.package] -rust-version = "1.95" +rust-version = "1.94" edition = "2024" license = "MIT OR Apache-2.0" authors = ["rust-analyzer team"] diff --git a/crates/parser/src/grammar/expressions.rs b/crates/parser/src/grammar/expressions.rs index 3f341c2ab846..2b1b2f5c389f 100644 --- a/crates/parser/src/grammar/expressions.rs +++ b/crates/parser/src/grammar/expressions.rs @@ -246,6 +246,23 @@ fn expr_bp( m: Option, r: Restrictions, bp: u8, +) -> Option<(CompletedMarker, BlockLike)> { + if !p.check_recursion_limit() { + if let Some(m) = m { + m.abandon(p); + } + return None; + } + let res = expr_bp_inner(p, m, r, bp); + p.decrease_recursion_limit(); + res +} + +fn expr_bp_inner( + p: &mut Parser<'_>, + m: Option, + r: Restrictions, + bp: u8, ) -> Option<(CompletedMarker, BlockLike)> { let m = m.unwrap_or_else(|| { let m = p.start(); @@ -315,7 +332,7 @@ fn expr_bp( // test binop_resets_statementness // fn f() { v = {1}&2; } - expr_bp(p, None, Restrictions { prefer_stmt: false, ..r }, op_bp); + expr_bp_inner(p, None, Restrictions { prefer_stmt: false, ..r }, op_bp); lhs = m.complete(p, if is_range { RANGE_EXPR } else { BIN_EXPR }); } Some((lhs, BlockLike::NotBlock)) diff --git a/crates/parser/src/parser.rs b/crates/parser/src/parser.rs index 57c501eda224..8c12aa121259 100644 --- a/crates/parser/src/parser.rs +++ b/crates/parser/src/parser.rs @@ -37,9 +37,11 @@ pub(crate) struct Parser<'t> { /// into this vec, keeping `Event` itself a flat 8-byte enum. errors: Vec, steps: Cell, + depth: u32, } const PARSER_STEP_LIMIT: usize = if cfg!(debug_assertions) { 150_000 } else { 15_000_000 }; +const PARSER_DEPTH_LIMIT: u32 = 256; impl<'t> Parser<'t> { pub(super) fn new(inp: &'t Input) -> Parser<'t> { @@ -49,6 +51,7 @@ impl<'t> Parser<'t> { events: Vec::with_capacity(2 * inp.len()), errors: Vec::new(), steps: Cell::new(0), + depth: 0, } } @@ -75,6 +78,21 @@ impl<'t> Parser<'t> { self.inp.kind(self.pos + n) } + pub(crate) fn check_recursion_limit(&mut self) -> bool { + if self.depth > PARSER_DEPTH_LIMIT { + self.error("recursion limit exceeded"); + return false; + } + self.depth += 1; + true + } + + pub(crate) fn decrease_recursion_limit(&mut self) { + if self.depth > 0 { + self.depth -= 1; + } + } + /// Checks if the current token is `kind`. pub(crate) fn at(&self, kind: SyntaxKind) -> bool { self.nth_at(0, kind) diff --git a/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rast b/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rast new file mode 100644 index 000000000000..532b9c2a57a7 --- /dev/null +++ b/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rast @@ -0,0 +1,2990 @@ +SOURCE_FILE + FN + FN_KW "fn" + WHITESPACE " " + NAME + IDENT "__nat_succ" + PARAM_LIST + L_PAREN "(" + PARAM + IDENT_PAT + NAME + IDENT "x" + COLON ":" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u64" + R_PAREN ")" + WHITESPACE " " + RET_TYPE + THIN_ARROW "->" + WHITESPACE " " + PATH_TYPE + PATH + PATH_SEGMENT + NAME_REF + IDENT "u64" + WHITESPACE " " + BLOCK_EXPR + STMT_LIST + L_CURLY "{" + WHITESPACE " " + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "x" + WHITESPACE " " + R_CURLY "}" + WHITESPACE "\n" + FN + FN_KW "fn" + WHITESPACE " " + NAME + IDENT "main" + PARAM_LIST + L_PAREN "(" + R_PAREN ")" + WHITESPACE " " + BLOCK_EXPR + STMT_LIST + L_CURLY "{" + WHITESPACE "\n " + LET_STMT + LET_KW "let" + WHITESPACE " " + WILDCARD_PAT + UNDERSCORE "_" + WHITESPACE " " + EQ "=" + WHITESPACE " " + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + CALL_EXPR + PATH_EXPR + PATH + PATH_SEGMENT + NAME_REF + IDENT "__nat_succ" + ARG_LIST + L_PAREN "(" + LITERAL + INT_NUMBER "0" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + ERROR + R_PAREN ")" + SEMICOLON ";" + WHITESPACE "\n" + R_CURLY "}" + WHITESPACE "\n" +error 2886: recursion limit exceeded +error 2886: expected R_PAREN +error 2886: expected COMMA +error 2897: recursion limit exceeded +error 2897: expected R_PAREN +error 2897: expected COMMA +error 2908: recursion limit exceeded +error 2908: expected R_PAREN +error 2908: expected COMMA +error 2919: recursion limit exceeded +error 2919: expected R_PAREN +error 2919: expected COMMA +error 2930: recursion limit exceeded +error 2930: expected R_PAREN +error 2930: expected COMMA +error 2941: recursion limit exceeded +error 2941: expected R_PAREN +error 2941: expected COMMA +error 2952: recursion limit exceeded +error 2952: expected R_PAREN +error 2952: expected COMMA +error 2963: recursion limit exceeded +error 2963: expected R_PAREN +error 2963: expected COMMA +error 2974: recursion limit exceeded +error 2974: expected R_PAREN +error 2974: expected COMMA +error 2985: recursion limit exceeded +error 2985: expected R_PAREN +error 2985: expected COMMA +error 2996: recursion limit exceeded +error 2996: expected R_PAREN +error 2996: expected COMMA +error 3007: recursion limit exceeded +error 3007: expected R_PAREN +error 3007: expected COMMA +error 3018: recursion limit exceeded +error 3018: expected R_PAREN +error 3018: expected COMMA +error 3029: recursion limit exceeded +error 3029: expected R_PAREN +error 3029: expected COMMA +error 3040: recursion limit exceeded +error 3040: expected R_PAREN +error 3040: expected COMMA +error 3051: recursion limit exceeded +error 3051: expected R_PAREN +error 3051: expected COMMA +error 3062: recursion limit exceeded +error 3062: expected R_PAREN +error 3062: expected COMMA +error 3073: recursion limit exceeded +error 3073: expected R_PAREN +error 3073: expected COMMA +error 3084: recursion limit exceeded +error 3084: expected R_PAREN +error 3084: expected COMMA +error 3095: recursion limit exceeded +error 3095: expected R_PAREN +error 3095: expected COMMA +error 3106: recursion limit exceeded +error 3106: expected R_PAREN +error 3106: expected COMMA +error 3117: recursion limit exceeded +error 3117: expected R_PAREN +error 3117: expected COMMA +error 3128: recursion limit exceeded +error 3128: expected R_PAREN +error 3128: expected COMMA +error 3139: recursion limit exceeded +error 3139: expected R_PAREN +error 3139: expected COMMA +error 3150: recursion limit exceeded +error 3150: expected R_PAREN +error 3150: expected COMMA +error 3161: recursion limit exceeded +error 3161: expected R_PAREN +error 3161: expected COMMA +error 3172: recursion limit exceeded +error 3172: expected R_PAREN +error 3172: expected COMMA +error 3183: recursion limit exceeded +error 3183: expected R_PAREN +error 3183: expected COMMA +error 3194: recursion limit exceeded +error 3194: expected R_PAREN +error 3194: expected COMMA +error 3205: recursion limit exceeded +error 3205: expected R_PAREN +error 3205: expected COMMA +error 3216: recursion limit exceeded +error 3216: expected R_PAREN +error 3216: expected COMMA +error 3227: recursion limit exceeded +error 3227: expected R_PAREN +error 3227: expected COMMA +error 3238: recursion limit exceeded +error 3238: expected R_PAREN +error 3238: expected COMMA +error 3249: recursion limit exceeded +error 3249: expected R_PAREN +error 3249: expected COMMA +error 3260: recursion limit exceeded +error 3260: expected R_PAREN +error 3260: expected COMMA +error 3271: recursion limit exceeded +error 3271: expected R_PAREN +error 3271: expected COMMA +error 3282: recursion limit exceeded +error 3282: expected R_PAREN +error 3282: expected COMMA +error 3293: recursion limit exceeded +error 3293: expected R_PAREN +error 3293: expected COMMA +error 3304: recursion limit exceeded +error 3304: expected R_PAREN +error 3304: expected COMMA +error 3315: recursion limit exceeded +error 3315: expected R_PAREN +error 3315: expected COMMA +error 3326: recursion limit exceeded +error 3326: expected R_PAREN +error 3326: expected COMMA +error 3337: recursion limit exceeded +error 3337: expected R_PAREN +error 3337: expected COMMA +error 3348: recursion limit exceeded +error 3348: expected R_PAREN +error 3348: expected COMMA +error 3359: recursion limit exceeded +error 3359: expected R_PAREN +error 3359: expected COMMA +error 3616: expected SEMICOLON +error 3616: expected expression, item or let statement +error 3617: expected expression, item or let statement +error 3618: expected expression, item or let statement +error 3619: expected expression, item or let statement +error 3620: expected expression, item or let statement +error 3621: expected expression, item or let statement +error 3622: expected expression, item or let statement +error 3623: expected expression, item or let statement +error 3624: expected expression, item or let statement +error 3625: expected expression, item or let statement +error 3626: expected expression, item or let statement +error 3627: expected expression, item or let statement +error 3628: expected expression, item or let statement +error 3629: expected expression, item or let statement +error 3630: expected expression, item or let statement +error 3631: expected expression, item or let statement +error 3632: expected expression, item or let statement +error 3633: expected expression, item or let statement +error 3634: expected expression, item or let statement +error 3635: expected expression, item or let statement +error 3636: expected expression, item or let statement +error 3637: expected expression, item or let statement +error 3638: expected expression, item or let statement +error 3639: expected expression, item or let statement +error 3640: expected expression, item or let statement +error 3641: expected expression, item or let statement +error 3642: expected expression, item or let statement +error 3643: expected expression, item or let statement +error 3644: expected expression, item or let statement +error 3645: expected expression, item or let statement +error 3646: expected expression, item or let statement +error 3647: expected expression, item or let statement +error 3648: expected expression, item or let statement +error 3649: expected expression, item or let statement +error 3650: expected expression, item or let statement +error 3651: expected expression, item or let statement +error 3652: expected expression, item or let statement +error 3653: expected expression, item or let statement +error 3654: expected expression, item or let statement +error 3655: expected expression, item or let statement +error 3656: expected expression, item or let statement +error 3657: expected expression, item or let statement +error 3658: expected expression, item or let statement +error 3659: expected expression, item or let statement diff --git a/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rs b/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rs new file mode 100644 index 000000000000..eb977b7e7a61 --- /dev/null +++ b/crates/parser/test_data/parser/err/issue_22374_deep_recursion.rs @@ -0,0 +1,4 @@ +fn __nat_succ(x: u64) -> u64 { x } +fn main() { + let _ = __nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(__nat_succ(0)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); +}