about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2018-12-05 23:54:32 +0100
committerGitHub <noreply@github.com>2018-12-05 23:54:32 +0100
commit1276ffeba2900d409ce8980e86a7bee66aa4ad54 (patch)
tree938a0135260155b6a11495234bb1fb1b257e7b53
parent4ff4fc1bc93f54839e6dfa56bc2e87b686a74094 (diff)
parent1fb82b5a038428901818acfdca15a1d61c241146 (diff)
downloadrust-1276ffeba2900d409ce8980e86a7bee66aa4ad54.tar.gz
rust-1276ffeba2900d409ce8980e86a7bee66aa4ad54.zip
Rollup merge of #56456 - oli-obk:private_impl_trait, r=cramertj
Handle existential types in dead code analysis

fixes #55124

r? @cramertj
-rw-r--r--src/librustc/middle/dead.rs1
-rw-r--r--src/test/ui/existential_types/private_unused.rs13
2 files changed, 14 insertions, 0 deletions
diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs
index 282b5d13e2c..bb7a6a6ee7b 100644
--- a/src/librustc/middle/dead.rs
+++ b/src/librustc/middle/dead.rs
@@ -166,6 +166,7 @@ impl<'a, 'tcx> MarkSymbolVisitor<'a, 'tcx> {
                     hir::ItemKind::Fn(..)
                     | hir::ItemKind::Ty(..)
                     | hir::ItemKind::Static(..)
+                    | hir::ItemKind::Existential(..)
                     | hir::ItemKind::Const(..) => {
                         intravisit::walk_item(self, &item);
                     }
diff --git a/src/test/ui/existential_types/private_unused.rs b/src/test/ui/existential_types/private_unused.rs
new file mode 100644
index 00000000000..736d812bc0a
--- /dev/null
+++ b/src/test/ui/existential_types/private_unused.rs
@@ -0,0 +1,13 @@
+// compile-pass
+
+#[deny(warnings)]
+
+enum Empty { }
+trait Bar<T> {}
+impl Bar<Empty> for () {}
+
+fn boo() -> impl Bar<Empty> {}
+
+fn main() {
+    boo();
+}