From 26d4975a4c94c2b9fd0c075ad94c2588e3cf24e8 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Wed, 29 Jan 2020 21:29:53 +0000 Subject: Use NameEnv in tyexpr_to_expr --- dhall/src/semantics/nze/nzexpr.rs | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'dhall/src/semantics/nze') diff --git a/dhall/src/semantics/nze/nzexpr.rs b/dhall/src/semantics/nze/nzexpr.rs index 043840e..7263cac 100644 --- a/dhall/src/semantics/nze/nzexpr.rs +++ b/dhall/src/semantics/nze/nzexpr.rs @@ -35,9 +35,6 @@ impl NameEnv { size: self.names.len(), } } - pub fn names(&self) -> &[Binder] { - &self.names - } pub fn insert(&self, x: &Binder) -> Self { let mut env = self.clone(); @@ -47,9 +44,9 @@ impl NameEnv { pub fn insert_mut(&mut self, x: &Binder) { self.names.push(x.clone()) } - // pub fn remove_mut(&mut self) { - // self.names.pop(); - // } + pub fn remove_mut(&mut self) { + self.names.pop(); + } pub fn unlabel_var(&self, var: &V) -> Option { let V(name, idx) = var; @@ -62,17 +59,17 @@ impl NameEnv { .nth(*idx)?; Some(AlphaVar::new(V((), idx))) } - // pub fn label_var(&self, var: &AlphaVar) -> V { - // let name = &self.names[self.names.len() - 1 - var.idx()]; - // let idx = self - // .names - // .iter() - // .rev() - // .take(var.idx()) - // .filter(|n| *n == name) - // .count(); - // V(name.clone(), idx) - // } + pub fn label_var(&self, var: &AlphaVar) -> V { + let name = &self.names[self.names.len() - 1 - var.idx()]; + let idx = self + .names + .iter() + .rev() + .take(var.idx()) + .filter(|n| *n == name) + .count(); + V(name.clone(), idx) + } } // TODO: rename to VarEnv -- cgit v1.2.3