From ef5acdecebb48a02cb34d19fa17d1bd59e41a4d3 Mon Sep 17 00:00:00 2001 From: Mathias Blikstad Date: Tue, 8 Jan 2019 22:14:04 +0100 Subject: RFC 2027: "first draft" of implementation These are a squashed series of commits. --- .../ui/coherence/coherence-unsafe-trait-object-impl.rs | 18 ++++++++++++++++++ .../coherence-unsafe-trait-object-impl.stderr | 12 ++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs create mode 100644 src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr (limited to 'src/test/ui/coherence') diff --git a/src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs b/src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs new file mode 100644 index 00000000000..9859a226efd --- /dev/null +++ b/src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs @@ -0,0 +1,18 @@ +// Check that unsafe trait object do not implement themselves +// automatically + +#![feature(object_safe_for_dispatch)] + +trait Trait: Sized { + fn call(&self); +} + +fn takes_t(s: S) { + s.call(); +} + +fn takes_t_obj(t: &dyn Trait) { + takes_t(t); //~ ERROR E0277 +} + +fn main() {} diff --git a/src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr b/src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr new file mode 100644 index 00000000000..b5a86acfb97 --- /dev/null +++ b/src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr @@ -0,0 +1,12 @@ +error[E0277]: the trait bound `&dyn Trait: Trait` is not satisfied + --> $DIR/coherence-unsafe-trait-object-impl.rs:15:13 + | +LL | fn takes_t(s: S) { + | ------- ----- required by this bound in `takes_t` +... +LL | takes_t(t); + | ^ the trait `Trait` is not implemented for `&dyn Trait` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. -- cgit 1.4.1-3-g733a5