| // run-pass |
| |
| #![feature(const_fn, track_caller)] |
| |
| use std::panic::Location; |
| |
| const LOCATION: &Location = Location::caller(); |
| |
| const TRACKED: &Location = tracked(); |
| #[track_caller] |
| const fn tracked() -> &'static Location <'static> { |
| Location::caller() |
| } |
| |
| const NESTED: &Location = nested_location(); |
| const fn nested_location() -> &'static Location<'static> { |
| Location::caller() |
| } |
| |
| const CONTAINED: &Location = contained(); |
| const fn contained() -> &'static Location<'static> { |
| tracked() |
| } |
| |
| fn main() { |
| assert_eq!(LOCATION.file(), file!()); |
| assert_eq!(LOCATION.line(), 7); |
| assert_eq!(LOCATION.column(), 29); |
| |
| assert_eq!(TRACKED.file(), file!()); |
| assert_eq!(TRACKED.line(), 9); |
| assert_eq!(TRACKED.column(), 28); |
| |
| assert_eq!(NESTED.file(), file!()); |
| assert_eq!(NESTED.line(), 17); |
| assert_eq!(NESTED.column(), 5); |
| |
| assert_eq!(CONTAINED.file(), file!()); |
| assert_eq!(CONTAINED.line(), 22); |
| assert_eq!(CONTAINED.column(), 5); |
| } |