// Check that `&mut` objects cannot be borrowed twice, just like // other `&mut` pointers. trait Foo { fn f1(&mut self) -> &(); fn f2(&mut self); } fn test(x: &mut dyn Foo) { let y = x.f1(); x.f2(); //~ ERROR cannot borrow `*x` as mutable y.use_ref(); } fn main() {} trait Fake { fn use_mut(&mut self) { } fn use_ref(&self) { } } impl Fake for T { }