//@ run-pass //@ revisions: default mir-opt //@[default] compile-flags: -Zinline-mir=false //@[mir-opt] compile-flags: -Zmir-opt-level=4 use std::panic::Location; struct Foo; impl Foo { #[inline(always)] #[track_caller] fn check_loc(&self, line: u32, col: u32) -> &Self { let loc = Location::caller(); assert_eq!(loc.file(), file!(), "file mismatch"); assert_eq!(loc.line(), line, "line mismatch"); assert_eq!(loc.column(), col, "column mismatch"); self } } fn main() { // Tests that when `Location::caller` is used in a method chain, // it points to the start of the correct call (the first character after the dot) // instead of to the very first expression in the chain let foo = Foo; foo. check_loc(line!(), 9).check_loc(line!(), 31) .check_loc(line!(), 10); }