From: Mark Thom Date: Mon, 7 Feb 2022 21:09:22 +0000 (-0700) Subject: print bounded depth partial strings correctly X-Git-Tag: v0.9.0^2~27 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=e4ea5476238e8669032b5ba5e0177048db2de4be;p=scryer-prolog.git print bounded depth partial strings correctly --- diff --git a/src/heap_print.rs b/src/heap_print.rs index 1dfba375..63e53d73 100644 --- a/src/heap_print.rs +++ b/src/heap_print.rs @@ -1188,15 +1188,19 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { self.state_stack.push(TokenOrRedirect::HeadTailSeparator); } - for (char_count, c) in pstr.chars().rev().enumerate() { + let state_stack_len = self.state_stack.len(); + + for (char_count, c) in pstr.chars().enumerate() { if max_depth > 0 && char_count + 1 >= max_depth { break; } - self.state_stack.push(TokenOrRedirect::Char(c)); self.state_stack.push(TokenOrRedirect::Comma); + self.state_stack.push(TokenOrRedirect::Char(c)); } + self.state_stack[state_stack_len ..].reverse(); + if let Some(TokenOrRedirect::Comma) = self.state_stack.last() { self.state_stack.pop(); }