More work on sketch for isel and some TODO items derived from it.

This commit is contained in:
Chris Fallin
2021-09-07 00:27:45 -07:00
parent d725ac13b2
commit 602b8308ce
5 changed files with 160 additions and 38 deletions

View File

@@ -184,14 +184,22 @@ impl<'a> Parser<'a> {
}
fn parse_type_variant(&mut self) -> ParseResult<Variant> {
self.lparen()?;
let name = self.parse_ident()?;
let mut fields = vec![];
while !self.is_rparen() {
fields.push(self.parse_type_field()?);
if self.is_sym() {
let name = self.parse_ident()?;
Ok(Variant {
name,
fields: vec![],
})
} else {
self.lparen()?;
let name = self.parse_ident()?;
let mut fields = vec![];
while !self.is_rparen() {
fields.push(self.parse_type_field()?);
}
self.rparen()?;
Ok(Variant { name, fields })
}
self.rparen()?;
Ok(Variant { name, fields })
}
fn parse_type_field(&mut self) -> ParseResult<Field> {