From: Mark Thom Date: Mon, 16 Mar 2020 03:15:42 +0000 (-0600) Subject: correct contextual quoting of chars X-Git-Tag: v0.8.119~35 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=8e318f76a7017920bb7ddb2bbfb4f0b5a1e30c6c;p=scryer-prolog.git correct contextual quoting of chars --- diff --git a/src/prolog/heap_print.rs b/src/prolog/heap_print.rs index d49a8709..d7afc429 100644 --- a/src/prolog/heap_print.rs +++ b/src/prolog/heap_print.rs @@ -972,10 +972,10 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { } } - fn print_char(&mut self, c: char) - { + fn print_char(&mut self, is_quoted: bool, c: char) + { if non_quoted_token(once(c)) { - let c = char_to_string(self.quoted, c); + let c = char_to_string(false, c); push_space_if_amb!(self, &c, { self.append_str(c.as_str()); @@ -985,10 +985,10 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { if self.quoted { result.push('\''); - result += &char_to_string(self.quoted, c); + result += &char_to_string(is_quoted, c); result.push('\''); } else { - result += &char_to_string(self.quoted, c); + result += &char_to_string(is_quoted, c); } push_space_if_amb!(self, &result, { @@ -1036,7 +1036,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { self.append_str(&format!("{}", c as u32)); } Constant::Char(c) => { - self.print_char(c); + self.print_char(self.quoted, c); } Constant::CutPoint(b) => { self.append_str(&format!("{}", b)); @@ -1113,10 +1113,10 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { }; for c in iter { - self.print_char('.'); + self.print_char(self.quoted, '.'); self.push_char('('); - self.print_char(c); + self.print_char(self.quoted, c); self.push_char(','); char_count += 1; @@ -1145,7 +1145,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { let mut byte_len = 0; for c in iter { - self.print_char(c); + self.print_char(false, c); self.push_char(','); byte_len += c.len_utf8();