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