diff options
Diffstat (limited to 'src/test/ui/cross/cross-borrow-trait.rs')
-rw-r--r-- | src/test/ui/cross/cross-borrow-trait.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/ui/cross/cross-borrow-trait.rs b/src/test/ui/cross/cross-borrow-trait.rs new file mode 100644 index 000000000..180a75e3d --- /dev/null +++ b/src/test/ui/cross/cross-borrow-trait.rs @@ -0,0 +1,13 @@ +// Test that cross-borrowing (implicitly converting from `Box<T>` to `&T`) is +// forbidden when `T` is a trait. + +struct Foo; +trait Trait { fn foo(&self) {} } +impl Trait for Foo {} + +pub fn main() { + let x: Box<dyn Trait> = Box::new(Foo); + let _y: &dyn Trait = x; //~ ERROR E0308 + //~| expected reference `&dyn Trait` + //~| found struct `Box<dyn Trait>` +} |