@@ -2548,6 +2548,11 @@ pub struct OpaqueTy<'hir> {
2548
2548
pub in_trait : bool ,
2549
2549
}
2550
2550
2551
+ #[ derive( Copy , Clone , Debug , HashStable_Generic ) ]
2552
+ pub struct AssocOpaqueTy {
2553
+ // Maybe add some data if necessary
2554
+ }
2555
+
2551
2556
/// From whence the opaque type came.
2552
2557
#[ derive( Copy , Clone , PartialEq , Eq , Debug , HashStable_Generic ) ]
2553
2558
pub enum OpaqueTyOrigin {
@@ -3331,6 +3336,7 @@ pub enum OwnerNode<'hir> {
3331
3336
TraitItem ( & ' hir TraitItem < ' hir > ) ,
3332
3337
ImplItem ( & ' hir ImplItem < ' hir > ) ,
3333
3338
Crate ( & ' hir Mod < ' hir > ) ,
3339
+ AssocOpaqueTy ( & ' hir AssocOpaqueTy ) ,
3334
3340
}
3335
3341
3336
3342
impl < ' hir > OwnerNode < ' hir > {
@@ -3340,7 +3346,7 @@ impl<'hir> OwnerNode<'hir> {
3340
3346
| OwnerNode :: ForeignItem ( ForeignItem { ident, .. } )
3341
3347
| OwnerNode :: ImplItem ( ImplItem { ident, .. } )
3342
3348
| OwnerNode :: TraitItem ( TraitItem { ident, .. } ) => Some ( * ident) ,
3343
- OwnerNode :: Crate ( ..) => None ,
3349
+ OwnerNode :: Crate ( ..) | OwnerNode :: AssocOpaqueTy ( .. ) => None ,
3344
3350
}
3345
3351
}
3346
3352
@@ -3353,6 +3359,7 @@ impl<'hir> OwnerNode<'hir> {
3353
3359
| OwnerNode :: ImplItem ( ImplItem { span, .. } )
3354
3360
| OwnerNode :: TraitItem ( TraitItem { span, .. } ) => span,
3355
3361
OwnerNode :: Crate ( Mod { spans : ModSpans { inner_span, .. } , .. } ) => inner_span,
3362
+ OwnerNode :: AssocOpaqueTy ( ..) => unreachable ! ( ) ,
3356
3363
}
3357
3364
}
3358
3365
@@ -3411,6 +3418,7 @@ impl<'hir> OwnerNode<'hir> {
3411
3418
| OwnerNode :: ImplItem ( ImplItem { owner_id, .. } )
3412
3419
| OwnerNode :: ForeignItem ( ForeignItem { owner_id, .. } ) => * owner_id,
3413
3420
OwnerNode :: Crate ( ..) => crate :: CRATE_HIR_ID . owner ,
3421
+ OwnerNode :: AssocOpaqueTy ( ..) => unreachable ! ( ) ,
3414
3422
}
3415
3423
}
3416
3424
@@ -3454,6 +3462,7 @@ impl<'hir> Into<Node<'hir>> for OwnerNode<'hir> {
3454
3462
OwnerNode :: ImplItem ( n) => Node :: ImplItem ( n) ,
3455
3463
OwnerNode :: TraitItem ( n) => Node :: TraitItem ( n) ,
3456
3464
OwnerNode :: Crate ( n) => Node :: Crate ( n) ,
3465
+ OwnerNode :: AssocOpaqueTy ( n) => Node :: AssocOpaqueTy ( n) ,
3457
3466
}
3458
3467
}
3459
3468
}
@@ -3491,6 +3500,7 @@ pub enum Node<'hir> {
3491
3500
WhereBoundPredicate ( & ' hir WhereBoundPredicate < ' hir > ) ,
3492
3501
// FIXME: Merge into `Node::Infer`.
3493
3502
ArrayLenInfer ( & ' hir InferArg ) ,
3503
+ AssocOpaqueTy ( & ' hir AssocOpaqueTy ) ,
3494
3504
// Span by reference to minimize `Node`'s size
3495
3505
#[ allow( rustc:: pass_by_value) ]
3496
3506
Err ( & ' hir Span ) ,
@@ -3541,6 +3551,7 @@ impl<'hir> Node<'hir> {
3541
3551
| Node :: Infer ( ..)
3542
3552
| Node :: WhereBoundPredicate ( ..)
3543
3553
| Node :: ArrayLenInfer ( ..)
3554
+ | Node :: AssocOpaqueTy ( ..)
3544
3555
| Node :: Err ( ..) => None ,
3545
3556
}
3546
3557
}
@@ -3646,6 +3657,7 @@ impl<'hir> Node<'hir> {
3646
3657
Node :: TraitItem ( i) => Some ( OwnerNode :: TraitItem ( i) ) ,
3647
3658
Node :: ImplItem ( i) => Some ( OwnerNode :: ImplItem ( i) ) ,
3648
3659
Node :: Crate ( i) => Some ( OwnerNode :: Crate ( i) ) ,
3660
+ Node :: AssocOpaqueTy ( i) => Some ( OwnerNode :: AssocOpaqueTy ( i) ) ,
3649
3661
_ => None ,
3650
3662
}
3651
3663
}
0 commit comments