Improve handling of spans around macro result parse errors
Fixes #81543 After we expand a macro, we try to parse the resulting tokens as a AST node. This commit makes several improvements to how we handle spans when an error occurs: * Only ovewrite the original `Span` if it's a dummy span. This preserves a more-specific span if one is available. * Use `self.prev_token` instead of `self.token` when emitting an error message after encountering EOF, since an EOF token always has a dummy span * Make `SourceMap::next_point` leave dummy spans unused. A dummy span does not have a logical 'next point', since it's a zero-length span. Re-using the span span preserves its 'dummy-ness' for other checks
This commit is contained in:
parent
04caa632dd
commit
6c14aad58e
6 changed files with 36 additions and 4 deletions
|
@ -896,7 +896,9 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
|
|||
fragment
|
||||
}
|
||||
Err(mut err) => {
|
||||
err.set_span(span);
|
||||
if err.span.is_dummy() {
|
||||
err.set_span(span);
|
||||
}
|
||||
annotate_err_with_kind(&mut err, kind, span);
|
||||
err.emit();
|
||||
self.cx.trace_macros_diag();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue