3 use std::panic::Location;
7 fn rust_track_caller_ffi_test_tracked() -> &'static Location<'static>;
8 fn rust_track_caller_ffi_test_untracked() -> &'static Location<'static>;
11 fn rust_track_caller_ffi_test_nested_tracked() -> &'static Location<'static> {
12 unsafe { rust_track_caller_ffi_test_tracked() }
16 use std::panic::Location;
17 #[track_caller] // UB if we did not have this!
19 fn rust_track_caller_ffi_test_tracked() -> &'static Location<'static> {
23 fn rust_track_caller_ffi_test_untracked() -> &'static Location<'static> {
29 let location = Location::caller();
30 assert_eq!(location.file(), file!());
31 assert_eq!(location.line(), 29);
32 assert_eq!(location.column(), 20);
34 let tracked = unsafe { rust_track_caller_ffi_test_tracked() };
35 assert_eq!(tracked.file(), file!());
36 assert_eq!(tracked.line(), 34);
37 assert_eq!(tracked.column(), 28);
39 let untracked = unsafe { rust_track_caller_ffi_test_untracked() };
40 assert_eq!(untracked.file(), file!());
41 assert_eq!(untracked.line(), 24);
42 assert_eq!(untracked.column(), 9);
44 let contained = rust_track_caller_ffi_test_nested_tracked();
45 assert_eq!(contained.file(), file!());
46 assert_eq!(contained.line(), 12);
47 assert_eq!(contained.column(), 14);