mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-23 22:14:15 +00:00
Auto merge of #44847 - estebank:unused-signature, r=nikomatsakis
Point at signature on unused lint ``` warning: struct is never used: `Struct` --> $DIR/unused-warning-point-at-signature.rs:22:1 | 22 | struct Struct { | ^^^^^^^^^^^^^ ``` Fix #33961.
This commit is contained in:
commit
0253d98382
@ -553,9 +553,22 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
|
|||||||
|
|
||||||
fn visit_item(&mut self, item: &'tcx hir::Item) {
|
fn visit_item(&mut self, item: &'tcx hir::Item) {
|
||||||
if self.should_warn_about_item(item) {
|
if self.should_warn_about_item(item) {
|
||||||
|
// For items that have a definition with a signature followed by a
|
||||||
|
// block, point only at the signature.
|
||||||
|
let span = match item.node {
|
||||||
|
hir::ItemFn(..) |
|
||||||
|
hir::ItemMod(..) |
|
||||||
|
hir::ItemEnum(..) |
|
||||||
|
hir::ItemStruct(..) |
|
||||||
|
hir::ItemUnion(..) |
|
||||||
|
hir::ItemTrait(..) |
|
||||||
|
hir::ItemDefaultImpl(..) |
|
||||||
|
hir::ItemImpl(..) => self.tcx.sess.codemap().def_span(item.span),
|
||||||
|
_ => item.span,
|
||||||
|
};
|
||||||
self.warn_dead_code(
|
self.warn_dead_code(
|
||||||
item.id,
|
item.id,
|
||||||
item.span,
|
span,
|
||||||
item.name,
|
item.name,
|
||||||
item.node.descriptive_variant()
|
item.node.descriptive_variant()
|
||||||
);
|
);
|
||||||
@ -570,8 +583,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
|
|||||||
g: &'tcx hir::Generics,
|
g: &'tcx hir::Generics,
|
||||||
id: ast::NodeId) {
|
id: ast::NodeId) {
|
||||||
if self.should_warn_about_variant(&variant.node) {
|
if self.should_warn_about_variant(&variant.node) {
|
||||||
self.warn_dead_code(variant.node.data.id(), variant.span,
|
self.warn_dead_code(variant.node.data.id(), variant.span, variant.node.name, "variant");
|
||||||
variant.node.name, "variant");
|
|
||||||
} else {
|
} else {
|
||||||
intravisit::walk_variant(self, variant, g, id);
|
intravisit::walk_variant(self, variant, g, id);
|
||||||
}
|
}
|
||||||
@ -596,15 +608,17 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
|
|||||||
match impl_item.node {
|
match impl_item.node {
|
||||||
hir::ImplItemKind::Const(_, body_id) => {
|
hir::ImplItemKind::Const(_, body_id) => {
|
||||||
if !self.symbol_is_live(impl_item.id, None) {
|
if !self.symbol_is_live(impl_item.id, None) {
|
||||||
self.warn_dead_code(impl_item.id, impl_item.span,
|
self.warn_dead_code(impl_item.id,
|
||||||
impl_item.name, "associated const");
|
impl_item.span,
|
||||||
|
impl_item.name,
|
||||||
|
"associated const");
|
||||||
}
|
}
|
||||||
self.visit_nested_body(body_id)
|
self.visit_nested_body(body_id)
|
||||||
}
|
}
|
||||||
hir::ImplItemKind::Method(_, body_id) => {
|
hir::ImplItemKind::Method(_, body_id) => {
|
||||||
if !self.symbol_is_live(impl_item.id, None) {
|
if !self.symbol_is_live(impl_item.id, None) {
|
||||||
self.warn_dead_code(impl_item.id, impl_item.span,
|
let span = self.tcx.sess.codemap().def_span(impl_item.span);
|
||||||
impl_item.name, "method");
|
self.warn_dead_code(impl_item.id, span, impl_item.name, "method");
|
||||||
}
|
}
|
||||||
self.visit_nested_body(body_id)
|
self.visit_nested_body(body_id)
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ warning: function is never used: `lintme`
|
|||||||
--> $DIR/lint-plugin-cmdline-allow.rs:20:1
|
--> $DIR/lint-plugin-cmdline-allow.rs:20:1
|
||||||
|
|
|
|
||||||
20 | fn lintme() { }
|
20 | fn lintme() { }
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: lint level defined here
|
note: lint level defined here
|
||||||
--> $DIR/lint-plugin-cmdline-allow.rs:17:9
|
--> $DIR/lint-plugin-cmdline-allow.rs:17:9
|
||||||
|
@ -9,10 +9,8 @@ warning: unnecessary parentheses around `return` value
|
|||||||
warning: function is never used: `with_parens`
|
warning: function is never used: `with_parens`
|
||||||
--> $DIR/path-lookahead.rs:17:1
|
--> $DIR/path-lookahead.rs:17:1
|
||||||
|
|
|
|
||||||
17 | / fn with_parens<T: ToString>(arg: T) -> String { //~WARN function is never used: `with_parens`
|
17 | fn with_parens<T: ToString>(arg: T) -> String { //~WARN function is never used: `with_parens`
|
||||||
18 | | return (<T as ToString>::to_string(&arg)); //~WARN unnecessary parentheses around `return` value
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
19 | | }
|
|
||||||
| |_^
|
|
||||||
|
|
|
|
||||||
note: lint level defined here
|
note: lint level defined here
|
||||||
--> $DIR/path-lookahead.rs:13:9
|
--> $DIR/path-lookahead.rs:13:9
|
||||||
@ -24,8 +22,6 @@ note: lint level defined here
|
|||||||
warning: function is never used: `no_parens`
|
warning: function is never used: `no_parens`
|
||||||
--> $DIR/path-lookahead.rs:21:1
|
--> $DIR/path-lookahead.rs:21:1
|
||||||
|
|
|
|
||||||
21 | / fn no_parens<T: ToString>(arg: T) -> String { //~WARN function is never used: `no_parens`
|
21 | fn no_parens<T: ToString>(arg: T) -> String { //~WARN function is never used: `no_parens`
|
||||||
22 | | return <T as ToString>::to_string(&arg);
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
23 | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
|
40
src/test/ui/span/unused-warning-point-at-signature.rs
Normal file
40
src/test/ui/span/unused-warning-point-at-signature.rs
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
// Copyright 2017 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.
|
||||||
|
|
||||||
|
// run-pass
|
||||||
|
|
||||||
|
#![warn(unused)]
|
||||||
|
|
||||||
|
enum Enum {
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
C,
|
||||||
|
D,
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Struct {
|
||||||
|
a: usize,
|
||||||
|
b: usize,
|
||||||
|
c: usize,
|
||||||
|
d: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn func() -> usize {
|
||||||
|
3
|
||||||
|
}
|
||||||
|
|
||||||
|
fn
|
||||||
|
func_complete_span()
|
||||||
|
-> usize
|
||||||
|
{
|
||||||
|
3
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
36
src/test/ui/span/unused-warning-point-at-signature.stderr
Normal file
36
src/test/ui/span/unused-warning-point-at-signature.stderr
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
warning: enum is never used: `Enum`
|
||||||
|
--> $DIR/unused-warning-point-at-signature.rs:15:1
|
||||||
|
|
|
||||||
|
15 | enum Enum {
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: lint level defined here
|
||||||
|
--> $DIR/unused-warning-point-at-signature.rs:13:9
|
||||||
|
|
|
||||||
|
13 | #![warn(unused)]
|
||||||
|
| ^^^^^^
|
||||||
|
= note: #[warn(dead_code)] implied by #[warn(unused)]
|
||||||
|
|
||||||
|
warning: struct is never used: `Struct`
|
||||||
|
--> $DIR/unused-warning-point-at-signature.rs:22:1
|
||||||
|
|
|
||||||
|
22 | struct Struct {
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
warning: function is never used: `func`
|
||||||
|
--> $DIR/unused-warning-point-at-signature.rs:29:1
|
||||||
|
|
|
||||||
|
29 | fn func() -> usize {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
warning: function is never used: `func_complete_span`
|
||||||
|
--> $DIR/unused-warning-point-at-signature.rs:33:1
|
||||||
|
|
|
||||||
|
33 | / fn
|
||||||
|
34 | | func_complete_span()
|
||||||
|
35 | | -> usize
|
||||||
|
36 | | {
|
||||||
|
37 | | 3
|
||||||
|
38 | | }
|
||||||
|
| |_^
|
||||||
|
|
Loading…
Reference in New Issue
Block a user