File tree Expand file tree Collapse file tree 1 file changed +10
-4
lines changed
compiler/rustc_ty_utils/src Expand file tree Collapse file tree 1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -58,11 +58,17 @@ fn sized_constraint_for_ty<'tcx>(
5858 // we know that `T` is Sized and do not need to check
5959 // it on the impl.
6060
61- let Some ( sized_trait) = tcx. lang_items ( ) . sized_trait ( ) else { return vec ! [ ty] } ;
62- let sized_predicate =
63- ty:: TraitRef :: new ( tcx, sized_trait, [ ty] ) . without_const ( ) . to_predicate ( tcx) ;
61+ let Some ( sized_trait_def_id) = tcx. lang_items ( ) . sized_trait ( ) else { return vec ! [ ty] } ;
6462 let predicates = tcx. predicates_of ( adtdef. did ( ) ) . predicates ;
65- if predicates. iter ( ) . any ( |( p, _) | * p == sized_predicate) { vec ! [ ] } else { vec ! [ ty] }
63+ if predicates. iter ( ) . any ( |( p, _) | {
64+ p. as_trait_clause ( ) . is_some_and ( |trait_pred| {
65+ trait_pred. def_id ( ) == sized_trait_def_id && trait_pred. self_ty ( ) . skip_binder ( ) == ty
66+ } )
67+ } ) {
68+ vec ! [ ]
69+ } else {
70+ vec ! [ ty]
71+ }
6672 }
6773
6874 Placeholder ( ..) | Bound ( ..) | Infer ( ..) => {
You can’t perform that action at this time.
0 commit comments