From 8b10dbfeaab5826fb3d179bb94454a80182a9c3a Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sat, 17 Oct 2020 15:36:05 -0400 Subject: [PATCH] Test std::backtrace::Backtrace Fixes #1578 --- tests/run-pass/backtrace-std.rs | 22 ++++++++++++++++++++++ tests/run-pass/backtrace-std.stderr | 28 ++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 tests/run-pass/backtrace-std.rs create mode 100644 tests/run-pass/backtrace-std.stderr diff --git a/tests/run-pass/backtrace-std.rs b/tests/run-pass/backtrace-std.rs new file mode 100644 index 00000000000..579b4f32e7c --- /dev/null +++ b/tests/run-pass/backtrace-std.rs @@ -0,0 +1,22 @@ +// normalize-stderr-test ".*/(rust|checkout)/library/" -> "RUSTLIB/" +// normalize-stderr-test "RUSTLIB/(.*):\d+:\d+ "-> "RUSTLIB/$1:LL:COL " +// normalize-stderr-test "::<.*>" -> "" +// compile-flags: -Zmiri-disable-isolation + +#![feature(backtrace)] + +use std::backtrace::Backtrace; + +#[inline(never)] fn func_a() -> Backtrace { func_b::() } +#[inline(never)] fn func_b() -> Backtrace { func_c() } + +macro_rules! invoke_func_d { + () => { func_d() } +} + +#[inline(never)] fn func_c() -> Backtrace { invoke_func_d!() } +#[inline(never)] fn func_d() -> Backtrace { Backtrace::capture() } + +fn main() { + eprint!("{}", func_a()); +} diff --git a/tests/run-pass/backtrace-std.stderr b/tests/run-pass/backtrace-std.stderr new file mode 100644 index 00000000000..d14735c0405 --- /dev/null +++ b/tests/run-pass/backtrace-std.stderr @@ -0,0 +1,28 @@ + 0: func_d + at $DIR/backtrace-std.rs:18 + 1: func_c + at $DIR/backtrace-std.rs:17 + 2: func_b + at $DIR/backtrace-std.rs:11 + 3: func_a + at $DIR/backtrace-std.rs:10 + 4: main + at $DIR/backtrace-std.rs:21 + 5: >::call_once - shim(fn()) +RUSTLIB/core/src/ops/function.rs:227 + 6: std::sys_common::backtrace::__rust_begin_short_backtrace +RUSTLIB/std/src/sys_common/backtrace.rs:125 + 7: std::rt::lang_start::{closure#0} +RUSTLIB/std/src/rt.rs:66 + 8: std::ops::function::impls::call_once +RUSTLIB/core/src/ops/function.rs:259 + 9: std::panicking::r#try::do_call +RUSTLIB/std/src/panicking.rs:381 + 10: std::panicking::r#try +RUSTLIB/std/src/panicking.rs:345 + 11: std::panic::catch_unwind +RUSTLIB/std/src/panic.rs:382 + 12: std::rt::lang_start_internal +RUSTLIB/std/src/rt.rs:51 + 13: std::rt::lang_start +RUSTLIB/std/src/rt.rs:65 -- 2.44.0