2019-08-05 21:23:46 -05:00
|
|
|
//@ check-pass
|
|
|
|
|
2021-01-22 18:00:00 -06:00
|
|
|
#![warn(dead_code)]
|
2019-08-05 21:23:46 -05:00
|
|
|
|
|
|
|
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!()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-01-22 18:00:00 -06:00
|
|
|
enum E {
|
|
|
|
A,
|
2022-06-09 22:14:24 -05:00
|
|
|
B, //~ WARN variants `B` and `C` are never constructed
|
|
|
|
C,
|
2021-01-22 18:00:00 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
type F = E;
|
|
|
|
|
|
|
|
impl E {
|
|
|
|
fn check(&self) -> bool {
|
|
|
|
match self {
|
|
|
|
Self::A => true,
|
|
|
|
Self::B => false,
|
|
|
|
F::C => false,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-08-05 21:23:46 -05:00
|
|
|
fn main() {
|
|
|
|
let s = [0,1,2,3];
|
|
|
|
s.doit();
|
|
|
|
X::foo();
|
2021-01-22 18:00:00 -06:00
|
|
|
E::A.check();
|
2019-08-05 21:23:46 -05:00
|
|
|
}
|