Add the warnings lint attribute

This commit is contained in:
Alex Crichton 2013-06-15 20:58:11 -07:00
parent 42b44b21b1
commit 92424f0670
2 changed files with 42 additions and 2 deletions

View File

@ -96,6 +96,8 @@ pub enum lint {
missing_doc,
unreachable_code,
warnings,
}
pub fn level_to_str(lv: level) -> &'static str {
@ -280,6 +282,13 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
desc: "detects unreachable code",
default: warn
}),
("warnings",
LintSpec {
lint: warnings,
desc: "mass-change the level for lints which produce warnings",
default: warn
}),
];
/*
@ -362,10 +371,11 @@ impl Context {
fn span_lint(&self, lint: lint, span: span, msg: &str) {
let (level, src) = match self.curr.find(&(lint as uint)) {
None => { return }
Some(&(warn, src)) => (self.get_level(warnings), src),
Some(&pair) => pair,
None => { return; }
};
if level == allow { return; }
if level == allow { return }
let mut note = None;
let msg = match src {

View File

@ -0,0 +1,30 @@
// Copyright 2013 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(warnings)];
fn main() {
while true {} //~ ERROR: infinite
}
#[allow(warnings)]
fn foo() {
while true {}
}
#[warn(warnings)]
fn bar() {
while true {} //~ WARNING: infinite
}
#[forbid(warnings)]
fn baz() {
while true {} //~ ERROR: warnings
}