1
Fork 0

Make traits with GATs not object safe

This commit is contained in:
Jack Huey 2021-04-27 14:34:23 -04:00
parent 1919b3f227
commit 857cb4de20
15 changed files with 179 additions and 25 deletions

View file

@ -132,6 +132,14 @@ fn object_safety_violations_for_trait(
.map(|item| ObjectSafetyViolation::AssocConst(item.ident.name, item.ident.span)),
);
violations.extend(
tcx.associated_items(trait_def_id)
.in_definition_order()
.filter(|item| item.kind == ty::AssocKind::Type)
.filter(|item| !tcx.generics_of(item.def_id).params.is_empty())
.map(|item| ObjectSafetyViolation::GAT(item.ident.name, item.ident.span)),
);
debug!(
"object_safety_violations_for_trait(trait_def_id={:?}) = {:?}",
trait_def_id, violations