Skip to content

Commit

Permalink
Make ".e0" not parse as 0.0
Browse files Browse the repository at this point in the history
This forces floats to have either a digit before the separating point, or after. Thus ".e0" is invalid like ".", when using `parse()`.
  • Loading branch information
varkor committed Feb 19, 2018
1 parent 90759be commit c0e87f1
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/libcore/num/dec2flt/parse.rs
Expand Up @@ -73,7 +73,8 @@ pub fn parse_decimal(s: &str) -> ParseResult {
}
Some(&b'.') => {
let (fractional, s) = eat_digits(&s[1..]);
if integral.is_empty() && fractional.is_empty() && s.is_empty() {
if integral.is_empty() && fractional.is_empty() {
// We require at least a single digit before or after the point.
return Invalid;
}

Expand Down
6 changes: 6 additions & 0 deletions src/libcore/tests/num/dec2flt/mod.rs
Expand Up @@ -101,6 +101,12 @@ fn lonely_dot() {
assert!(".".parse::<f64>().is_err());
}

#[test]
fn exponentiated_dot() {
assert!(".e0".parse::<f32>().is_err());
assert!(".e0".parse::<f64>().is_err());
}

#[test]
fn lonely_sign() {
assert!("+".parse::<f32>().is_err());
Expand Down

0 comments on commit c0e87f1

Please sign in to comment.