| //@ run-rustfix | |
| struct Foo; | |
| impl std::ops::Mul for &Foo { | |
| type Output = Foo; | |
| fn mul(self, _rhs: Self) -> Self::Output { | |
| unimplemented!() | |
| } | |
| } | |
| fn main() { | |
| let ref_mut_foo: &mut Foo = &mut Foo; | |
| let ref_foo: &Foo = &Foo; | |
| let owned_foo: Foo = Foo; | |
| let _ = ref_foo * ref_foo; | |
| let _ = ref_foo * ref_mut_foo; | |
| let _ = &*ref_mut_foo * ref_foo; | |
| //~^ ERROR cannot multiply | |
| let _ = &*ref_mut_foo * &*ref_mut_foo; | |
| //~^ ERROR cannot multiply | |
| let _ = &*ref_mut_foo * &owned_foo; | |
| //~^ ERROR cannot multiply | |
| } |