summaryrefslogtreecommitdiff
path: root/dhall/src/semantics/nze/normalize.rs
diff options
context:
space:
mode:
authorNadrieril2020-02-09 11:58:11 +0000
committerNadrieril2020-02-09 20:13:23 +0000
commit5688ed654eee258bf8ffc8761ce693c73a0242d5 (patch)
treefa9240d0feb37260749ebae76f41a178a1fdd4ad /dhall/src/semantics/nze/normalize.rs
parent6c90d356c9a4a5bbeb88f25ad0ab499ba1503eae (diff)
Remove extra types stored in Value
Diffstat (limited to 'dhall/src/semantics/nze/normalize.rs')
-rw-r--r--dhall/src/semantics/nze/normalize.rs24
1 files changed, 8 insertions, 16 deletions
diff --git a/dhall/src/semantics/nze/normalize.rs b/dhall/src/semantics/nze/normalize.rs
index acb2e51..981d894 100644
--- a/dhall/src/semantics/nze/normalize.rs
+++ b/dhall/src/semantics/nze/normalize.rs
@@ -13,16 +13,10 @@ pub(crate) fn apply_any(f: Value, a: Value) -> ValueKind {
ValueKind::LamClosure { closure, .. } => {
closure.apply(a).kind().clone()
}
- ValueKind::AppliedBuiltin(closure) => {
- closure.apply(a, f.get_type_not_sort())
+ ValueKind::AppliedBuiltin(closure) => closure.apply(a),
+ ValueKind::UnionConstructor(l, kts) => {
+ ValueKind::UnionLit(l.clone(), a, kts.clone())
}
- ValueKind::UnionConstructor(l, kts, uniont) => ValueKind::UnionLit(
- l.clone(),
- a,
- kts.clone(),
- uniont.clone(),
- f.get_type_not_sort(),
- ),
_ => ValueKind::PartialExpr(ExprKind::App(f, a)),
}
}
@@ -326,11 +320,9 @@ pub(crate) fn normalize_one_layer(
Some(r) => Ret::Value(r.clone()),
None => Ret::Expr(expr),
},
- UnionType(kts) => Ret::ValueKind(UnionConstructor(
- l.clone(),
- kts.clone(),
- v.get_type_not_sort(),
- )),
+ UnionType(kts) => {
+ Ret::ValueKind(UnionConstructor(l.clone(), kts.clone()))
+ }
PartialExpr(ExprKind::BinOp(
BinOp::RightBiasedRecordMerge,
x,
@@ -402,11 +394,11 @@ pub(crate) fn normalize_one_layer(
ExprKind::Merge(ref handlers, ref variant, _) => {
match handlers.kind() {
RecordLit(kvs) => match variant.kind() {
- UnionConstructor(l, _, _) => match kvs.get(l) {
+ UnionConstructor(l, _) => match kvs.get(l) {
Some(h) => Ret::Value(h.clone()),
None => Ret::Expr(expr),
},
- UnionLit(l, v, _, _, _) => match kvs.get(l) {
+ UnionLit(l, v, _) => match kvs.get(l) {
Some(h) => Ret::Value(h.app(v.clone())),
None => Ret::Expr(expr),
},