From 61135205e190e3ca2c5896d05610dfb304f7a12f Mon Sep 17 00:00:00 2001 From: OGINO Masanori Date: Mon, 1 Sep 2014 10:27:54 +0900 Subject: [PATCH] Add unnecessary_import_braces lint. The lint checks any unnecessary braces around one imported item like `use std::num::{abs};`. Signed-off-by: OGINO Masanori --- src/librustc/lint/builtin.rs | 35 +++++++++++++++++++ src/librustc/lint/context.rs | 1 + .../lint-unnecessary-import-braces.rs | 21 +++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/test/compile-fail/lint-unnecessary-import-braces.rs diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs index 721e5f296e2e..41cce498d426 100644 --- a/src/librustc/lint/builtin.rs +++ b/src/librustc/lint/builtin.rs @@ -1105,6 +1105,41 @@ impl LintPass for UnnecessaryParens { } } +declare_lint!(UNNECESSARY_IMPORT_BRACES, Allow, + "unnecessary braces around an imported item") + +pub struct UnnecessaryImportBraces; + +impl LintPass for UnnecessaryImportBraces { + fn get_lints(&self) -> LintArray { + lint_array!(UNNECESSARY_IMPORT_BRACES) + } + + fn check_view_item(&mut self, cx: &Context, view_item: &ast::ViewItem) { + match view_item.node { + ast::ViewItemUse(ref view_path) => { + match view_path.node { + ast::ViewPathList(_, ref items, _) => { + if items.len() == 1 { + match items[0].node { + ast::PathListIdent {ref name, ..} => { + let m = format!("braces around {} is unnecessary", + token::get_ident(*name).get()); + cx.span_lint(UNNECESSARY_IMPORT_BRACES, view_item.span, + m.as_slice()); + }, + _ => () + } + } + } + _ => () + } + }, + _ => () + } + } +} + declare_lint!(UNUSED_UNSAFE, Warn, "unnecessary use of an `unsafe` block") diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs index 26ed5cbfb2cc..0c721f84b68e 100644 --- a/src/librustc/lint/context.rs +++ b/src/librustc/lint/context.rs @@ -183,6 +183,7 @@ impl LintStore { NonSnakeCase, NonUppercaseStatics, UnnecessaryParens, + UnnecessaryImportBraces, UnusedUnsafe, UnsafeBlock, UnusedMut, diff --git a/src/test/compile-fail/lint-unnecessary-import-braces.rs b/src/test/compile-fail/lint-unnecessary-import-braces.rs new file mode 100644 index 000000000000..c44918d9879d --- /dev/null +++ b/src/test/compile-fail/lint-unnecessary-import-braces.rs @@ -0,0 +1,21 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![deny(unnecessary_import_braces)] +#![allow(dead_code)] +#![allow(unused_imports)] + +use test::{A}; //~ ERROR braces around A is unnecessary + +mod test { + pub struct A; +} + +fn main() {}