diff options
author | Nadrieril | 2019-03-21 21:27:36 +0100 |
---|---|---|
committer | Nadrieril | 2019-03-21 21:27:36 +0100 |
commit | 8d527e88168885ab754a039219d0ae682fa4508b (patch) | |
tree | b26d26902ba84d611f9905add97b3a29d0dcf025 /dhall_core/src/parser.rs | |
parent | 6cbe21b84ffd274f92791ab8dbf9af6527978688 (diff) |
Follow the spec for handling Doubles
Diffstat (limited to '')
-rw-r--r-- | dhall_core/src/parser.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/dhall_core/src/parser.rs b/dhall_core/src/parser.rs index b07094d..7de75d2 100644 --- a/dhall_core/src/parser.rs +++ b/dhall_core/src/parser.rs @@ -348,7 +348,8 @@ make_parser! { rule!(double_literal_raw<core::Double>; raw_pair!(pair) => { pair.as_str().trim() - .parse() + .parse::<f64>() + .map(NaiveDouble::from) .map_err(|e: std::num::ParseFloatError| custom_parse_error(&pair, format!("{}", e)))? } ); @@ -599,9 +600,9 @@ make_parser! { rule!(literal_expression_raw<ParsedExpr> as expression; children!( [double_literal_raw(n)] => bx(Expr::DoubleLit(n)), - [minus_infinity_literal(n)] => bx(Expr::DoubleLit(std::f64::NEG_INFINITY)), - [plus_infinity_literal(n)] => bx(Expr::DoubleLit(std::f64::INFINITY)), - [NaN_raw(n)] => bx(Expr::DoubleLit(std::f64::NAN)), + [minus_infinity_literal(n)] => bx(Expr::DoubleLit(std::f64::NEG_INFINITY.into())), + [plus_infinity_literal(n)] => bx(Expr::DoubleLit(std::f64::INFINITY.into())), + [NaN_raw(n)] => bx(Expr::DoubleLit(std::f64::NAN.into())), [natural_literal_raw(n)] => bx(Expr::NaturalLit(n)), [integer_literal_raw(n)] => bx(Expr::IntegerLit(n)), [double_quote_literal(s)] => bx(Expr::TextLit(s)), |