From 239552f4c31f7450156f3e4b7dee93f17d759b39 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Mon, 3 Sep 2018 15:14:02 -0600 Subject: [PATCH] correct print_var_eq bad ending check --- src/prolog/machine/machine_state_impl.rs | 4 +++- src/tests.rs | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/prolog/machine/machine_state_impl.rs b/src/prolog/machine/machine_state_impl.rs index 87473934..111c4495 100644 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@ -131,7 +131,9 @@ impl MachineState { let printer = HCPrinter::from_heap_locs(&self, fmt, output, var_dir); let mut output = printer.print(addr); - if output.ends_with(var.as_str()) { + let bad_ending = format!("= {}", &var); + + if output.ends_with(&bad_ending) { output.truncate(orig_len); } diff --git a/src/tests.rs b/src/tests.rs index 5adb8d37..5f162562 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1928,4 +1928,10 @@ fn test_queries_on_string_lists() assert_prolog_success!(&mut wam, "?- partial_string(\"abc\", X), matcher(X, Y), Y = [d, e, f | G], is_partial_string(Y), is_partial_string(G), G = \"ghi\".", [["X = [a, b, c, d, e, f, g, h, i]", "Y = [d, e, f, g, h, i]", "G = [g, h, i]"]]); + assert_prolog_success!(&mut wam, "?- partial_string(\"abc\", X), partial_string(\"ababc\", Y), Y = [a,b|Z], + X =@= Z.", + [["X = [a, b, c | _]", "Y = [a, b, a, b, c | _]", "Z = [a, b, c | _]"]]); + assert_prolog_failure!(&mut wam, "?- partial_string(\"abc\", X), partial_string(\"ababc\", Y), Y = [a,b|Z], + X == Z."); + } -- 2.54.0