1
Fork 0

Treat opaque types failing the signature defining scope check as defining, as we already errored and can hide subsequent errors this way.

This commit is contained in:
Oli Scherer 2023-06-22 15:11:07 +00:00
parent 41881aece2
commit a71628c114
7 changed files with 6 additions and 65 deletions

View file

@ -72,14 +72,15 @@ impl<'tcx> TypeVisitor<TyCtxt<'tcx>> for OpaqueTypeCollector<'tcx> {
if !self.seen.insert(alias_ty.def_id.expect_local()) {
return ControlFlow::Continue(());
}
self.opaques.push(alias_ty.def_id.expect_local());
match self.tcx.uses_unique_generic_params(alias_ty.substs, CheckRegions::Bound) {
Ok(()) => {
// FIXME: implement higher kinded lifetime bounds on nested opaque types. They are not
// supported at all, so this is sound to do, but once we want to support them, you'll
// start seeing the error below.
self.opaques.push(alias_ty.def_id.expect_local());
// Collect opaque types nested within the associated type bounds of this opaque type.
for (pred, span) in self
.tcx