Skip to content

Commit 00d3639

Browse files
committed
Try without generics, use fn pointers instead
1 parent 26ad0bd commit 00d3639

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed
Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
//@ compile-flags: -Cstrip=none -Cdebuginfo=line-tables-only
2+
use std::backtrace::Backtrace;
23

34
#[no_mangle]
4-
pub fn baz<F>(mut cb: F, data: u32) where F: FnMut(u32) {
5-
cb(data);
5+
pub fn baz(cb: fn(u32) -> Backtrace, data: u32) -> Backtrace {
6+
cb(data)
67
}
78

89
#[no_mangle]
9-
pub fn bar<F>(cb: F, data: u32) where F: FnMut(u32) {
10-
baz(cb, data);
10+
pub fn bar(cb: fn(u32) -> Backtrace, data: u32) -> Backtrace {
11+
baz(cb, data)
1112
}
1213

1314
#[no_mangle]
14-
pub fn foo<F>(cb: F, data: u32) where F: FnMut(u32) {
15-
bar(cb, data);
15+
pub fn foo(cb: fn(u32) -> Backtrace, data: u32) -> Backtrace {
16+
bar(cb, data)
17+
}
18+
19+
fn helper(_x: u32) -> Backtrace {
20+
Backtrace::capture()
1621
}
1722

1823
pub fn capture_backtrace() -> std::backtrace::Backtrace {
19-
let mut bt = None;
20-
foo(|_| bt = Some(std::backtrace::Backtrace::capture()), 42);
21-
bt.unwrap()
24+
foo(helper, 42)
2225
}

tests/ui/debuginfo/backtrace-line-tables-only.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fn assert_contains(
3838
fn main() {
3939
std::env::set_var("RUST_BACKTRACE", "1");
4040
let backtrace = line_tables_only_helper::capture_backtrace();
41-
assert_contains(&backtrace, "foo", "line-tables-only-helper.rs", 5);
42-
assert_contains(&backtrace, "bar", "line-tables-only-helper.rs", 10);
43-
assert_contains(&backtrace, "baz", "line-tables-only-helper.rs", 15);
41+
assert_contains(&backtrace, "foo", "line-tables-only-helper.rs", 6);
42+
assert_contains(&backtrace, "bar", "line-tables-only-helper.rs", 11);
43+
assert_contains(&backtrace, "baz", "line-tables-only-helper.rs", 16);
4444
}

0 commit comments

Comments
 (0)