From: Mark Thom Date: Wed, 1 Jun 2022 05:34:55 +0000 (-0600) Subject: don't print superfluous round brackets in curly braces (#1416) X-Git-Tag: v0.9.1~15 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=4b5c22864ecd2cdcf4cb142a33b244a806003d05;p=scryer-prolog.git don't print superfluous round brackets in curly braces (#1416) --- diff --git a/src/heap_print.rs b/src/heap_print.rs index 9a8d154c..41d2b809 100644 --- a/src/heap_print.rs +++ b/src/heap_print.rs @@ -202,6 +202,7 @@ enum TokenOrRedirect { Op(Atom, OpDesc), NumberedVar(String), CompositeRedirect(usize, DirectedOp), + CurlyBracketRedirect(usize), FunctorRedirect(usize), #[allow(unused)] IpAddr(IpAddr), NumberFocus(usize, NumberFocus, Option), @@ -735,8 +736,9 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { return false; } + self.state_stack.push(TokenOrRedirect::RightCurly); - self.state_stack.push(TokenOrRedirect::FunctorRedirect(max_depth)); + self.state_stack.push(TokenOrRedirect::CurlyBracketRedirect(max_depth)); self.state_stack.push(TokenOrRedirect::LeftCurly); true @@ -791,8 +793,8 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { } } - return match (name.as_str(), arity) { - ("{}", 1) if !self.ignore_ops => self.format_curly_braces(max_depth), + return match (name, arity) { + (atom!("{}"), 1) if !self.ignore_ops => self.format_curly_braces(max_depth), _ => self.format_struct(max_depth, arity, name), }; } @@ -1305,8 +1307,8 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { max_depth: usize, ) { let add_brackets = if !self.ignore_ops { - negated_operand - || if let Some(ref op) = op { + negated_operand || + if let Some(ref op) = op { if self.numbervars && arity == 1 && name == atom!("$VAR") { !self.iter.immediate_leaf_has_property(|addr| { match Number::try_from(addr) { @@ -1571,6 +1573,9 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> { TokenOrRedirect::CompositeRedirect(max_depth, op) => { self.handle_heap_term(Some(op), false, max_depth) } + TokenOrRedirect::CurlyBracketRedirect(max_depth) => { + self.handle_heap_term(None, false, max_depth) + } TokenOrRedirect::FunctorRedirect(max_depth) => { self.handle_heap_term(None, true, max_depth) }