|
1 | 1 | use clippy_config::Conf; |
2 | | -use clippy_utils::diagnostics::span_lint_and_sugg; |
| 2 | +use clippy_utils::diagnostics::span_lint_and_then; |
3 | 3 | use clippy_utils::msrvs::{self, Msrv}; |
4 | 4 | use clippy_utils::res::{MaybeDef, MaybeQPath}; |
5 | 5 | use clippy_utils::source::snippet_with_context; |
@@ -75,22 +75,23 @@ impl<'tcx> LateLintPass<'tcx> for NonnullUncheckedOnBoxPtr { |
75 | 75 | _ => expr.span, |
76 | 76 | }; |
77 | 77 |
|
78 | | - let mut app = Applicability::MachineApplicable; |
79 | | - let arg_name = snippet_with_context(cx, arg.span, ctxt, "_", &mut app).0; |
80 | | - let sugg = if self.msrv.meets(cx, msrvs::NONNULL_FROM_MUT) { |
81 | | - format!("NonNull::from_mut(Box::leak({arg_name}))") |
82 | | - } else { |
83 | | - format!("NonNull::from(Box::leak({arg_name}))") |
84 | | - }; |
85 | | - |
86 | | - span_lint_and_sugg( |
| 78 | + span_lint_and_then( |
87 | 79 | cx, |
88 | 80 | NONNULL_UNCHECKED_ON_BOX_PTR, |
89 | 81 | span, |
90 | 82 | "use of `NonNull::new_unchecked` with `Box::into_raw`", |
91 | | - "try", |
92 | | - sugg, |
93 | | - app, |
| 83 | + |diag| { |
| 84 | + let mut app = Applicability::MachineApplicable; |
| 85 | + let arg_name = snippet_with_context(cx, arg.span, ctxt, "_", &mut app).0; |
| 86 | + |
| 87 | + let sugg = if self.msrv.meets(cx, msrvs::NONNULL_FROM_MUT) { |
| 88 | + format!("NonNull::from_mut(Box::leak({arg_name}))") |
| 89 | + } else { |
| 90 | + format!("NonNull::from(Box::leak({arg_name}))") |
| 91 | + }; |
| 92 | + |
| 93 | + diag.span_suggestion(span, "try", sugg, app); |
| 94 | + }, |
94 | 95 | ); |
95 | 96 | } |
96 | 97 | } |
|
0 commit comments