From 4c159640e5ee77ffa48b85a5bffa56350cf933ef Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sat, 4 May 2019 17:59:05 +0200 Subject: Make SubExpr generic in the variable labels type --- dhall/src/typecheck.rs | 65 ++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 31 deletions(-) (limited to 'dhall/src/typecheck.rs') diff --git a/dhall/src/typecheck.rs b/dhall/src/typecheck.rs index 8b7f011..63041bb 100644 --- a/dhall/src/typecheck.rs +++ b/dhall/src/typecheck.rs @@ -14,13 +14,16 @@ use dhall_syntax::*; use self::TypeMessage::*; +type InputSubExpr = SubExpr; +type OutputSubExpr = SubExpr; + impl Resolved { pub fn typecheck(self) -> Result { type_of(self.0) } pub fn typecheck_with(self, ty: &Type) -> Result { - let expr: SubExpr<_, _> = self.0; - let ty: SubExpr<_, _> = ty.to_expr().embed_absurd().note_absurd(); + let expr = self.0; + let ty = ty.to_expr().embed_absurd().note_absurd(); type_of(expr.rewrap(ExprF::Annot(expr.clone(), ty))) } /// Pretends this expression has been typechecked. Use with care. @@ -43,7 +46,7 @@ impl Typed { } impl Normalized { - fn shift(&self, delta: isize, var: &V