Add UI test for issue 74933
This commit is contained in:
parent
2cfcc0c65c
commit
000f5cdd24
1 changed files with 38 additions and 0 deletions
38
src/test/ui/typeck/issue-74933.rs
Normal file
38
src/test/ui/typeck/issue-74933.rs
Normal file
|
@ -0,0 +1,38 @@
|
|||
// check-pass
|
||||
//
|
||||
// rust-lang/rust#74933: Lifetime error when indexing with borrowed index
|
||||
|
||||
use std::ops::{Index, IndexMut};
|
||||
|
||||
struct S(V);
|
||||
struct K<'a>(&'a ());
|
||||
struct V;
|
||||
|
||||
impl<'a> Index<&'a K<'a>> for S {
|
||||
type Output = V;
|
||||
|
||||
fn index(&self, _: &'a K<'a>) -> &V {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> IndexMut<&'a K<'a>> for S {
|
||||
fn index_mut(&mut self, _: &'a K<'a>) -> &mut V {
|
||||
&mut self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl V {
|
||||
fn foo(&mut self) {}
|
||||
}
|
||||
|
||||
fn test(s: &mut S, k: &K<'_>) {
|
||||
s[k] = V;
|
||||
s[k].foo();
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut s = S(V);
|
||||
let k = K(&());
|
||||
test(&mut s, &k);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue