diff --git a/src/sugar.rs b/src/sugar.rs index eef8dee..de9c864 100644 --- a/src/sugar.rs +++ b/src/sugar.rs @@ -247,11 +247,29 @@ impl SugaredTypeTerm { members.into_iter().map(|t| t.desugar(dict)) ).collect()), SugaredTypeTerm::Enum{ enum_repr, variants } => TypeTerm::App( - std::iter::once( dict.parse("Enum").unwrap() ).chain( + std::iter::once( + if let Some(sr) = enum_repr { + TypeTerm::Ladder(vec![ + dict.parse("Enum").unwrap(), + sr.desugar(dict) + ]) + } else { + dict.parse("Enum").unwrap() + } + ).chain( variants.into_iter().map(|t| t.desugar(dict)) ).collect()), SugaredTypeTerm::Seq{ seq_repr, items } => TypeTerm::App( - std::iter::once( dict.parse("Seq").unwrap() ).chain( + std::iter::once( + if let Some(sr) = seq_repr { + TypeTerm::Ladder(vec![ + dict.parse("Seq").unwrap(), + sr.desugar(dict) + ]) + } else { + dict.parse("Seq").unwrap() + } + ).chain( items.into_iter().map(|t| t.desugar(dict)) ).collect()), }