Refactor ensure_complete_parse.

This commit is contained in:
Jeffrey Seyfried 2016-09-23 23:09:23 +00:00
parent 4a8467b62d
commit b90ceddcee
3 changed files with 31 additions and 45 deletions

View file

@ -6172,14 +6172,17 @@ impl<'a> Parser<'a> {
}
}
pub fn ensure_complete_parse<F>(&mut self, allow_semi: bool, on_err: F)
where F: FnOnce(&Parser)
{
if allow_semi && self.token == token::Semi {
self.bump();
}
if self.token != token::Eof {
on_err(self);
pub fn ensure_complete_parse(&mut self, macro_name: ast::Name, kind_name: &str, span: Span) {
if self.token == token::Eof {
return
}
let msg = format!("macro expansion ignores token `{}` and any following",
self.this_token_to_string());
let mut err = self.diagnostic().struct_span_err(self.span, &msg);
let msg = format!("caused by the macro expansion here; the usage \
of `{}!` is likely invalid in {} context",
macro_name, kind_name);
err.span_note(span, &msg).emit();
}
}