2024-02-16 14:02:50 -06:00
|
|
|
//@ run-rustfix
|
2023-07-31 07:09:18 -05:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|