1
Fork 0

Store impl_trait_fn inside OpaqueTyOrigin.

This commit is contained in:
Camille GILLOT 2021-11-30 19:11:35 +01:00
parent 72b6f7049c
commit 8576ab45e4
13 changed files with 119 additions and 97 deletions

View file

@ -2248,7 +2248,6 @@ pub struct BareFnTy<'hir> {
pub struct OpaqueTy<'hir> {
pub generics: Generics<'hir>,
pub bounds: GenericBounds<'hir>,
pub impl_trait_fn: Option<DefId>,
pub origin: OpaqueTyOrigin,
}
@ -2256,9 +2255,9 @@ pub struct OpaqueTy<'hir> {
#[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug, HashStable_Generic)]
pub enum OpaqueTyOrigin {
/// `-> impl Trait`
FnReturn,
FnReturn(LocalDefId),
/// `async fn`
AsyncFn,
AsyncFn(LocalDefId),
/// type aliases: `type Foo = impl Trait;`
TyAlias,
}
@ -2809,7 +2808,9 @@ impl ItemKind<'_> {
Some(match *self {
ItemKind::Fn(_, ref generics, _)
| ItemKind::TyAlias(_, ref generics)
| ItemKind::OpaqueTy(OpaqueTy { ref generics, impl_trait_fn: None, .. })
| ItemKind::OpaqueTy(OpaqueTy {
ref generics, origin: OpaqueTyOrigin::TyAlias, ..
})
| ItemKind::Enum(_, ref generics)
| ItemKind::Struct(_, ref generics)
| ItemKind::Union(_, ref generics)