commit
25de6a1fd5
@ -198,7 +198,7 @@ fn has_is_empty(cx: &LateContext, expr: &Expr) -> bool {
|
|||||||
}
|
}
|
||||||
ty::TyProjection(_) => ty.ty_to_def_id().map_or(false, |id| has_is_empty_impl(cx, &id)),
|
ty::TyProjection(_) => ty.ty_to_def_id().map_or(false, |id| has_is_empty_impl(cx, &id)),
|
||||||
ty::TyEnum(ref id, _) | ty::TyStruct(ref id, _) => has_is_empty_impl(cx, &id.did),
|
ty::TyEnum(ref id, _) | ty::TyStruct(ref id, _) => has_is_empty_impl(cx, &id.did),
|
||||||
ty::TyArray(..) => true,
|
ty::TyArray(..) | ty::TyStr => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,8 @@ impl LateLintPass for PanicPass {
|
|||||||
match_path(path, &BEGIN_UNWIND),
|
match_path(path, &BEGIN_UNWIND),
|
||||||
let ExprLit(ref lit) = params[0].node,
|
let ExprLit(ref lit) = params[0].node,
|
||||||
let LitKind::Str(ref string, _) = lit.node,
|
let LitKind::Str(ref string, _) = lit.node,
|
||||||
string.contains('{'),
|
let Some(par) = string.find('{'),
|
||||||
|
string[par..].contains('}'),
|
||||||
let Some(sp) = cx.sess().codemap()
|
let Some(sp) = cx.sess().codemap()
|
||||||
.with_expn_info(expr.span.expn_id,
|
.with_expn_info(expr.span.expn_id,
|
||||||
|info| info.map(|i| i.call_site))
|
|info| info.map(|i| i.call_site))
|
||||||
|
@ -383,14 +383,14 @@ fn trim_multiline_inner(s: Cow<str>, ignore_first: bool, ch: char) -> Cow<str> {
|
|||||||
let x = s.lines()
|
let x = s.lines()
|
||||||
.skip(ignore_first as usize)
|
.skip(ignore_first as usize)
|
||||||
.filter_map(|l| {
|
.filter_map(|l| {
|
||||||
if l.len() > 0 {
|
if l.is_empty() {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
// ignore empty lines
|
// ignore empty lines
|
||||||
Some(l.char_indices()
|
Some(l.char_indices()
|
||||||
.find(|&(_, x)| x != ch)
|
.find(|&(_, x)| x != ch)
|
||||||
.unwrap_or((l.len(), ch))
|
.unwrap_or((l.len(), ch))
|
||||||
.0)
|
.0)
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.min()
|
.min()
|
||||||
@ -399,7 +399,7 @@ fn trim_multiline_inner(s: Cow<str>, ignore_first: bool, ch: char) -> Cow<str> {
|
|||||||
Cow::Owned(s.lines()
|
Cow::Owned(s.lines()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.map(|(i, l)| {
|
.map(|(i, l)| {
|
||||||
if (ignore_first && i == 0) || l.len() == 0 {
|
if (ignore_first && i == 0) || l.is_empty() {
|
||||||
l
|
l
|
||||||
} else {
|
} else {
|
||||||
l.split_at(x).1
|
l.split_at(x).1
|
||||||
|
@ -76,6 +76,12 @@ fn main() {
|
|||||||
println!("This should not happen!");
|
println!("This should not happen!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if "".len() == 0 {
|
||||||
|
//~^ERROR length comparison to zero
|
||||||
|
//~|HELP consider using `is_empty`
|
||||||
|
//~|SUGGESTION "".is_empty()
|
||||||
|
}
|
||||||
|
|
||||||
let y = One;
|
let y = One;
|
||||||
if y.len() == 0 { //no error because One does not have .is_empty()
|
if y.len() == 0 { //no error because One does not have .is_empty()
|
||||||
println!("This should not happen either!");
|
println!("This should not happen either!");
|
||||||
|
@ -4,10 +4,14 @@
|
|||||||
#[deny(panic_params)]
|
#[deny(panic_params)]
|
||||||
|
|
||||||
fn missing() {
|
fn missing() {
|
||||||
|
if true {
|
||||||
panic!("{}"); //~ERROR: You probably are missing some parameter
|
panic!("{}"); //~ERROR: You probably are missing some parameter
|
||||||
|
} else {
|
||||||
|
panic!("{:?}"); //~ERROR: You probably are missing some parameter
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ok_sigle() {
|
fn ok_single() {
|
||||||
panic!("foo bar");
|
panic!("foo bar");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,8 +19,18 @@ fn ok_multiple() {
|
|||||||
panic!("{}", "This is {ok}");
|
panic!("{}", "This is {ok}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn ok_bracket() {
|
||||||
|
// the match is just here because of #759, it serves no other purpose for the lint
|
||||||
|
match 42 {
|
||||||
|
1337 => panic!("{so is this"),
|
||||||
|
666 => panic!("so is this}"),
|
||||||
|
_ => panic!("}so is that{"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
missing();
|
missing();
|
||||||
ok_sigle();
|
ok_single();
|
||||||
ok_multiple();
|
ok_multiple();
|
||||||
|
ok_bracket();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user