desugar: add missing seq/enum cases

This commit is contained in:
Michael Sippel 2025-04-02 20:10:23 +02:00
parent 68627f140e
commit 6fa46ae45d
Signed by: senvas
GPG key ID: F96CF119C34B64A6

View file

@ -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()),
}