]> git.lizzy.rs Git - rust.git/commitdiff
Rollup merge of #59129 - sanxiyn:visit-impl-trait, r=varkor
authorMazdak Farrokhzad <twingoow@gmail.com>
Wed, 13 Mar 2019 02:33:53 +0000 (03:33 +0100)
committerGitHub <noreply@github.com>
Wed, 13 Mar 2019 02:33:53 +0000 (03:33 +0100)
Visit impl Trait for dead_code lint

Fix #59085.

src/librustc/middle/dead.rs
src/test/ui/lint/lint-dead-code-impl-trait.rs [new file with mode: 0644]
src/test/ui/lint/lint-dead-code-impl-trait.stderr [new file with mode: 0644]

index 8ffd119f95c0ba9a2062391b4ea4dedd9b9661dc..94de999c25da81843fe95ae8889034faa3094bee 100644 (file)
@@ -3,7 +3,7 @@
 // from live codes are live, and everything else is dead.
 
 use crate::hir::Node;
-use crate::hir::{self, PatKind};
+use crate::hir::{self, PatKind, TyKind};
 use crate::hir::intravisit::{self, Visitor, NestedVisitorMap};
 use crate::hir::itemlikevisit::ItemLikeVisitor;
 
@@ -282,6 +282,17 @@ fn visit_path(&mut self, path: &'tcx hir::Path, _: hir::HirId) {
         self.handle_definition(path.def);
         intravisit::walk_path(self, path);
     }
+
+    fn visit_ty(&mut self, ty: &'tcx hir::Ty) {
+        match ty.node {
+            TyKind::Def(item_id, _) => {
+                let item = self.tcx.hir().expect_item(item_id.id);
+                intravisit::walk_item(self, item);
+            }
+            _ => ()
+        }
+        intravisit::walk_ty(self, ty);
+    }
 }
 
 fn has_allow_dead_code_or_lang_attr(tcx: TyCtxt<'_, '_, '_>,
diff --git a/src/test/ui/lint/lint-dead-code-impl-trait.rs b/src/test/ui/lint/lint-dead-code-impl-trait.rs
new file mode 100644 (file)
index 0000000..a2736d9
--- /dev/null
@@ -0,0 +1,18 @@
+#![deny(dead_code)]
+
+trait Trait {
+    type Type;
+}
+
+impl Trait for () {
+    type Type = ();
+}
+
+type Used = ();
+type Unused = (); //~ ERROR type alias is never used
+
+fn foo() -> impl Trait<Type = Used> {}
+
+fn main() {
+    foo();
+}
diff --git a/src/test/ui/lint/lint-dead-code-impl-trait.stderr b/src/test/ui/lint/lint-dead-code-impl-trait.stderr
new file mode 100644 (file)
index 0000000..61d0954
--- /dev/null
@@ -0,0 +1,14 @@
+error: type alias is never used: `Unused`
+  --> $DIR/lint-dead-code-impl-trait.rs:12:1
+   |
+LL | type Unused = ();
+   | ^^^^^^^^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/lint-dead-code-impl-trait.rs:1:9
+   |
+LL | #![deny(dead_code)]
+   |         ^^^^^^^^^
+
+error: aborting due to previous error
+