use defining uses of all bodies to constrain non-defining uses

support non-defining uses in closures
This commit is contained in:
lcnr 2025-09-01 22:03:21 +02:00
parent a3993c5416
commit b8160e9f38
17 changed files with 519 additions and 233 deletions

View file

@ -989,6 +989,10 @@ impl<'tcx> InferCtxt<'tcx> {
storage.var_infos.clone()
}
pub fn has_opaque_types_in_storage(&self) -> bool {
!self.inner.borrow().opaque_type_storage.is_empty()
}
#[instrument(level = "debug", skip(self), ret)]
pub fn take_opaque_types(&self) -> Vec<(OpaqueTypeKey<'tcx>, OpaqueHiddenType<'tcx>)> {
self.inner.borrow_mut().opaque_type_storage.take_opaque_types().collect()