use lex_syntax::parse_source;
#[test]
fn deeply_nested_lists_yield_clean_error_not_stack_overflow() {
let src = "fn f() -> Int { ".to_string()
+ &"[".repeat(1000)
+ " 1 "
+ &"]".repeat(1000)
+ " }";
let err = parse_source(&src).unwrap_err().to_string();
assert!(err.contains("nests too deeply"),
"expected depth error, got: {err}");
}
#[test]
fn deeply_nested_records_yield_clean_error() {
let src = "fn f() -> Int { ".to_string()
+ &"{ x: ".repeat(1000)
+ "1"
+ &" }".repeat(1000)
+ " }";
let err = parse_source(&src).unwrap_err().to_string();
assert!(err.contains("nests too deeply"),
"expected depth error, got: {err}");
}
#[test]
fn modestly_nested_input_still_parses() {
let src = "fn f() -> Int { ".to_string()
+ &"[".repeat(50)
+ " 1 "
+ &"]".repeat(50)
+ " }";
parse_source(&src).expect("50-deep input must parse");
}