summaryrefslogtreecommitdiff
path: root/dhall_syntax/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'dhall_syntax/src/core')
-rw-r--r--dhall_syntax/src/core/expr.rs9
-rw-r--r--dhall_syntax/src/core/visitor.rs22
2 files changed, 14 insertions, 17 deletions
diff --git a/dhall_syntax/src/core/expr.rs b/dhall_syntax/src/core/expr.rs
index 3bc7504..4bfd224 100644
--- a/dhall_syntax/src/core/expr.rs
+++ b/dhall_syntax/src/core/expr.rs
@@ -1,5 +1,4 @@
#![allow(non_snake_case)]
-use std::collections::BTreeMap;
use std::rc::Rc;
use crate::visitor;
@@ -202,13 +201,13 @@ pub enum ExprF<SubExpr, Label, Embed> {
/// `Some e`
SomeLit(SubExpr),
/// `{ k1 : t1, k2 : t1 }`
- RecordType(BTreeMap<Label, SubExpr>),
+ RecordType(Vec<(Label, SubExpr)>),
/// `{ k1 = v1, k2 = v2 }`
- RecordLit(BTreeMap<Label, SubExpr>),
+ RecordLit(Vec<(Label, SubExpr)>),
/// `< k1 : t1, k2 >`
- UnionType(BTreeMap<Label, Option<SubExpr>>),
+ UnionType(Vec<(Label, Option<SubExpr>)>),
/// `< k1 = t1, k2 : t2, k3 >`
- UnionLit(Label, SubExpr, BTreeMap<Label, Option<SubExpr>>),
+ UnionLit(Label, SubExpr, Vec<(Label, Option<SubExpr>)>),
/// `merge x y : t`
Merge(SubExpr, SubExpr, Option<SubExpr>),
/// `e.x`
diff --git a/dhall_syntax/src/core/visitor.rs b/dhall_syntax/src/core/visitor.rs
index 20bfc72..1377849 100644
--- a/dhall_syntax/src/core/visitor.rs
+++ b/dhall_syntax/src/core/visitor.rs
@@ -1,5 +1,3 @@
-use std::collections::BTreeMap;
-
use crate::*;
/// A way too generic Visitor trait.
@@ -68,10 +66,10 @@ where
None => None,
})
}
- fn btmap<'a, V, Ret, SE, L, E>(
- x: &'a BTreeMap<L, SE>,
+ fn vecmap<'a, V, Ret, SE, L, E>(
+ x: &'a Vec<(L, SE)>,
mut v: V,
- ) -> Result<BTreeMap<V::L2, V::SE2>, V::Error>
+ ) -> Result<Vec<(V::L2, V::SE2)>, V::Error>
where
L: Ord,
V::L2: Ord,
@@ -81,10 +79,10 @@ where
.map(|(k, x)| Ok((v.visit_label(k)?, v.visit_subexpr(x)?)))
.collect()
}
- fn btoptmap<'a, V, Ret, SE, L, E>(
- x: &'a BTreeMap<L, Option<SE>>,
+ fn vecoptmap<'a, V, Ret, SE, L, E>(
+ x: &'a Vec<(L, Option<SE>)>,
mut v: V,
- ) -> Result<BTreeMap<V::L2, Option<V::SE2>>, V::Error>
+ ) -> Result<Vec<(V::L2, Option<V::SE2>)>, V::Error>
where
L: Ord,
V::L2: Ord,
@@ -147,13 +145,13 @@ where
v.visit_subexpr(t)?,
),
SomeLit(e) => SomeLit(v.visit_subexpr(e)?),
- RecordType(kts) => RecordType(btmap(kts, v)?),
- RecordLit(kvs) => RecordLit(btmap(kvs, v)?),
- UnionType(kts) => UnionType(btoptmap(kts, v)?),
+ RecordType(kts) => RecordType(vecmap(kts, v)?),
+ RecordLit(kvs) => RecordLit(vecmap(kvs, v)?),
+ UnionType(kts) => UnionType(vecoptmap(kts, v)?),
UnionLit(k, x, kts) => UnionLit(
v.visit_label(k)?,
v.visit_subexpr(x)?,
- btoptmap(kts, v)?,
+ vecoptmap(kts, v)?,
),
Merge(x, y, t) => Merge(
v.visit_subexpr(x)?,