Warn on usage of the unknown numeric suffix (#6690)

Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
Nick Cameron
2025-05-05 13:17:55 +12:00
committed by GitHub
parent f407762259
commit 5f836358c0

View File

@ -529,10 +529,15 @@ pub(crate) fn unsigned_number_literal(i: &mut TokenSlice) -> PResult<Node<Litera
CompilationError::fatal(token.as_source_range(), format!("Invalid float: {}", token.value))
})?;
let suffix = token.numeric_suffix();
if let NumericSuffix::Unknown = suffix {
ParseContext::warn(CompilationError::err(token.as_source_range(), "The 'unknown' numeric suffix is not properly supported; it is likely to change or be removed, and may be buggy."));
}
Ok((
LiteralValue::Number {
value,
suffix: token.numeric_suffix(),
suffix,
},
token,
))
@ -4484,6 +4489,14 @@ export fn cos(num: number(rad)): number(_) {}"#;
assert_eq!(errs.len(), 1, "{errs:#?}");
}
#[test]
fn warn_unknown_suffix() {
let some_program_string = r#"foo = 42_?
"#;
let (_, errs) = assert_no_err(some_program_string);
assert_eq!(errs.len(), 1, "{errs:#?}");
}
#[test]
fn fn_decl_uom_ty() {
let some_program_string = r#"fn foo(x: number(mm)): number(_) { return 1 }"#;