diff options
| -rw-r--r-- | tests/ui/lint/dead-code/alias-type-used-as-generic-arg-in-impl.rs | 19 | ||||
| -rw-r--r-- | tests/ui/lint/dead-code/trait-only-used-as-type-bound.rs | 31 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tests/ui/lint/dead-code/alias-type-used-as-generic-arg-in-impl.rs b/tests/ui/lint/dead-code/alias-type-used-as-generic-arg-in-impl.rs new file mode 100644 index 00000000000..4857ef6a9b8 --- /dev/null +++ b/tests/ui/lint/dead-code/alias-type-used-as-generic-arg-in-impl.rs @@ -0,0 +1,19 @@ +//@ check-pass + +#![deny(dead_code)] + +struct T<X>(X); + +type A<X> = T<X>; + +trait Tr { + fn foo(); +} + +impl<X> Tr for T<A<X>> { + fn foo() {} +} + +fn main() { + T::<T<()>>::foo(); +} diff --git a/tests/ui/lint/dead-code/trait-only-used-as-type-bound.rs b/tests/ui/lint/dead-code/trait-only-used-as-type-bound.rs new file mode 100644 index 00000000000..fb994653e1b --- /dev/null +++ b/tests/ui/lint/dead-code/trait-only-used-as-type-bound.rs @@ -0,0 +1,31 @@ +//@ check-pass + +#![deny(dead_code)] + +trait UInt: Copy + From<u8> {} + +impl UInt for u16 {} + +trait Int: Copy { + type Unsigned: UInt; + + fn as_unsigned(self) -> Self::Unsigned; +} + +impl Int for i16 { + type Unsigned = u16; + + fn as_unsigned(self) -> u16 { + self as _ + } +} + +fn priv_func<T: Int>(x: u8, y: T) -> (T::Unsigned, T::Unsigned) { + (T::Unsigned::from(x), y.as_unsigned()) +} + +pub fn pub_func(x: u8, y: i16) -> (u16, u16) { + priv_func(x, y) +} + +fn main() {} |
