diff --git a/src/ast/mod.rs b/src/ast/mod.rs index c39dd0e..04a7e5d 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -346,7 +346,7 @@ fn parse_conditional_chain<'input>( chain.push(if_block); let content = resume_after_cut( - inner_conditional_chain, + cut_err(inner_conditional_chain), repeat_till(0.., any, parse_end).map(|((), _)| ()), ) .parse_next(input)?; @@ -387,7 +387,7 @@ fn inner_conditional_chain<'input>( }; if !is_end && needs_end { - return Err(AstError::from_input(input).cut()); + return Err(AstError::from_input(input)); } if let TemplateAstExpr::Block { expression, .. } = &end_block diff --git a/tests/checks/long.nomo b/tests/checks/long.nomo new file mode 100644 index 0000000..b2b5c2c Binary files /dev/null and b/tests/checks/long.nomo differ diff --git a/tests/file_tests.rs b/tests/file_tests.rs index 85049e8..3acb9ab 100644 --- a/tests/file_tests.rs +++ b/tests/file_tests.rs @@ -31,7 +31,13 @@ fn check_cases() { insta::assert_debug_snapshot!("1-parsed", parsed); - let ast = nomo::ast::parse(parsed.tokens()).unwrap(); + let ast = match nomo::ast::parse(parsed.tokens()) { + Ok(ast) => ast, + Err(err) => { + eprintln!("{}", err.to_report(input)); + panic!("Could not evaluate ast"); + } + }; insta::assert_debug_snapshot!("2-ast", ast);