From: Mark Thom Date: Sun, 3 Apr 2022 07:37:19 +0000 (-0600) Subject: compare complete strings to one another in write_literal_to_var (#1388) X-Git-Tag: v0.9.1~81 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=86176dce8dbcb7565f79f4240081187cfbcb85c1;p=scryer-prolog.git compare complete strings to one another in write_literal_to_var (#1388) --- diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index f5789878..7519c69e 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -1989,20 +1989,23 @@ impl MachineState { ) } (HeapCellValueTag::CStr, cstr_atom) => { - match store_v.get_tag() { - HeapCellValueTag::PStrLoc - | HeapCellValueTag::Lis - | HeapCellValueTag::Str => { + read_heap_cell!(store_v, + (HeapCellValueTag::PStrLoc + | HeapCellValueTag::Lis + | HeapCellValueTag::Str) => { self.match_partial_string(store_v, cstr_atom, false); } - HeapCellValueTag::AttrVar | HeapCellValueTag::Var => { + (HeapCellValueTag::AttrVar | HeapCellValueTag::Var) => { let r = store_v.as_var().unwrap(); self.bind(r, lit); } + (HeapCellValueTag::CStr, cstr2_atom) => { + self.fail = cstr_atom != cstr2_atom; + } _ => { self.fail = true; } - } + ); } _ => { unreachable!()