From d93be73890d0db0d34afaaebd3db1b87d68fb9b7 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 16 Apr 2019 21:54:32 +0200 Subject: Prepare for nullary union variants --- dhall_core/src/parser.rs | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'dhall_core/src/parser.rs') diff --git a/dhall_core/src/parser.rs b/dhall_core/src/parser.rs index c4ae2e5..a335ccc 100644 --- a/dhall_core/src/parser.rs +++ b/dhall_core/src/parser.rs @@ -874,41 +874,41 @@ make_parser! { rule!(non_empty_union_type_or_literal <(Option<(Label, ParsedSubExpr<'a>)>, - BTreeMap>)>; + BTreeMap>>)>; children!( [label(l), union_literal_variant_value((e, entries))] => { - (Option::Some((l, rc(e))), entries) + (Option::Some((l, e)), entries) }, [label(l), union_type_or_literal_variant_type((e, rest))] => { let (x, mut entries) = rest; - entries.insert(l, rc(e)); + entries.insert(l, e); (x, entries) }, )); rule!(union_literal_variant_value - <(ParsedExpr<'a>, BTreeMap>)>; + <(ParsedSubExpr<'a>, BTreeMap>>)>; children!( [expression(e), union_type_entry(entries)..] => { - (e, entries.collect()) + (rc(e), entries.collect()) }, )); - rule!(union_type_entry<(Label, ParsedSubExpr<'a>)>; children!( - [label(name), expression(expr)] => (name, rc(expr)) + rule!(union_type_entry<(Label, Option>)>; children!( + [label(name), expression(expr)] => (name, Option::Some(rc(expr))) )); // TODO: unary union variants rule!(union_type_or_literal_variant_type - <(ParsedExpr<'a>, + <(Option>, (Option<(Label, ParsedSubExpr<'a>)>, - BTreeMap>))>; + BTreeMap>>))>; children!( [expression(e), non_empty_union_type_or_literal(rest)] => { - (e, rest) + (Option::Some(rc(e)), rest) }, [expression(e)] => { - (e, (Option::None, BTreeMap::new())) + (Option::Some(rc(e)), (Option::None, BTreeMap::new())) }, )); -- cgit v1.2.3