Recognise #[must_use] on traits, affecting impl Trait

This commit is contained in:
varkor 2018-11-03 20:08:30 +00:00
parent b55717f9b0
commit cb5520bc48

View File

@ -66,9 +66,22 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnusedResults {
} else {
match t.sty {
ty::Adt(def, _) => check_must_use(cx, def.did, s.span, ""),
ty::Opaque(def, _) => {
let mut must_use = false;
for (predicate, _) in cx.tcx.predicates_of(def).predicates {
if let ty::Predicate::Trait(ref poly_trait_predicate) = predicate {
let trait_ref = poly_trait_predicate.skip_binder().trait_ref;
if check_must_use(cx, trait_ref.def_id, s.span, "implementer of ") {
must_use = true;
break;
}
}
}
must_use
}
_ => false,
}
}
};
let mut fn_warned = false;
let mut op_warned = false;