summaryrefslogtreecommitdiffstats
path: root/tests/ui/indexing/indexing-spans-caller-location.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/indexing/indexing-spans-caller-location.rs')
-rw-r--r--tests/ui/indexing/indexing-spans-caller-location.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/ui/indexing/indexing-spans-caller-location.rs b/tests/ui/indexing/indexing-spans-caller-location.rs
new file mode 100644
index 000000000..2652f0021
--- /dev/null
+++ b/tests/ui/indexing/indexing-spans-caller-location.rs
@@ -0,0 +1,27 @@
+// run-pass
+
+// Regression test for https://github.com/rust-lang/rust/issues/114388
+
+#[track_caller]
+fn caller_line() -> u32 {
+ std::panic::Location::caller().line()
+}
+
+fn main() {
+ let prev_line = caller_line(); // first line
+ (A { prev_line }) // second line
+ [0]; // third line
+}
+
+struct A {
+ prev_line: u32,
+}
+impl std::ops::Index<usize> for A {
+ type Output = ();
+
+ fn index(&self, _idx: usize) -> &() {
+ // Use the relative number to make it resistent to header changes.
+ assert_eq!(caller_line(), self.prev_line + 2);
+ &()
+ }
+}