@@ -344,7 +344,7 @@ impl<'tcx> LateLintPass<'tcx> for ArbitrarySourceItemOrdering {
344
344
struct CurItem < ' a > {
345
345
item : & ' a Item < ' a > ,
346
346
order : usize ,
347
- name : String ,
347
+ name : Option < String > ,
348
348
}
349
349
let mut cur_t: Option < CurItem < ' _ > > = None ;
350
350
@@ -368,7 +368,7 @@ impl<'tcx> LateLintPass<'tcx> for ArbitrarySourceItemOrdering {
368
368
let ident = if let Some ( ident) = item. kind . ident ( ) {
369
369
ident
370
370
} else if let ItemKind :: Impl ( _) = item. kind
371
- && ! get_item_name ( item) . is_empty ( )
371
+ && get_item_name ( item) . is_some ( )
372
372
{
373
373
rustc_span:: Ident :: empty ( ) // FIXME: a bit strange, is there a better way to do it?
374
374
} else {
@@ -495,7 +495,7 @@ fn convert_module_item_kind(value: &ItemKind<'_>) -> SourceItemOrderingModuleIte
495
495
/// further in the [Rust Reference, Paths Chapter][rust_ref].
496
496
///
497
497
/// [rust_ref]: https://doc.rust-lang.org/reference/paths.html#crate-1
498
- fn get_item_name ( item : & Item < ' _ > ) -> String {
498
+ fn get_item_name ( item : & Item < ' _ > ) -> Option < String > {
499
499
match item. kind {
500
500
ItemKind :: Impl ( im) => {
501
501
if let TyKind :: Path ( path) = im. self_ty . kind {
@@ -515,27 +515,19 @@ fn get_item_name(item: &Item<'_>) -> String {
515
515
}
516
516
517
517
segs. push ( String :: new ( ) ) ;
518
- segs. join ( "!!" )
518
+ Some ( segs. join ( "!!" ) )
519
519
} ,
520
520
QPath :: TypeRelative ( _, _path_seg) => {
521
521
// This case doesn't exist in the clippy tests codebase.
522
- String :: new ( )
522
+ None
523
523
} ,
524
- QPath :: LangItem ( _, _) => String :: new ( ) ,
524
+ QPath :: LangItem ( _, _) => None ,
525
525
}
526
526
} else {
527
527
// Impls for anything that isn't a named type can be skipped.
528
- String :: new ( )
528
+ None
529
529
}
530
530
} ,
531
- // FIXME: `Ident::empty` for anonymous items is a bit strange, is there
532
- // a better way to do it?
533
- _ => item
534
- . kind
535
- . ident ( )
536
- . unwrap_or ( rustc_span:: Ident :: empty ( ) )
537
- . name
538
- . as_str ( )
539
- . to_owned ( ) ,
531
+ _ => item. kind . ident ( ) . map ( |name| name. as_str ( ) . to_owned ( ) ) ,
540
532
}
541
533
}
0 commit comments