--- /dev/null
+// run-pass
+#![deny(unused)]
+
+pub enum E {}
+
+fn main() {}
--- /dev/null
+#![deny(unused)]
+
+enum E {} //~ ERROR enum is never used
+
+fn main() {}
--- /dev/null
+error: enum is never used: `E`
+ --> $DIR/lint-dead-code-empty-unused-enum.rs:3:1
+ |
+LL | enum E {}
+ | ^^^^^^
+ |
+note: lint level defined here
+ --> $DIR/lint-dead-code-empty-unused-enum.rs:1:9
+ |
+LL | #![deny(unused)]
+ | ^^^^^^
+ = note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
+
+error: aborting due to previous error
+
--- /dev/null
+#![deny(unused)]
+
+struct F; //~ ERROR struct is never constructed
+struct B; //~ ERROR struct is never constructed
+
+enum E { //~ ERROR enum is never used
+ Foo(F),
+ Bar(B),
+}
+
+fn main() {}
--- /dev/null
+error: struct is never constructed: `F`
+ --> $DIR/lint-dead-code-unused-enum.rs:3:1
+ |
+LL | struct F;
+ | ^^^^^^^^^
+ |
+note: lint level defined here
+ --> $DIR/lint-dead-code-unused-enum.rs:1:9
+ |
+LL | #![deny(unused)]
+ | ^^^^^^
+ = note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
+
+error: struct is never constructed: `B`
+ --> $DIR/lint-dead-code-unused-enum.rs:4:1
+ |
+LL | struct B;
+ | ^^^^^^^^^
+
+error: enum is never used: `E`
+ --> $DIR/lint-dead-code-unused-enum.rs:6:1
+ |
+LL | enum E {
+ | ^^^^^^
+
+error: aborting due to 3 previous errors
+
--- /dev/null
+// run-pass
+#![deny(unused)]
+
+pub struct F;
+pub struct B;
+
+pub enum E {
+ Foo(F),
+ Bar(B),
+}
+
+fn main() {
+ let _ = E::Foo(F);
+}
--- /dev/null
+#![deny(unused)]
+
+struct F;
+struct B;
+
+enum E {
+ Foo(F),
+ Bar(B), //~ ERROR variant is never constructed
+}
+
+fn main() {
+ let _ = E::Foo(F);
+}
--- /dev/null
+error: variant is never constructed: `Bar`
+ --> $DIR/lint-dead-code-unused-variant.rs:8:5
+ |
+LL | Bar(B),
+ | ^^^^^^
+ |
+note: lint level defined here
+ --> $DIR/lint-dead-code-unused-variant.rs:1:9
+ |
+LL | #![deny(unused)]
+ | ^^^^^^
+ = note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
+
+error: aborting due to previous error
+