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