From: Mark Thom Date: Thu, 5 Mar 2020 19:50:11 +0000 (-0700) Subject: compare characters directly in term comparison tests X-Git-Tag: v0.8.119~62 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=9852e30b39b0378eb547b9d7344b6f8c3daa1d70;p=scryer-prolog.git compare characters directly in term comparison tests --- diff --git a/src/prolog/machine/machine_state_impl.rs b/src/prolog/machine/machine_state_impl.rs index 9ac09ca9..10468a36 100644 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@ -2300,6 +2300,14 @@ impl MachineState { return Ordering::Greater; } } + ( + HeapCellValue::Addr(Addr::Con(Constant::Char(c1))), + HeapCellValue::Addr(Addr::Con(Constant::Char(c2))), + ) => { + if c1 != c2 { + return c1.cmp(&c2); + } + } ( HeapCellValue::Addr(Addr::Con(Constant::Atom(atom, _))), HeapCellValue::Addr(Addr::Con(Constant::Char(c))), @@ -2366,7 +2374,9 @@ impl MachineState { HeapCellValue::Addr(Addr::AttrVar(hc1)), HeapCellValue::Addr(Addr::PStrTail(hc2, _)), ) => { - return hc1.cmp(&hc2); + if hc1 != hc2 { + return hc1.cmp(&hc2); + } } (HeapCellValue::Addr(Addr::HeapCell(_)), _) | (HeapCellValue::Addr(Addr::AttrVar(_)), _)