mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 23:12:02 +00:00
28 lines
581 B
Rust
28 lines
581 B
Rust
|
//@ 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);
|
||
|
&()
|
||
|
}
|
||
|
}
|