@@ -297,7 +297,7 @@ impl ast::RecordExprField {
297
297
}
298
298
}
299
299
300
- #[ derive( Debug , Clone , PartialEq ) ]
300
+ #[ derive( Debug , Clone ) ]
301
301
pub enum NameLike {
302
302
NameRef ( ast:: NameRef ) ,
303
303
Name ( ast:: Name ) ,
@@ -335,16 +335,6 @@ impl ast::AstNode for NameLike {
335
335
}
336
336
}
337
337
338
- impl fmt:: Display for NameLike {
339
- fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
340
- match self {
341
- NameLike :: Name ( it) => fmt:: Display :: fmt ( it, f) ,
342
- NameLike :: NameRef ( it) => fmt:: Display :: fmt ( it, f) ,
343
- NameLike :: Lifetime ( it) => fmt:: Display :: fmt ( it, f) ,
344
- }
345
- }
346
- }
347
-
348
338
mod __ {
349
339
use super :: {
350
340
ast:: { Lifetime , Name , NameRef } ,
@@ -353,11 +343,26 @@ mod __ {
353
343
stdx:: impl_from!( NameRef , Name , Lifetime for NameLike ) ;
354
344
}
355
345
346
+ #[ derive( Debug , Clone , PartialEq ) ]
347
+ pub enum NameOrNameRef {
348
+ Name ( ast:: Name ) ,
349
+ NameRef ( ast:: NameRef ) ,
350
+ }
351
+
352
+ impl fmt:: Display for NameOrNameRef {
353
+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
354
+ match self {
355
+ NameOrNameRef :: Name ( it) => fmt:: Display :: fmt ( it, f) ,
356
+ NameOrNameRef :: NameRef ( it) => fmt:: Display :: fmt ( it, f) ,
357
+ }
358
+ }
359
+ }
360
+
356
361
impl ast:: RecordPatField {
357
362
pub fn for_field_name_ref ( field_name : & ast:: NameRef ) -> Option < ast:: RecordPatField > {
358
363
let candidate = field_name. syntax ( ) . parent ( ) . and_then ( ast:: RecordPatField :: cast) ?;
359
364
match candidate. field_name ( ) ? {
360
- NameLike :: NameRef ( name_ref) if name_ref == * field_name => Some ( candidate) ,
365
+ NameOrNameRef :: NameRef ( name_ref) if name_ref == * field_name => Some ( candidate) ,
361
366
_ => None ,
362
367
}
363
368
}
@@ -366,19 +371,19 @@ impl ast::RecordPatField {
366
371
let candidate =
367
372
field_name. syntax ( ) . ancestors ( ) . nth ( 2 ) . and_then ( ast:: RecordPatField :: cast) ?;
368
373
match candidate. field_name ( ) ? {
369
- NameLike :: Name ( name) if name == * field_name => Some ( candidate) ,
374
+ NameOrNameRef :: Name ( name) if name == * field_name => Some ( candidate) ,
370
375
_ => None ,
371
376
}
372
377
}
373
378
374
379
/// Deals with field init shorthand
375
- pub fn field_name ( & self ) -> Option < NameLike > {
380
+ pub fn field_name ( & self ) -> Option < NameOrNameRef > {
376
381
if let Some ( name_ref) = self . name_ref ( ) {
377
- return Some ( NameLike :: NameRef ( name_ref) ) ;
382
+ return Some ( NameOrNameRef :: NameRef ( name_ref) ) ;
378
383
}
379
384
if let Some ( ast:: Pat :: IdentPat ( pat) ) = self . pat ( ) {
380
385
let name = pat. name ( ) ?;
381
- return Some ( NameLike :: Name ( name) ) ;
386
+ return Some ( NameOrNameRef :: Name ( name) ) ;
382
387
}
383
388
None
384
389
}
0 commit comments