Skip to content

Commit

Permalink
Auto merge of #30487 - jonas-schievink:more-attrs-lint-fixes, r=alexc…
Browse files Browse the repository at this point in the history
…richton

`LateContext` already does this, looks like this was just forgotten in #29850.

Found while investigating #30326 (but doesn't fix it)
  • Loading branch information
bors committed Jan 27, 2016
2 parents 4b61585 + 5133b26 commit b694d1b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/librustc/lint/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -735,7 +735,7 @@ impl<'a> LintContext for EarlyContext<'a> {
}

fn enter_attrs(&mut self, attrs: &[ast::Attribute]) {
debug!("early context: exit_attrs({:?})", attrs);
debug!("early context: enter_attrs({:?})", attrs);
run_lints!(self, enter_lint_attrs, early_passes, attrs);
}

Expand Down Expand Up @@ -934,8 +934,10 @@ impl<'a, 'v> ast_visit::Visitor<'v> for EarlyContext<'a> {
}

fn visit_expr(&mut self, e: &ast::Expr) {
run_lints!(self, check_expr, early_passes, e);
ast_visit::walk_expr(self, e);
self.with_lint_attrs(e.attrs.as_attr_slice(), |cx| {
run_lints!(cx, check_expr, early_passes, e);
ast_visit::walk_expr(cx, e);
})
}

fn visit_stmt(&mut self, s: &ast::Stmt) {
Expand Down Expand Up @@ -990,8 +992,10 @@ impl<'a, 'v> ast_visit::Visitor<'v> for EarlyContext<'a> {
}

fn visit_local(&mut self, l: &ast::Local) {
run_lints!(self, check_local, early_passes, l);
ast_visit::walk_local(self, l);
self.with_lint_attrs(l.attrs.as_attr_slice(), |cx| {
run_lints!(cx, check_local, early_passes, l);
ast_visit::walk_local(cx, l);
})
}

fn visit_block(&mut self, b: &ast::Block) {
Expand Down
22 changes: 22 additions & 0 deletions src/test/run-pass/lint-expr-stmt-attrs-for-early-lints.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Copyright 2015 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.

#![feature(stmt_expr_attributes)]
#![deny(unused_parens)]

// Tests that lint attributes on statements/expressions are
// correctly applied to non-builtin early (AST) lints

fn main() {
#[allow(unused_parens)]
{
let _ = (9);
}
}

0 comments on commit b694d1b

Please sign in to comment.