diff options
Diffstat (limited to '')
-rw-r--r-- | dhall/src/operations.rs | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/dhall/src/operations.rs b/dhall/src/operations.rs index 1ebf288..8b5fa10 100644 --- a/dhall/src/operations.rs +++ b/dhall/src/operations.rs @@ -1,7 +1,7 @@ use itertools::Itertools; use std::borrow::Cow; use std::cmp::max; -use std::collections::HashMap; +use std::collections::{BTreeSet, HashMap}; use crate::builtins::Builtin; use crate::error::{ErrorBuilder, TypeError}; @@ -9,7 +9,6 @@ use crate::semantics::{ merge_maps, mk_span_err, mkerr, ret_kind, ret_op, ret_ref, Binder, Closure, Hir, HirKind, Nir, NirKind, Ret, TextLit, Tir, TyEnv, Type, }; -use crate::syntax::map::DupTreeSet; use crate::syntax::{trivial_result, Const, ExprKind, Label, NumKind, Span}; // Definition order must match precedence order for @@ -60,7 +59,7 @@ pub enum OpKind<SubExpr> { /// `e.x` Field(SubExpr, Label), /// `e.{ x, y, z }` - Projection(SubExpr, DupTreeSet<Label>), + Projection(SubExpr, BTreeSet<Label>), /// `e.(t)` ProjectionByExpr(SubExpr, SubExpr), /// `x::y` @@ -565,13 +564,7 @@ pub fn typecheck_operation( match kts.get(l) { None => return span_err("ProjectionMissingEntry"), Some(t) => { - use std::collections::hash_map::Entry; - match new_kts.entry(l.clone()) { - Entry::Occupied(_) => { - return span_err("ProjectionDuplicateField") - } - Entry::Vacant(e) => e.insert(t.clone()), - } + new_kts.insert(l.clone(), t.clone()); } }; } |