correct printing of lists when double_quotes is set to atom

This commit is contained in:
Mark Thom
2018-08-30 00:04:19 -06:00
parent 92927bbcef
commit 872b153b08
4 changed files with 14 additions and 2 deletions

View File

@@ -339,8 +339,10 @@ impl<'a, Formatter: HCValueFormatter, Outputter: HCValueOutputter>
}
// self.expand_char_list(s);
} else { // for now, == DoubleQuotes::Atom
let borrowed_str = s.borrow();
self.outputter.append("\"");
self.outputter.append(s.borrow().as_str());
self.outputter.append(&borrowed_str[s.cursor() ..]);
self.outputter.append("\"");
},
Constant::Usize(i) =>

View File

@@ -49,7 +49,7 @@ impl<'a> Reader<'a> {
};
}
}
fn push_stub_addr(&mut self) {
let h = self.machine_st.heap.h;
self.machine_st.heap.push(HeapCellValue::Addr(Addr::HeapCell(h)));

View File

@@ -64,6 +64,11 @@ impl StringList {
}
}
#[inline]
pub fn cursor(&self) -> usize {
self.cursor
}
#[inline]
pub fn head(&self) -> Option<char> {
self.borrow()[self.cursor ..].chars().next()

View File

@@ -1786,4 +1786,9 @@ fn test_queries_on_string_lists()
assert_prolog_success!(&mut wam, "?- matcher(X, Y).",
[["X = [a, b, c | _1]", "Y = _1"]]);
assert_prolog_failure!(&mut wam, "?- matcher(\"abcdef\", Y).");
submit(&mut wam, "?- set_prolog_flag(double_quotes, chars).");
assert_prolog_success!(&mut wam, "?- X = \"abc\", X = ['a' | Y], set_prolog_flag(double_quotes, atom).",
[["X = \"abc\"", "Y = \"bc\""]]);
}