1
Fork 0

Fix a comment

This commit is contained in:
Michael Goulet 2023-08-01 00:59:59 +00:00
parent 44be25d8a2
commit ac6f2f0d2e
4 changed files with 6 additions and 13 deletions

View file

@ -1462,7 +1462,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
let traits: Vec<_> = let traits: Vec<_> =
self.probe_traits_that_match_assoc_ty(qself_ty, assoc_ident); self.probe_traits_that_match_assoc_ty(qself_ty, assoc_ident);
// Don't print `TyErr` to the user. // Don't print `ty::Error` to the user.
self.report_ambiguous_associated_type( self.report_ambiguous_associated_type(
span, span,
&[qself_ty.to_string()], &[qself_ty.to_string()],

View file

@ -795,7 +795,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
/// Converts the types that the user supplied, in case that doing /// Converts the types that the user supplied, in case that doing
/// so should yield an error, but returns back a signature where /// so should yield an error, but returns back a signature where
/// all parameters are of type `TyErr`. /// all parameters are of type `ty::Error`.
fn error_sig_of_closure( fn error_sig_of_closure(
&self, &self,
decl: &hir::FnDecl<'_>, decl: &hir::FnDecl<'_>,

View file

@ -562,16 +562,8 @@ impl<'tcx> AdtDef<'tcx> {
tcx.adt_destructor(self.did()) tcx.adt_destructor(self.did())
} }
/// Returns a list of types such that `Self: Sized` if and only /// Returns a list of types such that `Self: Sized` if and only if that
/// if that type is `Sized`, or `TyErr` if this type is recursive. /// type is `Sized`, or `ty::Error` if this type has a recursive layout.
///
/// Oddly enough, checking that the sized-constraint is `Sized` is
/// actually more expressive than checking all members:
/// the `Sized` trait is inductive, so an associated type that references
/// `Self` would prevent its containing ADT from being `Sized`.
///
/// Due to normalization being eager, this applies even if
/// the associated type is behind a pointer (e.g., issue #31299).
pub fn sized_constraint(self, tcx: TyCtxt<'tcx>) -> ty::EarlyBinder<&'tcx ty::List<Ty<'tcx>>> { pub fn sized_constraint(self, tcx: TyCtxt<'tcx>) -> ty::EarlyBinder<&'tcx ty::List<Ty<'tcx>>> {
tcx.adt_sized_constraint(self.did()) tcx.adt_sized_constraint(self.did())
} }

View file

@ -62,7 +62,8 @@ fn sized_constraint_for_ty<'tcx>(
let predicates = tcx.predicates_of(adtdef.did()).predicates; let predicates = tcx.predicates_of(adtdef.did()).predicates;
if predicates.iter().any(|(p, _)| { if predicates.iter().any(|(p, _)| {
p.as_trait_clause().is_some_and(|trait_pred| { p.as_trait_clause().is_some_and(|trait_pred| {
trait_pred.def_id() == sized_trait_def_id && trait_pred.self_ty().skip_binder() == ty trait_pred.def_id() == sized_trait_def_id
&& trait_pred.self_ty().skip_binder() == ty
}) })
}) { }) {
vec![] vec![]