rust/tests/ui/methods/supertrait-shadowing/false-subtrait-after-inference.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

27 lines
653 B
Rust
Raw Normal View History

2024-09-19 01:31:48 +00:00
#![feature(supertrait_item_shadowing)]
#![warn(supertrait_item_shadowing_usage)]
#![warn(supertrait_item_shadowing_definition)]
2024-09-19 01:31:48 +00:00
struct W<T>(T);
trait Upstream {
fn hello(&self) {}
}
impl<T> Upstream for T {}
trait Downstream: Upstream {
fn hello(&self) {}
//~^ WARN trait item `hello` from `Downstream` shadows identically named item
2024-09-19 01:31:48 +00:00
}
impl<T> Downstream for W<T> where T: Foo {}
trait Foo {}
fn main() {
let x = W(Default::default());
x.hello();
//~^ ERROR the trait bound `i32: Foo` is not satisfied
//~| WARN trait item `hello` from `Downstream` shadows identically named item from supertrait
let _: i32 = x.0;
}