]> git.lizzy.rs Git - rust.git/commitdiff
adjust stacktrace printing to rustc changes
authorRalf Jung <post@ralfj.de>
Mon, 30 Mar 2020 18:15:02 +0000 (20:15 +0200)
committerRalf Jung <post@ralfj.de>
Thu, 2 Apr 2020 07:14:17 +0000 (09:14 +0200)
src/diagnostics.rs
tests/compile-fail/never_transmute_void.rs

index a528960cb262852cedbad19fc1eb5ac78f66f6e3..8595551b6cbdfd39c8b37b1d7085542572464d43 100644 (file)
@@ -130,14 +130,11 @@ fn report_msg<'tcx, 'mir>(
     }
     // Add backtrace
     let frames = ecx.generate_stacktrace(None);
-    // We iterate with indices because we need to look at the next frame (the caller).
-    for idx in 0..frames.len() {
-        let frame_info = &frames[idx];
-        let call_site_is_local = frames
-            .get(idx + 1)
-            .map_or(false, |caller_info| caller_info.instance.def_id().is_local());
-        if call_site_is_local {
-            err.span_note(frame_info.call_site, &frame_info.to_string());
+    for (idx, frame_info) in frames.iter().enumerate() {
+        let is_local = frame_info.instance.def_id().is_local();
+        // No span for non-local frames and the first frame (which is the error site).
+        if is_local && idx > 0 {
+            err.span_note(frame_info.span, &frame_info.to_string());
         } else {
             err.note(&frame_info.to_string());
         }
index 2a822ab1b5150582caba2b47c578fc621f68097c..5e9e2ac204ea1a9077ce1daa3ffa96f9c3bd4539 100644 (file)
@@ -7,12 +7,12 @@
 enum Void {}
 
 fn f(v: Void) -> ! {
-    match v {} //~ ERROR  entering unreachable code
+    match v {} //~ ERROR entering unreachable code
 }
 
 fn main() {
     let v: Void = unsafe {
         std::mem::transmute::<(), Void>(())
     };
-    f(v); //~ inside call to `f`
+    f(v); //~ inside `main`
 }