@@ -41,7 +41,7 @@ pub enum Target {
4141 Union ,
4242 Trait ,
4343 TraitAlias ,
44- Impl ,
44+ Impl { of_trait : bool } ,
4545 Expression ,
4646 Statement ,
4747 Arm ,
@@ -51,7 +51,7 @@ pub enum Target {
5151 ForeignFn ,
5252 ForeignStatic ,
5353 ForeignTy ,
54- GenericParam ( GenericParamKind ) ,
54+ GenericParam { kind : GenericParamKind , has_default : bool } ,
5555 MacroDef ,
5656 Param ,
5757 PatField ,
@@ -86,14 +86,14 @@ impl Target {
8686 | Target :: Union
8787 | Target :: Trait
8888 | Target :: TraitAlias
89- | Target :: Impl
89+ | Target :: Impl { .. }
9090 | Target :: Expression
9191 | Target :: Statement
9292 | Target :: Arm
9393 | Target :: ForeignFn
9494 | Target :: ForeignStatic
9595 | Target :: ForeignTy
96- | Target :: GenericParam ( _ )
96+ | Target :: GenericParam { .. }
9797 | Target :: MacroDef
9898 | Target :: Param
9999 | Target :: PatField
@@ -119,7 +119,7 @@ impl Target {
119119 ItemKind :: Union ( ..) => Target :: Union ,
120120 ItemKind :: Trait ( ..) => Target :: Trait ,
121121 ItemKind :: TraitAlias ( ..) => Target :: TraitAlias ,
122- ItemKind :: Impl { .. } => Target :: Impl ,
122+ ItemKind :: Impl ( imp_ ) => Target :: Impl { of_trait : imp_ . of_trait . is_some ( ) } ,
123123 }
124124 }
125125
@@ -141,7 +141,7 @@ impl Target {
141141 DefKind :: Union => Target :: Union ,
142142 DefKind :: Trait => Target :: Trait ,
143143 DefKind :: TraitAlias => Target :: TraitAlias ,
144- DefKind :: Impl { .. } => Target :: Impl ,
144+ DefKind :: Impl { of_trait } => Target :: Impl { of_trait } ,
145145 _ => panic ! ( "impossible case reached" ) ,
146146 }
147147 }
@@ -169,11 +169,17 @@ impl Target {
169169
170170 pub fn from_generic_param ( generic_param : & hir:: GenericParam < ' _ > ) -> Target {
171171 match generic_param. kind {
172- hir:: GenericParamKind :: Type { .. } => Target :: GenericParam ( GenericParamKind :: Type ) ,
172+ hir:: GenericParamKind :: Type { default, .. } => Target :: GenericParam {
173+ kind : GenericParamKind :: Type ,
174+ has_default : default. is_some ( ) ,
175+ } ,
173176 hir:: GenericParamKind :: Lifetime { .. } => {
174- Target :: GenericParam ( GenericParamKind :: Lifetime )
177+ Target :: GenericParam { kind : GenericParamKind :: Lifetime , has_default : false }
175178 }
176- hir:: GenericParamKind :: Const { .. } => Target :: GenericParam ( GenericParamKind :: Const ) ,
179+ hir:: GenericParamKind :: Const { default, .. } => Target :: GenericParam {
180+ kind : GenericParamKind :: Const ,
181+ has_default : default. is_some ( ) ,
182+ } ,
177183 }
178184 }
179185
@@ -196,7 +202,8 @@ impl Target {
196202 Target :: Union => "union" ,
197203 Target :: Trait => "trait" ,
198204 Target :: TraitAlias => "trait alias" ,
199- Target :: Impl => "implementation block" ,
205+ Target :: Impl { of_trait : false } => "inherent implementation block" ,
206+ Target :: Impl { of_trait : true } => "trait implementation block" ,
200207 Target :: Expression => "expression" ,
201208 Target :: Statement => "statement" ,
202209 Target :: Arm => "match arm" ,
@@ -210,7 +217,7 @@ impl Target {
210217 Target :: ForeignFn => "foreign function" ,
211218 Target :: ForeignStatic => "foreign static item" ,
212219 Target :: ForeignTy => "foreign type" ,
213- Target :: GenericParam ( kind) => match kind {
220+ Target :: GenericParam { kind, has_default : _ } => match kind {
214221 GenericParamKind :: Type => "type parameter" ,
215222 GenericParamKind :: Lifetime => "lifetime parameter" ,
216223 GenericParamKind :: Const => "const parameter" ,
0 commit comments