make codemap more robust in face of ill-formed spans.
This can be considered partial work on #8256. The main observable change: macro expansion sometimes results in spans where `lo > hi`; so for now, when we have such a span, do not attempt to return a snippet result. (Longer term, we might think about whether we could still present a snippet for the cases where this arises, e.g. perhaps by showing the whole macro as the snippet, assuming that is the sole cause of such spans; or by somehow looking up the closest AST node that holds both `lo` and `hi`, and showing that.) As a drive-by, revised the API to return a `Result` rather than an `Option`, with better information-packed error value that should help us (and maybe also our users) identify the causes of such problems in the future. Ideally the call-sites that really want an actual snippet would be updated to catch the newly added `Err` case and print something meaningful about it, but that is not part of this PR.
This commit is contained in:
parent
189930fcae
commit
fa9d2230a6
5 changed files with 53 additions and 15 deletions
|
@ -1233,8 +1233,8 @@ mod test {
|
|||
let span = tts.iter().rev().next().unwrap().get_span();
|
||||
|
||||
match sess.span_diagnostic.cm.span_to_snippet(span) {
|
||||
Some(s) => assert_eq!(&s[], "{ body }"),
|
||||
None => panic!("could not get snippet"),
|
||||
Ok(s) => assert_eq!(&s[], "{ body }"),
|
||||
Err(_) => panic!("could not get snippet"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue