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
20 lines
368 B
Rust
20 lines
368 B
Rust
trait Trait {}
|
|
|
|
trait X {
|
|
fn foo(&self) where Self: Trait;
|
|
}
|
|
|
|
impl X for () {
|
|
fn foo(&self) {}
|
|
}
|
|
|
|
impl Trait for dyn X {}
|
|
//~^ ERROR the trait `X` is not dyn compatible
|
|
|
|
pub fn main() {
|
|
// Check that this does not segfault.
|
|
<dyn X as X>::foo(&());
|
|
//~^ ERROR the trait `X` is not dyn compatible
|
|
//~| ERROR the trait `X` is not dyn compatible
|
|
}
|