This CL makes a number of small changes to dyn compatibility errors: - "object safety" has been renamed to "dyn-compatibility" throughout - "Convert to enum" suggestions are no longer generated when there exists a type-generic impl of the trait or an impl for `dyn OtherTrait` - Several error messages are reorganized for user readability Additionally, the dyn compatibility error creation code has been split out into functions. cc #132713 cc #133267
21 lines
389 B
Rust
21 lines
389 B
Rust
#![allow(incomplete_features)]
|
|
#![feature(non_lifetime_binders)]
|
|
|
|
trait Foo: for<T> Bar<T> {}
|
|
|
|
trait Bar<T: ?Sized> {
|
|
fn method(&self) {}
|
|
}
|
|
|
|
struct Type2;
|
|
fn needs_bar(_: *mut Type2) {}
|
|
|
|
fn main() {
|
|
let x: &dyn Foo = &();
|
|
//~^ ERROR the trait `Foo` is not dyn compatible
|
|
//~| ERROR the trait `Foo` is not dyn compatible
|
|
|
|
needs_bar(x);
|
|
//~^ ERROR mismatched types
|
|
}
|