From 47d5dbcfffa7842466187197513ffa403a0fdb59 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 16 Apr 2019 22:06:01 +0200 Subject: Handle nullary union variants Closes #36 --- dhall_core/src/parser.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'dhall_core') diff --git a/dhall_core/src/parser.rs b/dhall_core/src/parser.rs index a335ccc..b463073 100644 --- a/dhall_core/src/parser.rs +++ b/dhall_core/src/parser.rs @@ -895,7 +895,8 @@ make_parser! { )); rule!(union_type_entry<(Label, Option>)>; children!( - [label(name), expression(expr)] => (name, Option::Some(rc(expr))) + [label(name), expression(expr)] => (name, Option::Some(rc(expr))), + [label(name)] => (name, Option::None), )); // TODO: unary union variants @@ -910,6 +911,12 @@ make_parser! { [expression(e)] => { (Option::Some(rc(e)), (Option::None, BTreeMap::new())) }, + [non_empty_union_type_or_literal(rest)] => { + (Option::None, rest) + }, + [] => { + (Option::None, (Option::None, BTreeMap::new())) + }, )); rule!(non_empty_list_literal> as expression; span; -- cgit v1.2.3