From 72ad56209fe10e3120c19ca5b820ff267423ab1d Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sat, 11 Apr 2020 15:41:21 +0100 Subject: spec: fix precedence of `===` and `with` --- dhall/tests/parser/success/unit/WithPrecedence1B.txt | 1 + dhall/tests/parser/success/unit/WithPrecedence2B.txt | 1 + dhall/tests/parser/success/unit/WithPrecedence3B.txt | 1 + dhall/tests/parser/success/unit/operators/PrecedenceEquivalenceB.txt | 1 + 4 files changed, 4 insertions(+) create mode 100644 dhall/tests/parser/success/unit/WithPrecedence1B.txt create mode 100644 dhall/tests/parser/success/unit/WithPrecedence2B.txt create mode 100644 dhall/tests/parser/success/unit/WithPrecedence3B.txt create mode 100644 dhall/tests/parser/success/unit/operators/PrecedenceEquivalenceB.txt (limited to 'dhall/tests/parser/success/unit') diff --git a/dhall/tests/parser/success/unit/WithPrecedence1B.txt b/dhall/tests/parser/success/unit/WithPrecedence1B.txt new file mode 100644 index 0000000..5f22335 --- /dev/null +++ b/dhall/tests/parser/success/unit/WithPrecedence1B.txt @@ -0,0 +1 @@ +{ a = Some 1 } ⫽ { a = Some 2 } ⫽ { a = Some 3 } diff --git a/dhall/tests/parser/success/unit/WithPrecedence2B.txt b/dhall/tests/parser/success/unit/WithPrecedence2B.txt new file mode 100644 index 0000000..f945cc9 --- /dev/null +++ b/dhall/tests/parser/success/unit/WithPrecedence2B.txt @@ -0,0 +1 @@ +{ x = 0 } ⫽ { x = 1 + 1 } diff --git a/dhall/tests/parser/success/unit/WithPrecedence3B.txt b/dhall/tests/parser/success/unit/WithPrecedence3B.txt new file mode 100644 index 0000000..a801b24 --- /dev/null +++ b/dhall/tests/parser/success/unit/WithPrecedence3B.txt @@ -0,0 +1 @@ +foo::{ x = 0 } ⫽ { x = 1 } diff --git a/dhall/tests/parser/success/unit/operators/PrecedenceEquivalenceB.txt b/dhall/tests/parser/success/unit/operators/PrecedenceEquivalenceB.txt new file mode 100644 index 0000000..717c108 --- /dev/null +++ b/dhall/tests/parser/success/unit/operators/PrecedenceEquivalenceB.txt @@ -0,0 +1 @@ +2 + 3 * 4 ≡ 4 * 3 + 2 -- cgit v1.3.1 From 233e17abd5ec68f2a964954fb42c23705e6fa62d Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sat, 11 Apr 2020 22:58:02 +0100 Subject: spec: update encoding of floating point values to RFC7049bis --- CHANGELOG.md | 1 + dhall-lang | 2 +- dhall/tests/parser/success/unit/DoubleLit16bitB.txt | 1 + dhall/tests/parser/success/unit/DoubleLit32bitB.txt | 1 + dhall/tests/parser/success/unit/DoubleLit64bitB.txt | 1 + dhall/tests/spec.rs | 15 +++------------ 6 files changed, 8 insertions(+), 13 deletions(-) create mode 100644 dhall/tests/parser/success/unit/DoubleLit16bitB.txt create mode 100644 dhall/tests/parser/success/unit/DoubleLit32bitB.txt create mode 100644 dhall/tests/parser/success/unit/DoubleLit64bitB.txt (limited to 'dhall/tests/parser/success/unit') diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ac4b21..f410d16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ #### [Unreleased] +- Update encoding of floating point values to RFC7049bis - Allow unions with mixed kinds - Adjust precedence of `===` and `with` - Fix running tests on Windows. Developing on this lib should now be possible on Windows. diff --git a/dhall-lang b/dhall-lang index 5973964..379e741 160000 --- a/dhall-lang +++ b/dhall-lang @@ -1 +1 @@ -Subproject commit 5973964062be2e7ea6ff7300a46616086dd9143b +Subproject commit 379e741365465313aa77e755077bd81f328ca1bc diff --git a/dhall/tests/parser/success/unit/DoubleLit16bitB.txt b/dhall/tests/parser/success/unit/DoubleLit16bitB.txt new file mode 100644 index 0000000..9ad974f --- /dev/null +++ b/dhall/tests/parser/success/unit/DoubleLit16bitB.txt @@ -0,0 +1 @@ +5.5 diff --git a/dhall/tests/parser/success/unit/DoubleLit32bitB.txt b/dhall/tests/parser/success/unit/DoubleLit32bitB.txt new file mode 100644 index 0000000..f67efa2 --- /dev/null +++ b/dhall/tests/parser/success/unit/DoubleLit32bitB.txt @@ -0,0 +1 @@ +5555.5 diff --git a/dhall/tests/parser/success/unit/DoubleLit64bitB.txt b/dhall/tests/parser/success/unit/DoubleLit64bitB.txt new file mode 100644 index 0000000..f3714c3 --- /dev/null +++ b/dhall/tests/parser/success/unit/DoubleLit64bitB.txt @@ -0,0 +1 @@ +55555555555.5 diff --git a/dhall/tests/spec.rs b/dhall/tests/spec.rs index 37df91d..ee12bc7 100644 --- a/dhall/tests/spec.rs +++ b/dhall/tests/spec.rs @@ -51,7 +51,7 @@ impl FileType { match self { FileType::Text => TestFile::Source(file), FileType::Binary => TestFile::Binary(file), - FileType::Hash => TestFile::Binary(file), + FileType::Hash => TestFile::UI(file), FileType::UI => TestFile::UI(file), } } @@ -449,10 +449,6 @@ fn define_features() -> Vec { false // Pretty sure the test is incorrect || path == "unit/import/urls/quotedPathFakeUrlEncode" - // See https://github.com/pyfisch/cbor/issues/109 - || path == "double" - || path == "unit/DoubleLitExponentNoDot" - || path == "unit/DoubleLitSecretelyInt" }), output_type: FileType::Binary, ..default_feature.clone() @@ -518,13 +514,8 @@ fn define_features() -> Vec { directory: "semantic-hash/success/", variant: SpecTestKind::SemanticHash, exclude_path: Rc::new(|path: &str| { - false - // We don't support bignums - || path == "simple/integerToDouble" - // See https://github.com/pyfisch/cbor/issues/109 - || path == "prelude/Integer/toDouble/0" - || path == "prelude/Integer/toDouble/1" - || path == "prelude/Natural/toDouble/0" + // We don't support bignums + path == "simple/integerToDouble" }), output_type: FileType::Hash, ..default_feature.clone() -- cgit v1.3.1 From 8fd2fb4871335c72b9448da4a66144fd7f986f09 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Thu, 25 Jun 2020 14:21:02 +0100 Subject: spec!: remove the ability to quote paths in URLs --- CHANGELOG.md | 1 + dhall-lang | 2 +- dhall/src/syntax/text/dhall.abnf | 9 ++------- dhall/src/syntax/text/dhall.pest.visibility | 2 +- dhall/src/syntax/text/parser.rs | 11 +++++------ dhall/tests/parser/failure/unit/UrlWithQuotedPath.txt | 6 ++++++ dhall/tests/parser/success/unit/import/quotedPathsB.txt | 2 +- 7 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 dhall/tests/parser/failure/unit/UrlWithQuotedPath.txt (limited to 'dhall/tests/parser/success/unit') diff --git a/CHANGELOG.md b/CHANGELOG.md index 959f0a6..dd042c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ #### [Unreleased] +- BREAKING CHANGE: Remove the ability to quote paths in URLs - Allow quoted labels to be empty - Support Dhall v16.0.0 - Fix running tests on Windows. Developing on this lib should now be possible on Windows. diff --git a/dhall-lang b/dhall-lang index 871e8f7..8637829 160000 --- a/dhall-lang +++ b/dhall-lang @@ -1 +1 @@ -Subproject commit 871e8f749f4c8a9d80311e0646dfbf0b5eeec316 +Subproject commit 86378293333912335c7b4bfaa32a562947809512 diff --git a/dhall/src/syntax/text/dhall.abnf b/dhall/src/syntax/text/dhall.abnf index 26f6eab..4061de2 100644 --- a/dhall/src/syntax/text/dhall.abnf +++ b/dhall/src/syntax/text/dhall.abnf @@ -582,7 +582,6 @@ scheme = %x68.74.74.70 [ %x73 ] ; "http" [ "s" ] ; NOTE: This does not match the official grammar for a URI. Specifically: ; -; * path segments may be quoted instead of using percent-encoding ; * this does not support fragment identifiers, which have no meaning within ; Dhall expressions and do not affect import resolution ; * the characters "(" ")" and "," are not included in the `sub-delims` rule: @@ -595,13 +594,9 @@ scheme = %x68.74.74.70 [ %x73 ] ; "http" [ "s" ] ; ; Reserved characters in quoted path components should be percent-encoded ; according to https://tools.ietf.org/html/rfc3986#section-2 -http-raw = scheme "://" authority url-path [ "?" query ] +http-raw = scheme "://" authority path-abempty [ "?" query ] -; Temporary rule to allow old-style `path-component`s and RFC3986 `segment`s in -; the same grammar. Eventually we can just use `path-abempty` from the same -; RFC. See issue #581 - -url-path = *(path-component / "/" segment) +path-abempty = *( "/" segment ) ; NOTE: Backtrack if parsing the optional user info prefix fails authority = [ userinfo "@" ] host [ ":" port ] diff --git a/dhall/src/syntax/text/dhall.pest.visibility b/dhall/src/syntax/text/dhall.pest.visibility index 2fee160..6de7dd2 100644 --- a/dhall/src/syntax/text/dhall.pest.visibility +++ b/dhall/src/syntax/text/dhall.pest.visibility @@ -120,7 +120,7 @@ home_path absolute_path scheme http_raw -url_path +path_abempty authority # userinfo # host diff --git a/dhall/src/syntax/text/parser.rs b/dhall/src/syntax/text/parser.rs index 1c51ca2..06c1ac3 100644 --- a/dhall/src/syntax/text/parser.rs +++ b/dhall/src/syntax/text/parser.rs @@ -514,14 +514,14 @@ impl DhallParser { fn http_raw(input: ParseInput) -> ParseResult> { Ok(match_nodes!(input.into_children(); - [scheme(sch), authority(auth), url_path(p)] => URL { + [scheme(sch), authority(auth), path_abempty(p)] => URL { scheme: sch, authority: auth, path: p, query: None, headers: None, }, - [scheme(sch), authority(auth), url_path(p), query(q)] => URL { + [scheme(sch), authority(auth), path_abempty(p), query(q)] => URL { scheme: sch, authority: auth, path: p, @@ -531,10 +531,10 @@ impl DhallParser { )) } - fn url_path(input: ParseInput) -> ParseResult { + fn path_abempty(input: ParseInput) -> ParseResult { Ok(match_nodes!(input.into_children(); - [path_component(components)..] => { - let mut file_path: Vec<_> = components.collect(); + [segment(segments)..] => { + let mut file_path: Vec<_> = segments.collect(); // An empty path normalizes to "/" if file_path.is_empty() { file_path = vec!["".to_owned()]; @@ -548,7 +548,6 @@ impl DhallParser { Ok(input.as_str().to_owned()) } - #[alias(path_component)] fn segment(input: ParseInput) -> ParseResult { Ok(input.as_str().to_string()) } diff --git a/dhall/tests/parser/failure/unit/UrlWithQuotedPath.txt b/dhall/tests/parser/failure/unit/UrlWithQuotedPath.txt new file mode 100644 index 0000000..0b51f38 --- /dev/null +++ b/dhall/tests/parser/failure/unit/UrlWithQuotedPath.txt @@ -0,0 +1,6 @@ + --> 1:21 + | +1 | https://example.com/"a%20b"/c␊ + | ^--- + | + = expected EOI, import_alt, bool_or, natural_plus, text_append, list_append, bool_and, natural_times, bool_eq, bool_ne, combine, combine_types, equivalent, prefer, or arrow diff --git a/dhall/tests/parser/success/unit/import/quotedPathsB.txt b/dhall/tests/parser/success/unit/import/quotedPathsB.txt index 4705ca3..373b872 100644 --- a/dhall/tests/parser/success/unit/import/quotedPathsB.txt +++ b/dhall/tests/parser/success/unit/import/quotedPathsB.txt @@ -1 +1 @@ -{ example0 = /foo/bar/"baz qux", example1 = https://example.com/foo/bar%3Fbaz?qux } +/foo/bar/"baz qux" -- cgit v1.3.1 From 75929b8a3ca99ead6e10365439c40d2fe86dfe55 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Thu, 25 Jun 2020 14:27:53 +0100 Subject: chore: garbage collect removed tests --- dhall/tests/parser/success/unit/WithPrecedenceB.txt | 1 - .../success/unit/import/urls/quotedPathFakeUrlEncodeB.txt | 1 - dhall/tests/spec.rs | 10 ---------- 3 files changed, 12 deletions(-) delete mode 100644 dhall/tests/parser/success/unit/WithPrecedenceB.txt delete mode 100644 dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt (limited to 'dhall/tests/parser/success/unit') diff --git a/dhall/tests/parser/success/unit/WithPrecedenceB.txt b/dhall/tests/parser/success/unit/WithPrecedenceB.txt deleted file mode 100644 index 5f22335..0000000 --- a/dhall/tests/parser/success/unit/WithPrecedenceB.txt +++ /dev/null @@ -1 +0,0 @@ -{ a = Some 1 } ⫽ { a = Some 2 } ⫽ { a = Some 3 } diff --git a/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt b/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt deleted file mode 100644 index a8366d2..0000000 --- a/dhall/tests/parser/success/unit/import/urls/quotedPathFakeUrlEncodeB.txt +++ /dev/null @@ -1 +0,0 @@ -https://example.com/a%20b/c diff --git a/dhall/tests/spec.rs b/dhall/tests/spec.rs index ee12bc7..d9e2c56 100644 --- a/dhall/tests/spec.rs +++ b/dhall/tests/spec.rs @@ -413,11 +413,6 @@ fn define_features() -> Vec { directory: "parser/success/", variant: SpecTestKind::ParserSuccess, too_slow_path: Rc::new(|path: &str| path == "largeExpression"), - exclude_path: Rc::new(|path: &str| { - false - // Pretty sure the test is incorrect - || path == "unit/import/urls/quotedPathFakeUrlEncode" - }), output_type: FileType::Binary, ..default_feature.clone() }, @@ -445,11 +440,6 @@ fn define_features() -> Vec { directory: "parser/success/", variant: SpecTestKind::BinaryEncoding, too_slow_path: Rc::new(|path: &str| path == "largeExpression"), - exclude_path: Rc::new(|path: &str| { - false - // Pretty sure the test is incorrect - || path == "unit/import/urls/quotedPathFakeUrlEncode" - }), output_type: FileType::Binary, ..default_feature.clone() }, -- cgit v1.3.1