summaryrefslogtreecommitdiff
path: root/dhall/src/semantics/tck/tir.rs
diff options
context:
space:
mode:
authorNadrieril2020-02-18 18:39:10 +0000
committerNadrieril2020-02-18 18:39:10 +0000
commitebe43bd6f1fd6feb1564ab9837399de7808b67b5 (patch)
tree57313cde64f7718c18619769bedcf399f6c7f3a5 /dhall/src/semantics/tck/tir.rs
parentda69fe3eef7e001a1a0bdd2a2f3ebefccc3426e3 (diff)
Borrow relevant Hir from Tir
Diffstat (limited to '')
-rw-r--r--dhall/src/semantics/tck/tir.rs30
1 files changed, 6 insertions, 24 deletions
diff --git a/dhall/src/semantics/tck/tir.rs b/dhall/src/semantics/tck/tir.rs
index 908bf8f..aeb7bf9 100644
--- a/dhall/src/semantics/tck/tir.rs
+++ b/dhall/src/semantics/tck/tir.rs
@@ -1,7 +1,7 @@
use crate::error::{ErrorBuilder, TypeError};
use crate::semantics::{mkerr, Hir, Nir, NirKind, NzEnv, TyEnv, VarEnv};
use crate::syntax::{Builtin, Const, Span};
-use crate::{NormalizedExpr, ToExprOptions};
+use crate::NormalizedExpr;
/// The type of a type. 0 is `Type`, 1 is `Kind`, etc...
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default)]
@@ -17,8 +17,8 @@ pub(crate) struct Type {
/// A hir expression plus its inferred type.
/// Stands for "Typed intermediate representation"
#[derive(Debug, Clone)]
-pub(crate) struct Tir {
- hir: Hir,
+pub(crate) struct Tir<'hir> {
+ hir: &'hir Hir,
ty: Type,
}
@@ -106,12 +106,9 @@ impl Type {
}
}
-impl Tir {
- pub fn from_hir(hir: &Hir, ty: Type) -> Self {
- Tir {
- hir: hir.clone(),
- ty,
- }
+impl<'hir> Tir<'hir> {
+ pub fn from_hir(hir: &'hir Hir, ty: Type) -> Self {
+ Tir { hir, ty }
}
pub fn span(&self) -> Span {
@@ -127,10 +124,6 @@ impl Tir {
pub fn as_hir(&self) -> &Hir {
&self.hir
}
- /// Converts a closed expression back to the corresponding AST expression.
- pub fn to_expr(&self, opts: ToExprOptions) -> NormalizedExpr {
- self.as_hir().to_expr(opts)
- }
pub fn to_expr_tyenv(&self, env: &TyEnv) -> NormalizedExpr {
self.as_hir().to_expr_tyenv(env)
}
@@ -173,17 +166,6 @@ impl Tir {
.to_universe(),
))
}
- /// Eval a closed Tir (i.e. without free variables). It will actually get evaluated only as
- /// needed on demand.
- pub fn eval_closed_expr(&self) -> Nir {
- self.eval(NzEnv::new())
- }
- /// Eval a closed Tir fully and recursively;
- pub fn rec_eval_closed_expr(&self) -> Nir {
- let val = self.eval_closed_expr();
- val.normalize();
- val
- }
}
impl From<Const> for Universe {