@@ -3210,28 +3210,31 @@ impl<'hir> Node<'hir> {
32103210 }
32113211 }
32123212
3213- /// Returns `Constness::Const` when this node is a const fn/impl/item.
3214- pub fn constness_for_typeck ( & self ) -> Constness {
3213+ pub fn hir_id ( & self ) -> Option < HirId > {
32153214 match self {
3216- Node :: Item ( Item {
3217- kind : ItemKind :: Fn ( FnSig { header : FnHeader { constness, .. } , .. } , ..) ,
3218- ..
3219- } )
3220- | Node :: TraitItem ( TraitItem {
3221- kind : TraitItemKind :: Fn ( FnSig { header : FnHeader { constness, .. } , .. } , ..) ,
3222- ..
3223- } )
3224- | Node :: ImplItem ( ImplItem {
3225- kind : ImplItemKind :: Fn ( FnSig { header : FnHeader { constness, .. } , .. } , ..) ,
3226- ..
3227- } )
3228- | Node :: Item ( Item { kind : ItemKind :: Impl ( Impl { constness, .. } ) , .. } ) => * constness,
3229-
3230- Node :: Item ( Item { kind : ItemKind :: Const ( ..) , .. } )
3231- | Node :: TraitItem ( TraitItem { kind : TraitItemKind :: Const ( ..) , .. } )
3232- | Node :: ImplItem ( ImplItem { kind : ImplItemKind :: Const ( ..) , .. } ) => Constness :: Const ,
3233-
3234- _ => Constness :: NotConst ,
3215+ Node :: Item ( Item { def_id, .. } )
3216+ | Node :: TraitItem ( TraitItem { def_id, .. } )
3217+ | Node :: ImplItem ( ImplItem { def_id, .. } )
3218+ | Node :: ForeignItem ( ForeignItem { def_id, .. } ) => Some ( HirId :: make_owner ( * def_id) ) ,
3219+ Node :: Field ( FieldDef { hir_id, .. } )
3220+ | Node :: AnonConst ( AnonConst { hir_id, .. } )
3221+ | Node :: Expr ( Expr { hir_id, .. } )
3222+ | Node :: Stmt ( Stmt { hir_id, .. } )
3223+ | Node :: Ty ( Ty { hir_id, .. } )
3224+ | Node :: Binding ( Pat { hir_id, .. } )
3225+ | Node :: Pat ( Pat { hir_id, .. } )
3226+ | Node :: Arm ( Arm { hir_id, .. } )
3227+ | Node :: Block ( Block { hir_id, .. } )
3228+ | Node :: Local ( Local { hir_id, .. } )
3229+ | Node :: Lifetime ( Lifetime { hir_id, .. } )
3230+ | Node :: Param ( Param { hir_id, .. } )
3231+ | Node :: Infer ( InferArg { hir_id, .. } )
3232+ | Node :: GenericParam ( GenericParam { hir_id, .. } ) => Some ( * hir_id) ,
3233+ Node :: TraitRef ( TraitRef { hir_ref_id, .. } ) => Some ( * hir_ref_id) ,
3234+ Node :: PathSegment ( PathSegment { hir_id, .. } ) => * hir_id,
3235+ Node :: Variant ( Variant { id, .. } ) => Some ( * id) ,
3236+ Node :: Ctor ( variant) => variant. ctor_hir_id ( ) ,
3237+ Node :: Crate ( _) | Node :: Visibility ( _) => None ,
32353238 }
32363239 }
32373240
0 commit comments