summaryrefslogtreecommitdiff
path: root/dhall
diff options
context:
space:
mode:
authorNadrieril2019-08-03 22:55:51 +0200
committerNadrieril2019-08-06 21:40:24 +0200
commitcc03ada4e713f145f2eb1bbf0f131a4c5746cf74 (patch)
tree6c4d1a59e3cfd621154b997ffe742768dc34c701 /dhall
parent8ec422f2319360f986950fcb9aae4bcf65a9c1e2 (diff)
Inline headers
Diffstat (limited to 'dhall')
-rw-r--r--dhall/build.rs8
-rw-r--r--dhall/src/phase/binary.rs29
-rw-r--r--dhall/src/phase/resolve.rs6
-rw-r--r--dhall/src/phase/typecheck.rs1
4 files changed, 29 insertions, 15 deletions
diff --git a/dhall/build.rs b/dhall/build.rs
index 3f09d47..5a99def 100644
--- a/dhall/build.rs
+++ b/dhall/build.rs
@@ -87,6 +87,9 @@ fn main() -> std::io::Result<()> {
|path| {
// Too slow in debug mode
path == "success/largeExpression"
+ // TODO: Inline headers are not implemented
+ || path == "success/unit/import/parenthesizeUsing"
+ || path == "success/unit/import/inlineUsing"
},
)?;
@@ -100,6 +103,8 @@ fn main() -> std::io::Result<()> {
path.starts_with("failure/")
// Too slow in debug mode
|| path == "success/largeExpression"
+ // TODO: Inline headers are not implemented
+ || path == "success/unit/import/inlineUsing"
},
)?;
@@ -118,6 +123,9 @@ fn main() -> std::io::Result<()> {
|| path == "success/multilet"
// See https://github.com/pyfisch/cbor/issues/109
|| path == "success/double"
+ // TODO: Inline headers are not implemented
+ || path == "success/unit/import/parenthesizeUsing"
+ || path == "success/unit/import/inlineUsing"
},
)?;
diff --git a/dhall/src/phase/binary.rs b/dhall/src/phase/binary.rs
index 1812131..874b4fb 100644
--- a/dhall/src/phase/binary.rs
+++ b/dhall/src/phase/binary.rs
@@ -216,18 +216,19 @@ fn cbor_value_to_dhall(
};
let headers = match rest.next() {
Some(Null) => None,
- Some(x) => {
- match cbor_value_to_dhall(&x)?.as_ref() {
- Embed(import) => Some(Box::new(
- import.location_hashed.clone(),
- )),
- _ => Err(DecodeError::WrongFormatError(
- "import/remote/headers".to_owned(),
- ))?,
- }
- }
+ // TODO
+ // Some(x) => {
+ // match cbor_value_to_dhall(&x)?.as_ref() {
+ // Embed(import) => Some(Box::new(
+ // import.location_hashed.clone(),
+ // )),
+ // _ => Err(DecodeError::WrongFormatError(
+ // "import/remote/headers".to_owned(),
+ // ))?,
+ // }
+ // }
_ => Err(DecodeError::WrongFormatError(
- "import/remote/headers".to_owned(),
+ "import/remote/headers is unimplemented".to_owned(),
))?,
};
let authority = match rest.next() {
@@ -378,7 +379,6 @@ enum Serialize<'a> {
CBOR(cbor::Value),
RecordMap(&'a DupTreeMap<Label, ParsedSubExpr>),
UnionMap(&'a DupTreeMap<Label, Option<ParsedSubExpr>>),
- Import(&'a Import),
}
macro_rules! count {
@@ -566,10 +566,10 @@ where
match &url.headers {
None => ser_seq.serialize_element(&Null)?,
Some(location_hashed) => ser_seq.serialize_element(
- &self::Serialize::Import(&Import {
+ &self::Serialize::Expr(&SubExpr::from_expr_no_note(ExprF::Embed(Import {
mode: ImportMode::Code,
location_hashed: location_hashed.as_ref().clone(),
- }),
+ }))),
)?,
};
ser_seq.serialize_element(&url.authority)?;
@@ -617,7 +617,6 @@ impl<'a> serde::ser::Serialize for Serialize<'a> {
(cbor::Value::String(k.into()), v)
}))
}
- Serialize::Import(import) => serialize_import(ser, import),
}
}
}
diff --git a/dhall/src/phase/resolve.rs b/dhall/src/phase/resolve.rs
index c4d7e5f..8c561a3 100644
--- a/dhall/src/phase/resolve.rs
+++ b/dhall/src/phase/resolve.rs
@@ -122,12 +122,18 @@ mod spec_tests {
// import_success!(success_alternativeEnvNatural, "alternativeEnvNatural");
// import_success!(success_alternativeEnvSimple, "alternativeEnvSimple");
+ // import_success!(success_alternativeHashMismatch, "alternativeHashMismatch");
// import_success!(success_alternativeNatural, "alternativeNatural");
+ // import_success!(success_alternativeParseError, "alternativeParseError");
// import_success!(success_asText, "asText");
+ // import_success!(success_customHeaders, "customHeaders");
import_success!(success_fieldOrder, "fieldOrder");
+ // import_success!(success_headerForwarding, "headerForwarding");
+ // import_success!(success_noHeaderForwarding, "noHeaderForwarding");
// import_failure!(failure_alternativeEnv, "alternativeEnv");
// import_failure!(failure_alternativeEnvMissing, "alternativeEnvMissing");
// import_failure!(failure_cycle, "cycle");
+ // import_failure!(failure_hashMismatch, "hashMismatch");
// import_failure!(failure_missing, "missing");
// import_failure!(failure_referentiallyInsane, "referentiallyInsane");
}
diff --git a/dhall/src/phase/typecheck.rs b/dhall/src/phase/typecheck.rs
index a3f676c..efdc2bb 100644
--- a/dhall/src/phase/typecheck.rs
+++ b/dhall/src/phase/typecheck.rs
@@ -1167,6 +1167,7 @@ mod spec_tests {
// tc_failure!(tc_failure_importBoundary, "importBoundary");
tc_failure!(tc_failure_mixedUnions, "mixedUnions");
tc_failure!(tc_failure_preferMixedRecords, "preferMixedRecords");
+ // tc_failure!(tc_failure_customHeadersUsingBoundVariable, "customHeadersUsingBoundVariable");
tc_failure!(tc_failure_unit_FunctionApplicationArgumentNotMatch, "unit/FunctionApplicationArgumentNotMatch");
tc_failure!(tc_failure_unit_FunctionApplicationIsNotFunction, "unit/FunctionApplicationIsNotFunction");
tc_failure!(tc_failure_unit_FunctionArgumentTypeNotAType, "unit/FunctionArgumentTypeNotAType");