Skip to content

Commit

Permalink
Apply lint attrs to individual "use" declarations
Browse files Browse the repository at this point in the history
Fixes #10534
  • Loading branch information
dcrewi committed Apr 23, 2014
1 parent 829c00c commit e72d49a
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/librustc/middle/lint.rs
Expand Up @@ -1644,6 +1644,9 @@ impl<'a> Visitor<()> for Context<'a> {
fn visit_view_item(&mut self, i: &ast::ViewItem, _: ()) {
self.with_lint_attrs(i.attrs.as_slice(), |cx| {
check_attrs_usage(cx, i.attrs.as_slice());

cx.visit_ids(|v| v.visit_view_item(i, ()));

visit::walk_view_item(cx, i, ());
})
}
Expand Down
12 changes: 10 additions & 2 deletions src/libsyntax/ast_util.rs
@@ -1,4 +1,4 @@
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
Expand Down Expand Up @@ -396,6 +396,13 @@ impl<'a, O: IdVisitingOperation> Visitor<()> for IdVisitor<'a, O> {
}

fn visit_view_item(&mut self, view_item: &ViewItem, env: ()) {
if !self.pass_through_items {
if self.visited_outermost {
return;
} else {
self.visited_outermost = true;
}
}
match view_item.node {
ViewItemExternCrate(_, _, node_id) => {
self.operation.visit_id(node_id)
Expand All @@ -417,7 +424,8 @@ impl<'a, O: IdVisitingOperation> Visitor<()> for IdVisitor<'a, O> {
}
}
}
visit::walk_view_item(self, view_item, env)
visit::walk_view_item(self, view_item, env);
self.visited_outermost = false;
}

fn visit_foreign_item(&mut self, foreign_item: &ForeignItem, env: ()) {
Expand Down
33 changes: 33 additions & 0 deletions src/test/compile-fail/lint-directives-on-use-items-issue-10534.rs
@@ -0,0 +1,33 @@
// Copyright 2014 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(unused_imports)]

// The aim of this test is to ensure that deny/allow/warn directives
// are applied to individual "use" statements instead of silently
// ignored.

#[allow(dead_code)]
mod a { pub static x: int = 3; pub static y: int = 4; }

mod b {
use a::x; //~ ERROR: unused import
#[allow(unused_imports)]
use a::y; // no error here
}

#[allow(unused_imports)]
mod c {
use a::x;
#[deny(unused_imports)]
use a::y; //~ ERROR: unused import
}

fn main() {}

5 comments on commit e72d49a

@bors
Copy link
Contributor

@bors bors commented on e72d49a Apr 25, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at dcrewi@e72d49a

@bors
Copy link
Contributor

@bors bors commented on e72d49a Apr 25, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging dcrewi/rust/lint-directives-on-use-items = e72d49a into auto

@bors
Copy link
Contributor

@bors bors commented on e72d49a Apr 25, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dcrewi/rust/lint-directives-on-use-items = e72d49a merged ok, testing candidate = 5ea0509

@bors
Copy link
Contributor

@bors bors commented on e72d49a Apr 25, 2014

@bors
Copy link
Contributor

@bors bors commented on e72d49a Apr 25, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = 5ea0509

Please sign in to comment.