]> git.lizzy.rs Git - rust.git/commitdiff
lint: mark associated types as live for the dead_code pass
authorSean McArthur <sean.monstar@gmail.com>
Wed, 9 Mar 2016 18:12:24 +0000 (10:12 -0800)
committerSean McArthur <sean.monstar@gmail.com>
Wed, 9 Mar 2016 19:36:05 +0000 (11:36 -0800)
src/librustc/middle/dead.rs
src/test/run-pass/lint-dead-code-associated-type.rs [new file with mode: 0644]

index f1b38ea8b81302cf302b587046527981143a397e..4ceac287d19dfd463e9e96840acb51a12a347f5f 100644 (file)
@@ -351,15 +351,9 @@ fn visit_item(&mut self, item: &hir::Item) {
             }
             hir::ItemImpl(_, _, _, ref opt_trait, _, ref impl_items) => {
                 for impl_item in impl_items {
-                    match impl_item.node {
-                        hir::ImplItemKind::Const(..) |
-                        hir::ImplItemKind::Method(..) => {
-                            if opt_trait.is_some() ||
-                                    has_allow_dead_code_or_lang_attr(&impl_item.attrs) {
-                                self.worklist.push(impl_item.id);
-                            }
-                        }
-                        hir::ImplItemKind::Type(_) => {}
+                    if opt_trait.is_some() ||
+                            has_allow_dead_code_or_lang_attr(&impl_item.attrs) {
+                        self.worklist.push(impl_item.id);
                     }
                 }
             }
diff --git a/src/test/run-pass/lint-dead-code-associated-type.rs b/src/test/run-pass/lint-dead-code-associated-type.rs
new file mode 100644 (file)
index 0000000..1ae078b
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(dead_code)]
+
+trait Foo {
+    type Bar;
+}
+
+struct Used;
+
+struct Ex;
+
+impl Foo for Ex {
+    type Bar = Used;
+}
+
+pub fn main() {
+    let _x = Ex;
+}