Reject doubled minus sign in parse_distance (#1707)

Found while testing crates/engine/src/units.rs:138-160

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
NetterSilver
2026-10-24 01:49:02 -04:00
committed by GitHub
co-authored by Claude Haiku 5.5
parent 6ee6e652fd
commit 9a32aa5613
+11
View File
@@ -142,6 +142,9 @@ pub fn parse_distance(s: &str) -> Option<f64> {
Some(r) => (true, r.trim()),
None => (false, t),
};
if neg && t.starts_with(['-', '+']) {
return None;
}
let mut total = 0.0;
let mut rest = t;
let mut parsed = false;
@@ -430,6 +433,14 @@ mod tests {
assert_eq!(parse_distance(""), None);
}
#[test]
fn parse_distance_rejects_doubled_minus() {
assert_eq!(parse_distance("--5"), None);
assert_eq!(parse_distance("- -3/4"), None);
assert_eq!(parse_distance("-5"), Some(-5.0));
assert_eq!(parse_distance("-3/4"), Some(-0.75));
}
#[test]
fn parse_distance_needs_a_number() {
assert_eq!(parse_distance("-"), None);