Auto merge of #10106 - koka831:fix/10084, r=Alexendoo

Fix FP in `unnecessary_safety_comment`

Fix https://github.com/rust-lang/rust-clippy/issues/10084

changelog: FP: [`unnecessary_safety_comment`]: No longer lints code inside macros
[#10106](https://github.com/rust-lang/rust-clippy/pull/10106)
<!-- changelog_checked -->
This commit is contained in:
bors 2023-01-22 14:10:16 +00:00
commit a9c251f11d
2 changed files with 29 additions and 0 deletions

View File

@ -263,6 +263,18 @@ fn expr_has_unnecessary_safety_comment<'tcx>(
expr: &'tcx hir::Expr<'tcx>, expr: &'tcx hir::Expr<'tcx>,
comment_pos: BytePos, comment_pos: BytePos,
) -> Option<Span> { ) -> Option<Span> {
if cx.tcx.hir().parent_iter(expr.hir_id).any(|(_, ref node)| {
matches!(
node,
Node::Block(&Block {
rules: BlockCheckMode::UnsafeBlock(UnsafeSource::UserProvided),
..
}),
)
}) {
return None;
}
// this should roughly be the reverse of `block_parents_have_safety_comment` // this should roughly be the reverse of `block_parents_have_safety_comment`
if for_each_expr_with_closures(cx, expr, |expr| match expr.kind { if for_each_expr_with_closures(cx, expr, |expr| match expr.kind {
hir::ExprKind::Block( hir::ExprKind::Block(

View File

@ -48,4 +48,21 @@ fn unnecessary_on_stmt_and_expr() -> u32 {
24 24
} }
mod issue_10084 {
unsafe fn bar() -> i32 {
42
}
macro_rules! foo {
() => {
// SAFETY: This is necessary
unsafe { bar() }
};
}
fn main() {
foo!();
}
}
fn main() {} fn main() {}