This commit is contained in:
Manish Goregaokar 2015-03-02 16:13:44 +05:30
parent 67701e0062
commit 426a3ee1e7
6 changed files with 20 additions and 24 deletions

@ -1,7 +1,6 @@
#![feature(plugin)]
#[plugin]
extern crate clippy;
#![plugin(clippy)]
pub fn test(foo: Box<Vec<bool>>) {
println!("{:?}", foo.get(0))

@ -1,15 +1,14 @@
#![feature(plugin)]
#[plugin]
extern crate clippy;
#![plugin(clippy)]
extern crate collections;
use collections::dlist::DList;
use collections::linked_list::LinkedList;
pub fn test(foo: DList<uint>) {
pub fn test(foo: LinkedList<uint>) {
println!("{:?}", foo)
}
fn main(){
test(DList::new());
test(LinkedList::new());
}

@ -1,7 +1,6 @@
#![feature(plugin)]
#[plugin]
extern crate clippy;
#![plugin(clippy)]
fn main(){
let x = Some(1u);
@ -19,4 +18,4 @@ fn main(){
(2...3, 7...9) => println!("{:?}", z),
_ => {}
}
}
}

@ -1,7 +1,6 @@
#![feature(plugin)]
#[plugin]
extern crate clippy;
#![plugin(clippy)]
fn the_answer(ref mut x: u8) {
*x = 42;

@ -23,7 +23,7 @@ pub fn plugin_registrar(reg: &mut Registry) {
reg.register_lint_pass(box misc::MiscPass as LintPassObject);
reg.register_lint_pass(box misc::StrToStringPass as LintPassObject);
reg.register_lint_pass(box misc::TopLevelRefPass as LintPassObject);
reg.register_lint_group("clippy", vec![types::BOX_VEC, types::DLIST,
reg.register_lint_group("clippy", vec![types::BOX_VEC, types::LINKEDLIST,
misc::SINGLE_MATCH, misc::STR_TO_STRING,
misc::TOPLEVEL_REF_ARG]);
}

@ -12,8 +12,8 @@ pub struct TypePass;
declare_lint!(pub BOX_VEC, Warn,
"Warn on usage of Box<Vec<T>>");
declare_lint!(pub DLIST, Warn,
"Warn on usage of DList");
declare_lint!(pub LINKEDLIST, Warn,
"Warn on usage of LinkedList");
/// Matches a type with a provided string, and returns its type parameters if successful
pub fn match_ty_unwrap<'a>(ty: &'a Ty, segments: &[&str]) -> Option<&'a [P<Ty>]> {
@ -48,7 +48,7 @@ pub fn span_note_and_lint(cx: &Context, lint: &'static Lint, span: Span, msg: &s
impl LintPass for TypePass {
fn get_lints(&self) -> LintArray {
lint_array!(BOX_VEC, DLIST)
lint_array!(BOX_VEC, LINKEDLIST)
}
fn check_ty(&mut self, cx: &Context, ty: &ast::Ty) {
@ -66,17 +66,17 @@ impl LintPass for TypePass {
});
{
// In case stuff gets moved around
use collections::dlist::DList as DL1;
use std::collections::dlist::DList as DL2;
use std::collections::DList as DL3;
use collections::linked_list::LinkedList as DL1;
use std::collections::linked_list::LinkedList as DL2;
use std::collections::linked_list::LinkedList as DL3;
}
let dlists = [vec!["std","collections","dlist","DList"],
vec!["std","collections","DList"],
vec!["collections","dlist","DList"]];
let dlists = [vec!["std","collections","linked_list","LinkedList"],
vec!["std","collections","linked_list","LinkedList"],
vec!["collections","linked_list","LinkedList"]];
for path in dlists.iter() {
if match_ty_unwrap(ty, path.as_slice()).is_some() {
span_note_and_lint(cx, DLIST, ty.span,
"I see you're using a DList! Perhaps you meant some other data structure?",
span_note_and_lint(cx, LINKEDLIST, ty.span,
"I see you're using a LinkedList! Perhaps you meant some other data structure?",
"A RingBuf might work.");
return;
}