From 9852e30b39b0378eb547b9d7344b6f8c3daa1d70 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 5 Mar 2020 12:50:11 -0700 Subject: [PATCH] compare characters directly in term comparison tests --- src/prolog/machine/machine_state_impl.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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(_)), _) -- 2.54.0