diff --git a/crates/typst-syntax/src/lexer.rs b/crates/typst-syntax/src/lexer.rs index 1314016fa..358c25b20 100644 --- a/crates/typst-syntax/src/lexer.rs +++ b/crates/typst-syntax/src/lexer.rs @@ -766,6 +766,12 @@ impl Lexer<'_> { return self.error(eco_format!("invalid number suffix: {}", suffix)); } + if base != 10 { + let kind = self.error(eco_format!("invalid base-{base} prefix")); + self.hint("numbers with a unit cannot have a base prefix"); + return kind; + } + SyntaxKind::Numeric } diff --git a/tests/suite/layout/length.typ b/tests/suite/layout/length.typ index 5ba70072d..71d79da9a 100644 --- a/tests/suite/layout/length.typ +++ b/tests/suite/layout/length.typ @@ -74,3 +74,8 @@ // Hint: 2-24 use `length.to-absolute()` to resolve its em component (requires context) // Hint: 2-24 or use `length.abs.inches()` instead to ignore its em component #(4.5em + 6in).inches() + +--- issue-5519-length-base --- +// Error: 2-9 invalid base-2 prefix +// Hint: 2-9 numbers with a unit cannot have a base prefix +#0b100pt