Make Ty::boxed_ty return an Option
This commit is contained in:
parent
663f20086a
commit
0b8cb4a1eb
5 changed files with 11 additions and 13 deletions
|
|
@ -5187,8 +5187,8 @@ impl SelfKind {
|
|||
fn matches_value<'a>(cx: &LateContext<'a>, parent_ty: Ty<'a>, ty: Ty<'a>) -> bool {
|
||||
if ty == parent_ty {
|
||||
true
|
||||
} else if ty.is_box() {
|
||||
ty.boxed_ty() == parent_ty
|
||||
} else if let Some(boxed_ty) = ty.boxed_ty() {
|
||||
boxed_ty == parent_ty
|
||||
} else if is_type_diagnostic_item(cx, ty, sym::Rc) || is_type_diagnostic_item(cx, ty, sym::Arc) {
|
||||
if let ty::Adt(_, args) = ty.kind() {
|
||||
args.types().next().map_or(false, |t| t == parent_ty)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ pub(super) fn derefs_to_slice<'tcx>(
|
|||
fn may_slice<'a>(cx: &LateContext<'a>, ty: Ty<'a>) -> bool {
|
||||
match ty.kind() {
|
||||
ty::Slice(_) => true,
|
||||
ty::Adt(def, _) if def.is_box() => may_slice(cx, ty.boxed_ty()),
|
||||
ty::Adt(..) if let Some(boxed) = ty.boxed_ty() => may_slice(cx, boxed),
|
||||
ty::Adt(..) => is_type_diagnostic_item(cx, ty, sym::Vec),
|
||||
ty::Array(_, size) => size.try_eval_target_usize(cx.tcx, cx.param_env).is_some(),
|
||||
ty::Ref(_, inner, _) => may_slice(cx, *inner),
|
||||
|
|
@ -33,7 +33,7 @@ pub(super) fn derefs_to_slice<'tcx>(
|
|||
} else {
|
||||
match ty.kind() {
|
||||
ty::Slice(_) => Some(expr),
|
||||
ty::Adt(def, _) if def.is_box() && may_slice(cx, ty.boxed_ty()) => Some(expr),
|
||||
_ if ty.boxed_ty().is_some_and(|boxed| may_slice(cx, boxed)) => Some(expr),
|
||||
ty::Ref(_, inner, _) => {
|
||||
if may_slice(cx, *inner) {
|
||||
Some(expr)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue