| //@ check-pass |
| |
| #![warn(dead_code)] |
| |
| const TLC: usize = 4; |
| |
| trait Tr { fn doit(&self); } |
| |
| impl Tr for [usize; TLC] { |
| fn doit(&self) { |
| println!("called 4"); |
| } |
| } |
| |
| struct X; |
| struct Y; |
| struct Z; |
| |
| trait Foo<T> { |
| type Ty; |
| fn foo() -> Self::Ty; |
| } |
| |
| impl Foo<Y> for X { |
| type Ty = Z; |
| fn foo() -> Self::Ty { |
| unimplemented!() |
| } |
| } |
| |
| enum E { |
| A, |
| B, //~ WARN variants `B` and `C` are never constructed |
| C, |
| } |
| |
| type F = E; |
| |
| impl E { |
| fn check(&self) -> bool { |
| match self { |
| Self::A => true, |
| Self::B => false, |
| F::C => false, |
| } |
| } |
| } |
| |
| fn main() { |
| let s = [0,1,2,3]; |
| s.doit(); |
| X::foo(); |
| E::A.check(); |
| } |