2323
2424use  crate :: { EarlyContext ,  EarlyLintPass ,  LateContext ,  LateLintPass ,  LintContext } ; 
2525use  rustc:: hir:: map:: Map ; 
26+ use  rustc:: lint:: LintDiagnosticBuilder ; 
2627use  rustc:: traits:: misc:: can_type_implement_copy; 
2728use  rustc:: ty:: { self ,  layout:: VariantIdx ,  Ty ,  TyCtxt } ; 
2829use  rustc_ast_pretty:: pprust:: { self ,  expr_to_string} ; 
2930use  rustc_data_structures:: fx:: FxHashSet ; 
3031use  rustc_errors:: { Applicability ,  DiagnosticBuilder } ; 
31- use  rustc:: lint:: LintDiagnosticBuilder ; 
3232use  rustc_feature:: Stability ; 
3333use  rustc_feature:: { deprecated_attributes,  AttributeGate ,  AttributeTemplate ,  AttributeType } ; 
3434use  rustc_hir as  hir; 
@@ -107,7 +107,9 @@ impl BoxPointers {
107107    fn  check_heap_type ( & self ,  cx :  & LateContext < ' _ ,  ' _ > ,  span :  Span ,  ty :  Ty < ' _ > )  { 
108108        for  leaf_ty in  ty. walk ( )  { 
109109            if  leaf_ty. is_box ( )  { 
110-                 cx. struct_span_lint ( BOX_POINTERS ,  span,  |lint| lint. build ( & format ! ( "type uses owned (Box type) pointers: {}" ,  ty) ) . emit ( ) ) ; 
110+                 cx. struct_span_lint ( BOX_POINTERS ,  span,  |lint| { 
111+                     lint. build ( & format ! ( "type uses owned (Box type) pointers: {}" ,  ty) ) . emit ( ) 
112+                 } ) ; 
111113            } 
112114        } 
113115    } 
@@ -214,7 +216,12 @@ declare_lint! {
214216declare_lint_pass ! ( UnsafeCode  => [ UNSAFE_CODE ] ) ; 
215217
216218impl  UnsafeCode  { 
217-     fn  report_unsafe ( & self ,  cx :  & EarlyContext < ' _ > ,  span :  Span ,  decorate :  impl  for < ' a >  FnOnce ( LintDiagnosticBuilder < ' a > ) )  { 
219+     fn  report_unsafe ( 
220+         & self , 
221+         cx :  & EarlyContext < ' _ > , 
222+         span :  Span , 
223+         decorate :  impl  for < ' a >  FnOnce ( LintDiagnosticBuilder < ' a > ) , 
224+     )  { 
218225        // This comes from a macro that has `#[allow_internal_unsafe]`. 
219226        if  span. allows_unsafe ( )  { 
220227            return ; 
@@ -227,33 +234,40 @@ impl UnsafeCode {
227234impl  EarlyLintPass  for  UnsafeCode  { 
228235    fn  check_attribute ( & mut  self ,  cx :  & EarlyContext < ' _ > ,  attr :  & ast:: Attribute )  { 
229236        if  attr. check_name ( sym:: allow_internal_unsafe)  { 
230-             self . report_unsafe ( 
231-                 cx, 
232-                 attr. span , 
233-                 |lint| lint. build ( "`allow_internal_unsafe` allows defining \  
237+             self . report_unsafe ( cx,  attr. span ,  |lint| { 
238+                 lint. build ( 
239+                     "`allow_internal_unsafe` allows defining \  
234240                                                macros using unsafe without triggering \ 
235-                                                 the `unsafe_code` lint at their call site") . emit ( ) , 
236-             ) ; 
241+                                                 the `unsafe_code` lint at their call site", 
242+                 ) 
243+                 . emit ( ) 
244+             } ) ; 
237245        } 
238246    } 
239247
240248    fn  check_expr ( & mut  self ,  cx :  & EarlyContext < ' _ > ,  e :  & ast:: Expr )  { 
241249        if  let  ast:: ExprKind :: Block ( ref  blk,  _)  = e. kind  { 
242250            // Don't warn about generated blocks; that'll just pollute the output. 
243251            if  blk. rules  == ast:: BlockCheckMode :: Unsafe ( ast:: UserProvided )  { 
244-                 self . report_unsafe ( cx,  blk. span ,  |lint| lint. build ( "usage of an `unsafe` block" ) . emit ( ) ) ; 
252+                 self . report_unsafe ( cx,  blk. span ,  |lint| { 
253+                     lint. build ( "usage of an `unsafe` block" ) . emit ( ) 
254+                 } ) ; 
245255            } 
246256        } 
247257    } 
248258
249259    fn  check_item ( & mut  self ,  cx :  & EarlyContext < ' _ > ,  it :  & ast:: Item )  { 
250260        match  it. kind  { 
251261            ast:: ItemKind :: Trait ( _,  ast:: Unsafety :: Unsafe ,  ..)  => { 
252-                 self . report_unsafe ( cx,  it. span ,  |lint| lint. build ( "declaration of an `unsafe` trait" ) . emit ( ) ) 
262+                 self . report_unsafe ( cx,  it. span ,  |lint| { 
263+                     lint. build ( "declaration of an `unsafe` trait" ) . emit ( ) 
264+                 } ) 
253265            } 
254266
255267            ast:: ItemKind :: Impl  {  unsafety :  ast:: Unsafety :: Unsafe ,  .. }  => { 
256-                 self . report_unsafe ( cx,  it. span ,  |lint| lint. build ( "implementation of an `unsafe` trait" ) . emit ( ) ) 
268+                 self . report_unsafe ( cx,  it. span ,  |lint| { 
269+                     lint. build ( "implementation of an `unsafe` trait" ) . emit ( ) 
270+                 } ) 
257271            } 
258272
259273            _ => return , 
@@ -269,13 +283,16 @@ impl EarlyLintPass for UnsafeCode {
269283        _:  ast:: NodeId , 
270284    )  { 
271285        match  fk { 
272-             FnKind :: ItemFn ( _,  ast:: FnHeader  {  unsafety :  ast:: Unsafety :: Unsafe ,  .. } ,  ..)  => { 
273-                 self . report_unsafe ( cx,  span,  |lint| lint. build ( "declaration of an `unsafe` function" ) . emit ( ) ) 
274-             } 
286+             FnKind :: ItemFn ( _,  ast:: FnHeader  {  unsafety :  ast:: Unsafety :: Unsafe ,  .. } ,  ..)  => self 
287+                 . report_unsafe ( cx,  span,  |lint| { 
288+                     lint. build ( "declaration of an `unsafe` function" ) . emit ( ) 
289+                 } ) , 
275290
276291            FnKind :: Method ( _,  sig,  ..)  => { 
277292                if  sig. header . unsafety  == ast:: Unsafety :: Unsafe  { 
278-                     self . report_unsafe ( cx,  span,  |lint| lint. build ( "implementation of an `unsafe` method" ) . emit ( ) ) 
293+                     self . report_unsafe ( cx,  span,  |lint| { 
294+                         lint. build ( "implementation of an `unsafe` method" ) . emit ( ) 
295+                     } ) 
279296                } 
280297            } 
281298
@@ -286,7 +303,9 @@ impl EarlyLintPass for UnsafeCode {
286303    fn  check_trait_item ( & mut  self ,  cx :  & EarlyContext < ' _ > ,  item :  & ast:: AssocItem )  { 
287304        if  let  ast:: AssocItemKind :: Fn ( ref  sig,  None )  = item. kind  { 
288305            if  sig. header . unsafety  == ast:: Unsafety :: Unsafe  { 
289-                 self . report_unsafe ( cx,  item. span ,  |lint| lint. build ( "declaration of an `unsafe` method" ) . emit ( ) ) 
306+                 self . report_unsafe ( cx,  item. span ,  |lint| { 
307+                     lint. build ( "declaration of an `unsafe` method" ) . emit ( ) 
308+                 } ) 
290309            } 
291310        } 
292311    } 
@@ -372,11 +391,9 @@ impl MissingDoc {
372391
373392        let  has_doc = attrs. iter ( ) . any ( |a| has_doc ( a) ) ; 
374393        if  !has_doc { 
375-             cx. struct_span_lint ( 
376-                 MISSING_DOCS , 
377-                 cx. tcx . sess . source_map ( ) . def_span ( sp) , 
378-                 |lint| lint. build ( & format ! ( "missing documentation for {}" ,  desc) ) . emit ( ) , 
379-             ) ; 
394+             cx. struct_span_lint ( MISSING_DOCS ,  cx. tcx . sess . source_map ( ) . def_span ( sp) ,  |lint| { 
395+                 lint. build ( & format ! ( "missing documentation for {}" ,  desc) ) . emit ( ) 
396+             } ) ; 
380397        } 
381398    } 
382399} 
@@ -555,12 +572,13 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingCopyImplementations {
555572            return ; 
556573        } 
557574        if  can_type_implement_copy ( cx. tcx ,  param_env,  ty) . is_ok ( )  { 
558-             cx. struct_span_lint ( 
559-                 MISSING_COPY_IMPLEMENTATIONS , 
560-                 item. span , 
561-                 |lint| lint. build ( "type could implement `Copy`; consider adding `impl \  
562-                            Copy`") . emit ( ) , 
563-             ) 
575+             cx. struct_span_lint ( MISSING_COPY_IMPLEMENTATIONS ,  item. span ,  |lint| { 
576+                 lint. build ( 
577+                     "type could implement `Copy`; consider adding `impl \  
578+                            Copy`", 
579+                 ) 
580+                 . emit ( ) 
581+             } ) 
564582        } 
565583    } 
566584} 
@@ -609,12 +627,13 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDebugImplementations {
609627        } 
610628
611629        if  !self . impling_types . as_ref ( ) . unwrap ( ) . contains ( & item. hir_id )  { 
612-             cx. struct_span_lint ( 
613-                 MISSING_DEBUG_IMPLEMENTATIONS , 
614-                 item. span , 
615-                 |lint| lint. build ( "type does not implement `fmt::Debug`; consider adding `#[derive(Debug)]` \  
616-                            or a manual implementation") . emit ( ) , 
617-             ) 
630+             cx. struct_span_lint ( MISSING_DEBUG_IMPLEMENTATIONS ,  item. span ,  |lint| { 
631+                 lint. build ( 
632+                     "type does not implement `fmt::Debug`; consider adding `#[derive(Debug)]` \  
633+                            or a manual implementation", 
634+                 ) 
635+                 . emit ( ) 
636+             } ) 
618637        } 
619638    } 
620639} 
@@ -912,7 +931,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MutableTransmutes {
912931        match  get_transmute_from_to ( cx,  expr) . map ( |( ty1,  ty2) | ( & ty1. kind ,  & ty2. kind ) )  { 
913932            Some ( ( & ty:: Ref ( _,  _,  from_mt) ,  & ty:: Ref ( _,  _,  to_mt) ) )  => { 
914933                if  to_mt == hir:: Mutability :: Mut  && from_mt == hir:: Mutability :: Not  { 
915-                     cx. struct_span_lint ( MUTABLE_TRANSMUTES ,  expr. span ,  |lint| lint. build ( msg) . emit ( ) ) ; 
934+                     cx. struct_span_lint ( MUTABLE_TRANSMUTES ,  expr. span ,  |lint| { 
935+                         lint. build ( msg) . emit ( ) 
936+                     } ) ; 
916937                } 
917938            } 
918939            _ => ( ) , 
@@ -962,7 +983,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnstableFeatures {
962983        if  attr. check_name ( sym:: feature)  { 
963984            if  let  Some ( items)  = attr. meta_item_list ( )  { 
964985                for  item in  items { 
965-                     ctx. struct_span_lint ( UNSTABLE_FEATURES ,  item. span ( ) ,  |lint| lint. build ( "unstable feature" ) . emit ( ) ) ; 
986+                     ctx. struct_span_lint ( UNSTABLE_FEATURES ,  item. span ( ) ,  |lint| { 
987+                         lint. build ( "unstable feature" ) . emit ( ) 
988+                     } ) ; 
966989                } 
967990            } 
968991        } 
@@ -1244,15 +1267,14 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TrivialConstraints {
12441267                    ConstEvaluatable ( ..)  => continue , 
12451268                } ; 
12461269                if  predicate. is_global ( )  { 
1247-                     cx. struct_span_lint ( 
1248-                         TRIVIAL_BOUNDS , 
1249-                         span, 
1250-                         |lint| lint. build ( & format ! ( 
1270+                     cx. struct_span_lint ( TRIVIAL_BOUNDS ,  span,  |lint| { 
1271+                         lint. build ( & format ! ( 
12511272                            "{} bound {} does not depend on any type \  
12521273                                 or lifetime parameters", 
12531274                            predicate_kind_name,  predicate
1254-                         ) ) . emit ( ) , 
1255-                     ) ; 
1275+                         ) ) 
1276+                         . emit ( ) 
1277+                     } ) ; 
12561278                } 
12571279            } 
12581280        } 
0 commit comments