This commit is contained in:
llogiq 2016-02-01 20:37:07 +01:00
parent 1dd19fbae3
commit 3a31576d76
2 changed files with 19 additions and 4 deletions

View file

@ -31,9 +31,9 @@ pub struct EscapePass;
/// ```
declare_lint!(pub BOXED_LOCAL, Warn, "using Box<T> where unnecessary");
fn is_box(ty: ty::Ty) -> bool {
fn is_non_trait_box(ty: ty::Ty) -> bool {
match ty.sty {
ty::TyBox(..) => true,
ty::TyBox(ref inner) => !inner.is_trait(),
_ => false
}
}
@ -90,7 +90,7 @@ impl<'a, 'tcx: 'a> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> {
if let Some(NodeExpr(..)) = map.find(map.get_parent_node(consume_pat.id)) {
return;
}
if is_box(cmt.ty) {
if is_non_trait_box(cmt.ty) {
self.set.insert(consume_pat.id);
}
return;
@ -101,7 +101,7 @@ impl<'a, 'tcx: 'a> Delegate<'tcx> for EscapeDelegate<'a, 'tcx> {
if let DeclLocal(ref loc) = decl.node {
if let Some(ref ex) = loc.init {
if let ExprBox(..) = ex.node {
if is_box(cmt.ty) {
if is_non_trait_box(cmt.ty) {
// let x = box (...)
self.set.insert(consume_pat.id);
}