fn make_items(mut self: Box<ExpandResult<'a>>) -> Option<SmallVec<[P<ast::Item>; 1]>> {
let mut ret = SmallVec::new();
- while self.p.token != token::Eof {
+ loop {
match self.p.parse_item(ForceCollect::No) {
Err(mut err) => {
err.emit();
}
Ok(Some(item)) => ret.push(item),
Ok(None) => {
- let token = pprust::token_to_string(&self.p.token);
- let msg = format!("expected item, found `{}`", token);
- self.p.struct_span_err(self.p.token.span, &msg).emit();
+ if self.p.token != token::Eof {
+ let token = pprust::token_to_string(&self.p.token);
+ let msg = format!("expected item, found `{}`", token);
+ self.p.struct_span_err(self.p.token.span, &msg).emit();
+ }
+
break;
}
}