From: Fayeed Pawaskar Date: Mon, 24 Jul 2023 04:42:14 +0000 (+0530) Subject: fix all the move errors X-Git-Tag: v0.9.2~23^2^2~4 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c89217903aff4aab72a8f2a5d7293685f73aab53;p=scryer-prolog.git fix all the move errors --- diff --git a/src/heap_print.rs b/src/heap_print.rs index 783b7f01..45fb9bf6 100644 --- a/src/heap_print.rs +++ b/src/heap_print.rs @@ -23,6 +23,7 @@ use dashu::base::DivRemEuclid; use ordered_float::OrderedFloat; use indexmap::IndexMap; +use tokio::io::Interest; use std::cell::Cell; use std::convert::TryFrom; @@ -512,8 +513,10 @@ pub(crate) fn numbervar(offset: &Integer, addr: HeapCellValue) -> Option 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ]; + let n_clone: Integer = n.clone(); + let i = n.div_rem_euclid(Integer::from(26)).1.to_f32().value() as usize; - let j = n.div_rem(Integer::from(26)); + let j = n_clone.div_rem(Integer::from(26)); let j = <(Integer, Integer)>::from(j).0; if j == Integer::from(0) { diff --git a/src/machine/arithmetic_ops.rs b/src/machine/arithmetic_ops.rs index 153ca0c3..1859d1d7 100644 --- a/src/machine/arithmetic_ops.rs +++ b/src/machine/arithmetic_ops.rs @@ -194,9 +194,16 @@ pub(crate) fn neg(n: Number, arena: &mut Arena) -> Number { Number::arena_from(-Integer::from(n.get_num()), arena) } } - Number::Integer(n) => Number::arena_from(-Integer::from(*n.clone()), arena), + + Number::Integer(n) => { + let n_clone: Integer = (*n).clone(); + Number::arena_from(-Integer::from(n_clone), arena) + }, Number::Float(OrderedFloat(f)) => Number::Float(OrderedFloat(-f)), - Number::Rational(r) => Number::arena_from(-Rational::from(*r), arena), + Number::Rational(r) => { + let r_clone: Rational = (*r).clone(); + Number::arena_from(-Rational::from(r_clone), arena) + }, } } @@ -210,9 +217,15 @@ pub(crate) fn abs(n: Number, arena: &mut Arena) -> Number { Number::arena_from(arena_int.abs(), arena) } } - Number::Integer(n) => Number::arena_from(Integer::from(n.abs()), arena), + Number::Integer(n) => { + let n_clone: Integer = (*n).clone(); + Number::arena_from(Integer::from(n_clone.abs()), arena) + }, Number::Float(f) => Number::Float(f.abs()), - Number::Rational(r) => Number::arena_from(Rational::from(r.abs()), arena), + Number::Rational(r) => { + let r_clone: Rational = (*r).clone(); + Number::arena_from(Rational::from(r_clone.abs()), arena) + }, } } @@ -251,7 +264,8 @@ pub(crate) fn mul(lhs: Number, rhs: Number, arena: &mut Arena) -> Result { - Ok(Number::arena_from(Integer::from(*n1) * &*n2, arena)) // mul_i + let n1_clone: Integer = (*n1).clone(); + Ok(Number::arena_from(Integer::from(n1_clone) * &*n2, arena)) // mul_i } (Number::Integer(n1), Number::Float(OrderedFloat(n2))) | (Number::Float(OrderedFloat(n2)), Number::Integer(n1)) => { @@ -259,7 +273,8 @@ pub(crate) fn mul(lhs: Number, rhs: Number, arena: &mut Arena) -> Result { - Ok(Number::arena_from(Rational::from(*n1) * &*n2, arena)) + let n1_clone: Integer = (*n1).clone(); + Ok(Number::arena_from(Rational::from(n1_clone) * &*n2, arena)) } (Number::Rational(n1), Number::Float(OrderedFloat(n2))) | (Number::Float(OrderedFloat(n2)), Number::Rational(n1)) => { @@ -269,7 +284,8 @@ pub(crate) fn mul(lhs: Number, rhs: Number, arena: &mut Arena) -> Result { - Ok(Number::arena_from(Rational::from(*r1) * &*r2, arena)) + let r1_clone: Rational = (*r1).clone(); + Ok(Number::arena_from(Rational::from(r1_clone) * &*r2, arena)) } } } @@ -534,7 +550,10 @@ pub fn rational_from_number( machine_st.error_form(instantiation_error, stub) })), }, - Number::Integer(n) => Ok(arena_alloc!(Rational::from(*n), arena)), + Number::Integer(n) => { + let n_clone: Integer = (*n).clone(); + Ok(arena_alloc!(Rational::from(n_clone), arena)) + }, } } @@ -939,10 +958,12 @@ pub(crate) fn gcd(n1: Number, n2: Number, arena: &mut Arena) -> Result { let n1 = Integer::from(n1.get_num()); - Ok(Number::arena_from(Integer::from(n2.gcd(&n1)), arena)) + let n2_clone: Integer = (*n2).clone(); + Ok(Number::arena_from(Integer::from(n2_clone.gcd(&n1)), arena)) } (Number::Integer(n1), Number::Integer(n2)) => { - Ok(Number::arena_from(Integer::from(n1.gcd(&Integer::from(n2.to_isize().unwrap()))) as IBig, arena)) + let n1_clone: Integer = (*n1).clone(); + Ok(Number::arena_from(Integer::from(n1_clone.gcd(&Integer::from(n2.to_isize().unwrap()))) as IBig, arena)) } (Number::Float(f), _) | (_, Number::Float(f)) => { let n = Number::Float(f);