2018-08-30 07:18:55 -05:00
|
|
|
//@ run-pass
|
2018-01-01 16:49:01 -06:00
|
|
|
struct A;
|
|
|
|
|
|
|
|
impl A {
|
|
|
|
fn take_mutably(&mut self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn identity<T>(t: T) -> T {
|
|
|
|
t
|
|
|
|
}
|
|
|
|
|
|
|
|
// Issue 46095
|
|
|
|
// Built-in indexing should be used even when the index is not
|
|
|
|
// trivially an integer
|
|
|
|
// Overloaded indexing would cause wrapped to be borrowed mutably
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let mut a1 = A;
|
|
|
|
let mut a2 = A;
|
|
|
|
|
|
|
|
let wrapped = [&mut a1, &mut a2];
|
|
|
|
|
|
|
|
{
|
|
|
|
wrapped[0 + 1 - 1].take_mutably();
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
wrapped[identity(0)].take_mutably();
|
|
|
|
}
|
|
|
|
}
|