summaryrefslogtreecommitdiff
path: root/serde_dhall
diff options
context:
space:
mode:
authorNadrieril Feneanar2019-08-26 19:52:11 +0200
committerGitHub2019-08-26 19:52:11 +0200
commit2f6ae31f4682266e647d25f7554a66d543bec7ac (patch)
tree700aa667954dff91599420f75aa55d606c7b04dd /serde_dhall
parent38a82c53ef45e802cf5816a8afcbf36a69c91174 (diff)
parent829fff5bd3e2115c0a16d40a4dc266747d622b08 (diff)
Merge pull request #105 from Nadrieril/keep-type-info
Store type information everywhere in `Value`
Diffstat (limited to 'serde_dhall')
-rw-r--r--serde_dhall/src/lib.rs30
1 files changed, 6 insertions, 24 deletions
diff --git a/serde_dhall/src/lib.rs b/serde_dhall/src/lib.rs
index cef11dd..ce3468f 100644
--- a/serde_dhall/src/lib.rs
+++ b/serde_dhall/src/lib.rs
@@ -124,8 +124,6 @@ pub use value::Value;
// A Dhall value.
pub mod value {
- use dhall::core::value::Value as DhallValue;
- use dhall::core::valuef::ValueF as DhallValueF;
use dhall::phase::{NormalizedSubExpr, Parsed, Typed};
use dhall_syntax::Builtin;
@@ -153,48 +151,32 @@ pub mod value {
pub(crate) fn to_expr(&self) -> NormalizedSubExpr {
self.0.to_expr()
}
- pub(crate) fn to_value(&self) -> DhallValue {
- self.0.to_value()
- }
pub(crate) fn as_typed(&self) -> &Typed {
&self.0
}
- /// Assumes that the given value has type `Type`.
- pub(crate) fn make_simple_type(v: DhallValueF) -> Self {
- Value(Typed::from_valuef_and_type(v, Typed::const_type()))
- }
pub(crate) fn make_builtin_type(b: Builtin) -> Self {
- Self::make_simple_type(DhallValueF::from_builtin(b))
+ Value(Typed::make_builtin_type(b))
}
pub(crate) fn make_optional_type(t: Value) -> Self {
- Self::make_simple_type(
- DhallValueF::from_builtin(Builtin::Optional)
- .app_value(t.to_value()),
- )
+ Value(Typed::make_optional_type(t.0))
}
pub(crate) fn make_list_type(t: Value) -> Self {
- Self::make_simple_type(
- DhallValueF::from_builtin(Builtin::List)
- .app_value(t.to_value()),
- )
+ Value(Typed::make_list_type(t.0))
}
// Made public for the StaticType derive macro
#[doc(hidden)]
pub fn make_record_type(
kts: impl Iterator<Item = (String, Value)>,
) -> Self {
- Self::make_simple_type(DhallValueF::RecordType(
- kts.map(|(k, t)| (k.into(), t.to_value())).collect(),
- ))
+ Value(Typed::make_record_type(kts.map(|(k, t)| (k, t.0))))
}
#[doc(hidden)]
pub fn make_union_type(
kts: impl Iterator<Item = (String, Option<Value>)>,
) -> Self {
- Self::make_simple_type(DhallValueF::UnionType(
- kts.map(|(k, t)| (k.into(), t.map(|t| t.to_value())))
- .collect(),
+ Value(Typed::make_union_type(
+ kts.map(|(k, t)| (k, t.map(|t| t.0))),
))
}
}