fix number/1 (#1329)

This commit is contained in:
Mark Thom
2022-03-06 19:17:52 -07:00
parent 3bf42860e2
commit bd594e0c05

View File

@@ -2528,16 +2528,9 @@ impl Machine {
let d = self.machine_st.store(self.machine_st.deref(self.machine_st[r])); let d = self.machine_st.store(self.machine_st.deref(self.machine_st[r]));
match Number::try_from(d) { match Number::try_from(d) {
Ok(Number::Fixnum(_) | Number::Integer(_) | Number::Float(_)) => { Ok(_) => {
self.machine_st.p += 1; self.machine_st.p += 1;
} }
Ok(Number::Rational(n)) => {
if n.denom() == &1 {
self.machine_st.p += 1;
} else {
self.machine_st.backtrack();
}
}
_ => { _ => {
self.machine_st.backtrack(); self.machine_st.backtrack();
} }
@@ -2547,16 +2540,9 @@ impl Machine {
let d = self.machine_st.store(self.machine_st.deref(self.machine_st[r])); let d = self.machine_st.store(self.machine_st.deref(self.machine_st[r]));
match Number::try_from(d) { match Number::try_from(d) {
Ok(Number::Fixnum(_) | Number::Integer(_) | Number::Float(_)) => { Ok(_) => {
self.machine_st.p = self.machine_st.cp; self.machine_st.p = self.machine_st.cp;
} }
Ok(Number::Rational(n)) => {
if n.denom() == &1 {
self.machine_st.p = self.machine_st.cp;
} else {
self.machine_st.backtrack();
}
}
_ => { _ => {
self.machine_st.backtrack(); self.machine_st.backtrack();
} }
@@ -2568,12 +2554,12 @@ impl Machine {
read_heap_cell!(d, read_heap_cell!(d,
(HeapCellValueTag::Cons, ptr) => { (HeapCellValueTag::Cons, ptr) => {
match_untyped_arena_ptr!(ptr, match_untyped_arena_ptr!(ptr,
(ArenaHeaderTag::Rational, _r) => { (ArenaHeaderTag::Rational, _r) => {
self.machine_st.p += 1; self.machine_st.p += 1;
} }
_ => { _ => {
self.machine_st.backtrack(); self.machine_st.backtrack();
} }
); );
} }
_ => { _ => {