diff options
Diffstat (limited to '')
-rw-r--r-- | tests/ui/illegal-sized-bound/mutability-mismatch.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/illegal-sized-bound/mutability-mismatch.rs b/tests/ui/illegal-sized-bound/mutability-mismatch.rs new file mode 100644 index 000000000..01bb3537c --- /dev/null +++ b/tests/ui/illegal-sized-bound/mutability-mismatch.rs @@ -0,0 +1,32 @@ +struct MutType; + +pub trait MutTrait { + fn function(&mut self) + where + Self: Sized; +} + +impl MutTrait for MutType { + fn function(&mut self) {} +} + +struct Type; + +pub trait Trait { + fn function(&self) + where + Self: Sized; +} + +impl Trait for Type { + fn function(&self) {} +} + +fn main() { + (&MutType as &dyn MutTrait).function(); + //~^ ERROR the `function` method cannot be invoked on `&dyn MutTrait` + //~| HELP you need `&mut dyn MutTrait` instead of `&dyn MutTrait` + (&mut Type as &mut dyn Trait).function(); + //~^ ERROR the `function` method cannot be invoked on `&mut dyn Trait` + //~| HELP you need `&dyn Trait` instead of `&mut dyn Trait` +} |