2 // revisions: default mir-opt
3 //[mir-opt] compile-flags: -Zmir-opt-level=4
5 fn pass_to_ptr_call<T>(f: fn(T), x: T) {
10 fn tracked_unit(_: ()) {
11 let expected_line = line!() - 1;
12 let location = std::panic::Location::caller();
13 assert_eq!(location.file(), file!());
14 assert_eq!(location.line(), expected_line, "call shims report location as fn definition");
18 fn trait_tracked_unit(_: ());
23 fn trait_tracked_unit(_: ()) {
24 let expected_line = line!() - 1;
25 let location = std::panic::Location::caller();
26 assert_eq!(location.file(), file!());
27 assert_eq!(location.line(), expected_line, "call shims report location as fn definition");
33 fn trait_tracked_unit_default(_: ()) {
34 let expected_line = line!() - 1;
35 let location = std::panic::Location::caller();
36 assert_eq!(location.file(), file!());
37 assert_eq!(location.line(), expected_line, "call shims report location as fn definition");
41 impl TrackedTrait for () {}
43 trait BlanketTrackedTrait {
45 fn tracked_blanket(_: ());
48 impl BlanketTrackedTrait for () {
49 fn tracked_blanket(_: ()) {
50 let expected_line = line!() - 1;
51 let location = std::panic::Location::caller();
52 assert_eq!(location.file(), file!());
53 assert_eq!(location.line(), expected_line, "call shims report location as fn definition");
58 pass_to_ptr_call(tracked_unit, ());
59 pass_to_ptr_call(<() as Trait>::trait_tracked_unit, ());
60 pass_to_ptr_call(<() as TrackedTrait>::trait_tracked_unit_default, ());
61 pass_to_ptr_call(<() as BlanketTrackedTrait>::tracked_blanket, ());