Fix macro_rules separator parsing.

macro_rules rules are separated by ';' including an optional ';' at the
end
This commit is contained in:
Jeff Muizelaar 2019-02-02 12:11:12 -05:00
parent 4c0ab7db85
commit 31d143ba18
2 changed files with 49 additions and 1 deletions

View file

@ -7,7 +7,13 @@ pub(crate) fn parse(tt: &tt::Subtree) -> Option<crate::MacroRules> {
let mut parser = TtCursor::new(tt);
let mut rules = Vec::new();
while !parser.is_eof() {
rules.push(parse_rule(&mut parser)?)
rules.push(parse_rule(&mut parser)?);
if parser.expect_char(';') == None {
if !parser.is_eof() {
return None;
}
break;
}
}
Some(crate::MacroRules { rules })
}