diff --git a/crates/formula/src/lexer.rs b/crates/formula/src/lexer.rs index 4c41d3609..f85fcde93 100644 --- a/crates/formula/src/lexer.rs +++ b/crates/formula/src/lexer.rs @@ -260,6 +260,9 @@ pub fn tokenize_locale(src: &str, locale: crate::FormulaLocale) -> Result crate::MAX_FORMULA_LEN); assert!(parse(&text).is_ok()); } + +#[test] +fn number_literal_too_large_for_f64_is_a_parse_error() { + for bad in ["1E+400", "-1E+400", "1E+400*A1", "SUM(1E309,1)", "9".repeat(400).as_str()] { + assert!(parse(bad).is_err(), "{bad} should fail"); + } + assert!(parse("1E+308").is_ok()); +}