Skip to content
Permalink
Browse files

Fix false positive in unrooted_must_root lint.

Encountered in #8725.
  • Loading branch information
eefriedman committed Nov 30, 2015
1 parent 2d164f2 commit 962c06e9dae7a3b72ff8f776d9f569a996293acd
Showing with 8 additions and 5 deletions.
  1. +8 −5 components/plugins/lints/unrooted_must_root.rs
@@ -4,6 +4,7 @@

use rustc::front::map as ast_map;
use rustc::lint::{LateContext, LintPass, LintArray, LateLintPass, LintContext};
use rustc::middle::pat_util::pat_is_binding;
use rustc::middle::ty;
use rustc_front::hir;
use rustc_front::intravisit as visit;
@@ -206,11 +207,13 @@ impl<'a, 'b: 'a, 'tcx: 'a+'b> visit::Visitor<'a> for FnDefVisitor<'a, 'b, 'tcx>
let cx = self.cx;

if let hir::PatIdent(hir::BindByValue(_), _, _) = pat.node {
let ty = cx.tcx.pat_ty(pat);
if is_unrooted_ty(cx, ty, self.in_new_function) {
cx.span_lint(UNROOTED_MUST_ROOT,
pat.span,
&format!("Expression of type {:?} must be rooted", ty))
if pat_is_binding(&cx.tcx.def_map.borrow(), pat) {
let ty = cx.tcx.pat_ty(pat);
if is_unrooted_ty(cx, ty, self.in_new_function) {
cx.span_lint(UNROOTED_MUST_ROOT,
pat.span,
&format!("Expression of type {:?} must be rooted", ty))
}
}
}

0 comments on commit 962c06e

Please sign in to comment.
You can’t perform that action at this time.