catch pinned must_use
types in unused_must_use
This commit is contained in:
parent
ea6b131132
commit
173b950311
@ -251,6 +251,7 @@ enum MustUsePath {
|
|||||||
/// The root of the normal must_use lint with an optional message.
|
/// The root of the normal must_use lint with an optional message.
|
||||||
Def(Span, DefId, Option<Symbol>),
|
Def(Span, DefId, Option<Symbol>),
|
||||||
Boxed(Box<Self>),
|
Boxed(Box<Self>),
|
||||||
|
Pinned(Box<Self>),
|
||||||
Opaque(Box<Self>),
|
Opaque(Box<Self>),
|
||||||
TraitObject(Box<Self>),
|
TraitObject(Box<Self>),
|
||||||
TupleElement(Vec<(usize, Self)>),
|
TupleElement(Vec<(usize, Self)>),
|
||||||
@ -284,6 +285,11 @@ fn is_ty_must_use<'tcx>(
|
|||||||
is_ty_must_use(cx, boxed_ty, expr, span)
|
is_ty_must_use(cx, boxed_ty, expr, span)
|
||||||
.map(|inner| MustUsePath::Boxed(Box::new(inner)))
|
.map(|inner| MustUsePath::Boxed(Box::new(inner)))
|
||||||
}
|
}
|
||||||
|
ty::Adt(def, args) if cx.tcx.lang_items().pin_type() == Some(def.did()) => {
|
||||||
|
let pinned_ty = args.type_at(0);
|
||||||
|
is_ty_must_use(cx, pinned_ty, expr, span)
|
||||||
|
.map(|inner| MustUsePath::Pinned(Box::new(inner)))
|
||||||
|
}
|
||||||
ty::Adt(def, _) => is_def_must_use(cx, def.did(), span),
|
ty::Adt(def, _) => is_def_must_use(cx, def.did(), span),
|
||||||
ty::Alias(ty::Opaque, ty::AliasTy { def_id: def, .. }) => {
|
ty::Alias(ty::Opaque, ty::AliasTy { def_id: def, .. }) => {
|
||||||
elaborate(
|
elaborate(
|
||||||
@ -425,6 +431,18 @@ fn emit_must_use_untranslated(
|
|||||||
expr_is_from_block,
|
expr_is_from_block,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
MustUsePath::Pinned(path) => {
|
||||||
|
let descr_pre = &format!("{descr_pre}pinned ");
|
||||||
|
emit_must_use_untranslated(
|
||||||
|
cx,
|
||||||
|
path,
|
||||||
|
descr_pre,
|
||||||
|
descr_post,
|
||||||
|
plural_len,
|
||||||
|
true,
|
||||||
|
expr_is_from_block,
|
||||||
|
);
|
||||||
|
}
|
||||||
MustUsePath::Opaque(path) => {
|
MustUsePath::Opaque(path) => {
|
||||||
let descr_pre = &format!("{descr_pre}implementer{plural_suffix} of ");
|
let descr_pre = &format!("{descr_pre}implementer{plural_suffix} of ");
|
||||||
emit_must_use_untranslated(
|
emit_must_use_untranslated(
|
||||||
|
Loading…
Reference in New Issue
Block a user