diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2015-02-06 05:36:15 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2015-02-06 16:21:03 +0530 |
| commit | ce3a4afd73415c8e89f4d445a546013c461c061f (patch) | |
| tree | f347ec15b44fad9c2bb5ad89dd8963fbff68f505 /src/libsyntax/parse | |
| parent | 60c9f560708fe5d5774abad53895eb52e6fd7276 (diff) | |
| parent | fa9d2230a65689289f64c897ad30c83251762320 (diff) | |
| download | rust-ce3a4afd73415c8e89f4d445a546013c461c061f.tar.gz rust-ce3a4afd73415c8e89f4d445a546013c461c061f.zip | |
Rollup merge of #21980 - pnkfelix:more-robust-span-to-snippet, r=huonw
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.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 6ff5c77f507..9e9ec08da03 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -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"), } } } |
