Simplify match.
This commit is contained in:
parent
8576ab45e4
commit
54ff72132c
1 changed files with 15 additions and 25 deletions
|
@ -461,39 +461,29 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
||||||
if let Some(def_id) = def_id.as_local() {
|
if let Some(def_id) = def_id.as_local() {
|
||||||
let opaque_hir_id = tcx.hir().local_def_id_to_hir_id(def_id);
|
let opaque_hir_id = tcx.hir().local_def_id_to_hir_id(def_id);
|
||||||
let parent_def_id = self.infcx.defining_use_anchor;
|
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`
|
// Async `impl Trait`
|
||||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
hir::OpaqueTyOrigin::AsyncFn(parent) => parent == parent_def_id,
|
||||||
origin: hir::OpaqueTyOrigin::AsyncFn(parent),
|
|
||||||
..
|
|
||||||
}) => (parent == parent_def_id, hir::OpaqueTyOrigin::AsyncFn(parent)),
|
|
||||||
// Anonymous `impl Trait`
|
// Anonymous `impl Trait`
|
||||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
hir::OpaqueTyOrigin::FnReturn(parent) => parent == parent_def_id,
|
||||||
origin: hir::OpaqueTyOrigin::FnReturn(parent),
|
|
||||||
..
|
|
||||||
}) => (parent == parent_def_id, hir::OpaqueTyOrigin::FnReturn(parent)),
|
|
||||||
// Named `type Foo = impl Bar;`
|
// Named `type Foo = impl Bar;`
|
||||||
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
|
hir::OpaqueTyOrigin::TyAlias => {
|
||||||
origin: hir::OpaqueTyOrigin::TyAlias,
|
may_define_opaque_type(tcx, parent_def_id, opaque_hir_id)
|
||||||
..
|
|
||||||
}) => (
|
|
||||||
may_define_opaque_type(tcx, parent_def_id, opaque_hir_id),
|
|
||||||
hir::OpaqueTyOrigin::TyAlias,
|
|
||||||
),
|
|
||||||
ref itemkind => {
|
|
||||||
span_bug!(
|
|
||||||
self.value_span,
|
|
||||||
"weird opaque type: {:#?}, {:#?}",
|
|
||||||
ty.kind(),
|
|
||||||
itemkind
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if in_definition_scope {
|
if in_definition_scope {
|
||||||
let opaque_type_key =
|
let opaque_type_key =
|
||||||
OpaqueTypeKey { def_id: def_id.to_def_id(), substs };
|
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!(
|
debug!(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue