@@ -11,26 +11,17 @@ use super::ITER_COUNT;
1111
1212pub ( crate ) fn check < ' tcx > ( cx : & LateContext < ' tcx > , expr : & Expr < ' _ > , recv : & ' tcx Expr < ' tcx > , iter_method : Symbol ) {
1313 let ty = cx. typeck_results ( ) . expr_ty ( recv) ;
14- let caller_type = if derefs_to_slice ( cx, recv, ty) . is_some ( ) {
15- "slice"
16- } else if ty. is_diag_item ( cx, sym:: Vec ) {
17- "Vec"
18- } else if ty. is_diag_item ( cx, sym:: VecDeque ) {
19- "VecDeque"
20- } else if ty. is_diag_item ( cx, sym:: HashSet ) {
21- "HashSet"
22- } else if ty. is_diag_item ( cx, sym:: HashMap ) {
23- "HashMap"
24- } else if ty. is_diag_item ( cx, sym:: BTreeMap ) {
25- "BTreeMap"
26- } else if ty. is_diag_item ( cx, sym:: BTreeSet ) {
27- "BTreeSet"
28- } else if ty. is_diag_item ( cx, sym:: LinkedList ) {
29- "LinkedList"
30- } else if ty. is_diag_item ( cx, sym:: BinaryHeap ) {
31- "BinaryHeap"
32- } else {
33- return ;
14+ let caller_type = match ty. opt_diag_name ( cx) {
15+ _ if derefs_to_slice ( cx, recv, ty) . is_some ( ) => "slice" ,
16+ Some ( sym:: Vec ) => "Vec" ,
17+ Some ( sym:: VecDeque ) => "VecDeque" ,
18+ Some ( sym:: HashSet ) => "HashSet" ,
19+ Some ( sym:: HashMap ) => "HashMap" ,
20+ Some ( sym:: BTreeMap ) => "BTreeMap" ,
21+ Some ( sym:: BTreeSet ) => "BTreeSet" ,
22+ Some ( sym:: LinkedList ) => "LinkedList" ,
23+ Some ( sym:: BinaryHeap ) => "BinaryHeap" ,
24+ _ => return ,
3425 } ;
3526 let mut applicability = Applicability :: MachineApplicable ;
3627 span_lint_and_sugg (
0 commit comments