Fix ICE when parsing token trees after an error.
This commit is contained in:
parent
031c1168b9
commit
66bd8eede5
3 changed files with 42 additions and 3 deletions
|
@ -802,6 +802,10 @@ impl<'a> Parser<'a> {
|
|||
let mut first: bool = true;
|
||||
let mut v = vec![];
|
||||
while !kets.contains(&&self.token) {
|
||||
match self.token {
|
||||
token::CloseDelim(..) | token::Eof => break,
|
||||
_ => {}
|
||||
};
|
||||
match sep.sep {
|
||||
Some(ref t) => {
|
||||
if first {
|
||||
|
@ -2608,9 +2612,12 @@ impl<'a> Parser<'a> {
|
|||
return Ok((None, kleene_op));
|
||||
}
|
||||
|
||||
let separator = self.bump_and_get();
|
||||
let separator = match self.token {
|
||||
token::CloseDelim(..) => None,
|
||||
_ => Some(self.bump_and_get()),
|
||||
};
|
||||
match parse_kleene_op(self)? {
|
||||
Some(zerok) => Ok((Some(separator), zerok)),
|
||||
Some(zerok) => Ok((separator, zerok)),
|
||||
None => return Err(self.fatal("expected `*` or `+`"))
|
||||
}
|
||||
}
|
||||
|
@ -2647,7 +2654,7 @@ impl<'a> Parser<'a> {
|
|||
tts: tts,
|
||||
})))
|
||||
},
|
||||
token::CloseDelim(_) | token::Eof => unreachable!(),
|
||||
token::CloseDelim(..) | token::Eof => Ok(TokenTree::Token(self.span, token::Eof)),
|
||||
token::Dollar | token::SubstNt(..) if self.quote_depth > 0 => self.parse_unquoted(),
|
||||
_ => Ok(TokenTree::Token(self.span, self.bump_and_get())),
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue