From: Mark Thom Date: Mon, 11 May 2020 03:48:38 +0000 (-0600) Subject: record names of variables at root in write_term_to_heap (#487) X-Git-Tag: v0.8.123~41 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=4c0da691b817b8b114c3538c5c1bf2318985bbc8;p=scryer-prolog.git record names of variables at root in write_term_to_heap (#487) --- diff --git a/src/prolog/read.rs b/src/prolog/read.rs index 29b37fcb..4751759e 100644 --- a/src/prolog/read.rs +++ b/src/prolog/read.rs @@ -267,11 +267,15 @@ impl<'a> TermWriter<'a> { continue; } } - &TermRef::AnonVar(Level::Root) | &TermRef::Constant(Level::Root, ..) | - &TermRef::Var(Level::Root, ..) => { + &TermRef::AnonVar(Level::Root) | &TermRef::Constant(Level::Root, ..) => { let addr = self.term_as_addr(&term, h); self.machine_st.heap.push(HeapCellValue::Addr(addr)); } + &TermRef::Var(Level::Root, _, ref var) => { + let addr = self.term_as_addr(&term, h); + self.var_dict.insert(var.clone(), Addr::HeapCell(h)); + self.machine_st.heap.push(HeapCellValue::Addr(addr)); + } &TermRef::AnonVar(_) => { if let Some((arity, site_h)) = self.queue.pop_front() { if arity > 1 {