diff options
| author | Mathias Blikstad <mathias@blikstad.se> | 2019-01-08 22:14:04 +0100 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2019-10-22 15:24:33 -0400 |
| commit | ef5acdecebb48a02cb34d19fa17d1bd59e41a4d3 (patch) | |
| tree | cb6e20d78485549efc93763e17677eefe09ab6fc /src/test/ui/coherence | |
| parent | d28a9c38fe14396e86ae274c7847e20ee0f78ca9 (diff) | |
| download | rust-ef5acdecebb48a02cb34d19fa17d1bd59e41a4d3.tar.gz rust-ef5acdecebb48a02cb34d19fa17d1bd59e41a4d3.zip | |
RFC 2027: "first draft" of implementation
These are a squashed series of commits.
Diffstat (limited to 'src/test/ui/coherence')
| -rw-r--r-- | src/test/ui/coherence/coherence-unsafe-trait-object-impl.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/coherence/coherence-unsafe-trait-object-impl.stderr | 12 |
2 files changed, 30 insertions, 0 deletions
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: Trait>(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: Trait>(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`. |
