about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2019-10-30 18:54:40 +0200
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2019-10-30 18:54:40 +0200
commitc17f89d6ede71cb0f8f0286307b1b83a642aff91 (patch)
tree66666d0fd2591bf4b71db78b53356f14f3ac13ec /src/test
parent0b7e28a1610924a27471ffdb59a2885709b3b415 (diff)
downloadrust-c17f89d6ede71cb0f8f0286307b1b83a642aff91.tar.gz
rust-c17f89d6ede71cb0f8f0286307b1b83a642aff91.zip
caller_location: point to macro invocation sites, like file!/line!.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs
index ab6c59384c4..1c4d4666fa1 100644
--- a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs
+++ b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs
@@ -1,9 +1,21 @@
 // run-pass
 
 #![feature(core_intrinsics)]
+
+macro_rules! caller_location_from_macro {
+    () => (core::intrinsics::caller_location());
+}
+
 fn main() {
     let loc = core::intrinsics::caller_location();
     assert_eq!(loc.file(), file!());
-    assert_eq!(loc.line(), 5);
+    assert_eq!(loc.line(), 10);
     assert_eq!(loc.column(), 15);
+
+    // `caller_location()` in a macro should behave similarly to `file!` and `line!`,
+    // i.e. point to where the macro was invoked, instead of the macro itself.
+    let loc2 = caller_location_from_macro!();
+    assert_eq!(loc2.file(), file!());
+    assert_eq!(loc2.line(), 17);
+    assert_eq!(loc2.column(), 16);
 }