Rollup merge of #91640 - cjgillot:in-band-collect, r=oli-obk
Simplify collection of in-band lifetimes Split from https://github.com/rust-lang/rust/pull/91403 r? ````@oli-obk````
This commit is contained in:
commit
7083f8edfd
14 changed files with 212 additions and 200 deletions
|
@ -107,7 +107,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
|
|||
kind:
|
||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
||||
bounds,
|
||||
origin: hir::OpaqueTyOrigin::AsyncFn,
|
||||
origin: hir::OpaqueTyOrigin::AsyncFn(..),
|
||||
..
|
||||
}),
|
||||
..
|
||||
|
|
|
@ -276,7 +276,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
|||
debug!(?concrete_ty);
|
||||
|
||||
let first_own_region = match opaque_defn.origin {
|
||||
hir::OpaqueTyOrigin::FnReturn | hir::OpaqueTyOrigin::AsyncFn => {
|
||||
hir::OpaqueTyOrigin::FnReturn(..) | hir::OpaqueTyOrigin::AsyncFn(..) => {
|
||||
// We lower
|
||||
//
|
||||
// fn foo<'l0..'ln>() -> impl Trait<'l0..'lm>
|
||||
|
@ -461,35 +461,29 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
|||
if let Some(def_id) = def_id.as_local() {
|
||||
let opaque_hir_id = tcx.hir().local_def_id_to_hir_id(def_id);
|
||||
let parent_def_id = self.infcx.defining_use_anchor;
|
||||
let (in_definition_scope, origin) = match tcx.hir().expect_item(def_id).kind
|
||||
{
|
||||
let item_kind = &tcx.hir().expect_item(def_id).kind;
|
||||
let hir::ItemKind::OpaqueTy(hir::OpaqueTy { origin, .. }) = item_kind else {
|
||||
span_bug!(
|
||||
self.value_span,
|
||||
"weird opaque type: {:#?}, {:#?}",
|
||||
ty.kind(),
|
||||
item_kind
|
||||
)
|
||||
};
|
||||
let in_definition_scope = match *origin {
|
||||
// Async `impl Trait`
|
||||
hir::OpaqueTyOrigin::AsyncFn(parent) => parent == parent_def_id,
|
||||
// Anonymous `impl Trait`
|
||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
||||
impl_trait_fn: Some(parent),
|
||||
origin,
|
||||
..
|
||||
}) => (parent == parent_def_id.to_def_id(), origin),
|
||||
hir::OpaqueTyOrigin::FnReturn(parent) => parent == parent_def_id,
|
||||
// Named `type Foo = impl Bar;`
|
||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
||||
impl_trait_fn: None,
|
||||
origin,
|
||||
..
|
||||
}) => {
|
||||
(may_define_opaque_type(tcx, parent_def_id, opaque_hir_id), origin)
|
||||
}
|
||||
ref itemkind => {
|
||||
span_bug!(
|
||||
self.value_span,
|
||||
"weird opaque type: {:#?}, {:#?}",
|
||||
ty.kind(),
|
||||
itemkind
|
||||
)
|
||||
hir::OpaqueTyOrigin::TyAlias => {
|
||||
may_define_opaque_type(tcx, parent_def_id, opaque_hir_id)
|
||||
}
|
||||
};
|
||||
if in_definition_scope {
|
||||
let opaque_type_key =
|
||||
OpaqueTypeKey { def_id: def_id.to_def_id(), substs };
|
||||
return self.fold_opaque_ty(ty, opaque_type_key, origin);
|
||||
return self.fold_opaque_ty(ty, opaque_type_key, *origin);
|
||||
}
|
||||
|
||||
debug!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue