Added &String matching and renamed to vec_ptr_arg to ptr_arg, also added README section
This commit is contained in:
@@ -18,8 +18,8 @@ pub mod types;
|
||||
pub mod misc;
|
||||
pub mod eq_op;
|
||||
pub mod bit_mask;
|
||||
pub mod ptr_arg;
|
||||
pub mod needless_bool;
|
||||
pub mod vec_ptr_arg;
|
||||
|
||||
#[plugin_registrar]
|
||||
pub fn plugin_registrar(reg: &mut Registry) {
|
||||
@@ -29,14 +29,13 @@ pub fn plugin_registrar(reg: &mut Registry) {
|
||||
reg.register_lint_pass(box misc::TopLevelRefPass as LintPassObject);
|
||||
reg.register_lint_pass(box eq_op::EqOp as LintPassObject);
|
||||
reg.register_lint_pass(box bit_mask::BitMask as LintPassObject);
|
||||
reg.register_lint_pass(box ptr_arg::PtrArg as LintPassObject);
|
||||
reg.register_lint_pass(box needless_bool::NeedlessBool as LintPassObject);
|
||||
reg.register_lint_pass(box vec_ptr_arg::VecPtrArg as LintPassObject);
|
||||
|
||||
reg.register_lint_group("clippy", vec![types::BOX_VEC, types::LINKEDLIST,
|
||||
misc::SINGLE_MATCH, misc::STR_TO_STRING,
|
||||
misc::TOPLEVEL_REF_ARG, eq_op::EQ_OP,
|
||||
bit_mask::BAD_BIT_MASK,
|
||||
needless_bool::NEEDLESS_BOOL,
|
||||
vec_ptr_arg::VEC_PTR_ARG
|
||||
bit_mask::BAD_BIT_MASK, ptr_arg::PTR_ARG,
|
||||
needless_bool::NEEDLESS_BOOL
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -13,18 +13,18 @@ use syntax::codemap::Span;
|
||||
use types::match_ty_unwrap;
|
||||
|
||||
declare_lint! {
|
||||
pub VEC_PTR_ARG,
|
||||
pub PTR_ARG,
|
||||
Allow,
|
||||
"Warn on declaration of a &Vec-typed method argument"
|
||||
"Warn on declaration of a &Vec- or &String-typed method argument"
|
||||
}
|
||||
|
||||
|
||||
#[derive(Copy,Clone)]
|
||||
pub struct VecPtrArg;
|
||||
pub struct PtrArg;
|
||||
|
||||
impl LintPass for VecPtrArg {
|
||||
impl LintPass for PtrArg {
|
||||
fn get_lints(&self) -> LintArray {
|
||||
lint_array!(VEC_PTR_ARG)
|
||||
lint_array!(PTR_ARG)
|
||||
}
|
||||
|
||||
fn check_item(&mut self, cx: &Context, item: &Item) {
|
||||
@@ -59,7 +59,11 @@ fn check_fn(cx: &Context, decl: &FnDecl) {
|
||||
|
||||
fn check_ptr_subtype(cx: &Context, span: Span, ty: &Ty) {
|
||||
if match_ty_unwrap(ty, &["Vec"]).is_some() {
|
||||
cx.span_lint(VEC_PTR_ARG, span,
|
||||
cx.span_lint(PTR_ARG, span,
|
||||
"Writing '&Vec<_>' instead of '&[_]' involves one more reference and cannot be used with non-vec-based slices. Consider changing the type to &[...]");
|
||||
} else { if match_ty_unwrap(ty, &["String"]).is_some() {
|
||||
cx.span_lint(PTR_ARG, span,
|
||||
"Writing '&String' instead of '&str' involves a new Object where a slices will do. Consider changing the type to &str");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user