summaryrefslogtreecommitdiff
path: root/dhall/src/syntax
diff options
context:
space:
mode:
authorNadrieril2020-10-28 20:38:29 +0000
committerGitHub2020-10-28 20:38:29 +0000
commit70727acbda68e104f60ae1dbbe95adbcec08a628 (patch)
treeac3f0782fb90c8f6b03b3d29d1032d06d637e4ee /dhall/src/syntax
parent2b4ba42b7f0a44893f17548f069cec1e60819aa4 (diff)
parent9e3f68fc54babf24133cf66ae6be7d069ba2c271 (diff)
Merge pull request #188 from Nadrieril/change-nums
Use u64/i64 instead of usize/isize for the main number types
Diffstat (limited to 'dhall/src/syntax')
-rw-r--r--dhall/src/syntax/ast/expr.rs5
-rw-r--r--dhall/src/syntax/text/parser.rs6
2 files changed, 5 insertions, 6 deletions
diff --git a/dhall/src/syntax/ast/expr.rs b/dhall/src/syntax/ast/expr.rs
index d9badb9..b1a978f 100644
--- a/dhall/src/syntax/ast/expr.rs
+++ b/dhall/src/syntax/ast/expr.rs
@@ -7,9 +7,8 @@ use crate::semantics::Universe;
use crate::syntax::visitor;
use crate::syntax::*;
-// TODO: `usize` was a mistake. Should use `u64`.
-pub type Integer = isize;
-pub type Natural = usize;
+pub type Integer = i64;
+pub type Natural = u64;
pub type Double = NaiveDouble;
/// Double with bitwise equality
diff --git a/dhall/src/syntax/text/parser.rs b/dhall/src/syntax/text/parser.rs
index 377f5e4..37f28e5 100644
--- a/dhall/src/syntax/text/parser.rs
+++ b/dhall/src/syntax/text/parser.rs
@@ -378,7 +378,7 @@ impl DhallParser {
let s = input.as_str().trim();
if s.starts_with("0x") {
let without_prefix = s.trim_start_matches("0x");
- usize::from_str_radix(without_prefix, 16)
+ u64::from_str_radix(without_prefix, 16)
.map_err(|e| input.error(format!("{}", e)))
} else {
s.parse().map_err(|e| input.error(format!("{}", e)))
@@ -391,7 +391,7 @@ impl DhallParser {
if rest.starts_with("0x") {
let without_prefix =
sign.to_owned() + rest.trim_start_matches("0x");
- isize::from_str_radix(&without_prefix, 16)
+ i64::from_str_radix(&without_prefix, 16)
.map_err(|e| input.error(format!("{}", e)))
} else {
s.parse().map_err(|e| input.error(format!("{}", e)))
@@ -408,7 +408,7 @@ impl DhallParser {
fn variable(input: ParseInput) -> ParseResult<V> {
Ok(match_nodes!(input.into_children();
- [label(l), natural_literal(idx)] => V(l, idx),
+ [label(l), natural_literal(idx)] => V(l, idx as usize),
[label(l)] => V(l, 0),
))
}