-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-ICEIssue: Clippy panicked, giving an Internal Compilation Error (ICE) ❄️Issue: Clippy panicked, giving an Internal Compilation Error (ICE) ❄️
Description
Summary
When unnecessary_safety_comment tries to check for comments over attributes recent changes make clippy to ICE when getting the span of the attribute.
To reproduce just enable unnecessary_safety_comment and add some statement (I think blocks as well) with an attribute on top.
#![warn(clippy::unnecessary_safety_comment)]
fn foo() -> i32 {
// SAFETY: hello
#[must_use]
return 33;
}
fn main() {
println!("Hello, world!");
}This only seems to happen in the nightly version, so to reproduce just RUST_BACKTRACE=1 cargo dev lint tmp/test.rs over a clone of master. (I'm currently at 2a6197e375398afbb501ac71f25c943a05031403)
Version
rustc 1.91.0-nightly (a1208bf76 2025-09-03)
binary: rustc
commit-hash: a1208bf765ba783ee4ebdc4c29ab0a0c215806ef
commit-date: 2025-09-03
host: aarch64-apple-darwin
release: 1.91.0-nightly
LLVM version: 21.1.0
Error output
Backtrace
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
Running `target/debug/clippy_dev lint tmp/test.rs`
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.13s
Running `target/debug/clippy-driver -L ./target/debug -Z no-codegen --edition 2024 tmp/test.rs`
warning: `#[must_use]` attribute cannot be used on expressions
--> tmp/test.rs:5:5
|
5 | #[must_use]
| ^^^^^^^^^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= help: `#[must_use]` can be applied to functions, data types, unions, and traits
= note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
warning: function `foo` is never used
--> tmp/test.rs:3:4
|
3 | fn foo() -> i32 {
| ^^^
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
thread 'rustc' (1222232) panicked at /Users/teofr/.rustup/toolchains/nightly-2025-09-04-aarch64-apple-darwin/lib/rustlib/rustc-src/rust/compiler/rustc_hir/src/hir.rs:1323:18:
can't get the span of an arbitrary parsed attribute: Parsed(MustUse { span: tmp/test.rs:5:5: 5:16 (#0), reason: None })
stack backtrace:
0: __rustc::rust_begin_unwind
1: core::panicking::panic_fmt
2: <rustc_hir::hir::Attribute as rustc_ast::attr::AttributeExt>::span
at /Users/teofr/.rustup/toolchains/nightly-2025-09-04-aarch64-apple-darwin/lib/rustlib/rustc-src/rust/compiler/rustc_hir/src/hir.rs:1323:18
3: rustc_hir::hir::Attribute::span
at /Users/teofr/.rustup/toolchains/nightly-2025-09-04-aarch64-apple-darwin/lib/rustlib/rustc-src/rust/compiler/rustc_hir/src/hir.rs:1447:9
4: clippy_lints::undocumented_unsafe_blocks::include_attrs_in_span::{{closure}}
at ./clippy_lints/src/undocumented_unsafe_blocks.rs:481:21
5: <core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold
at /Users/teofr/.rustup/toolchains/nightly-2025-09-04-aarch64-apple-darwin/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:255:27
6: clippy_lints::undocumented_unsafe_blocks::include_attrs_in_span
at ./clippy_lints/src/undocumented_unsafe_blocks.rs:477:45
7: clippy_lints::undocumented_unsafe_blocks::stmt_has_safety_comment
at ./clippy_lints/src/undocumented_unsafe_blocks.rs:579:16
8: <clippy_lints::undocumented_unsafe_blocks::UndocumentedUnsafeBlocks as rustc_lint::passes::LateLintPass>::check_stmt
at ./clippy_lints/src/undocumented_unsafe_blocks.rs:172:17
9: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>::with_lint_attrs::<<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_stmt::{closure#0}>
10: rustc_hir::intravisit::walk_block::<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>
11: rustc_hir::intravisit::walk_expr::<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>
12: rustc_hir::intravisit::walk_body::<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>
13: rustc_hir::intravisit::walk_fn::<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>
14: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>::with_param_env::<<rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_item::{closure#0}::{closure#0}>
15: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_item
16: rustc_lint::late::check_crate::{closure#0}
17: rustc_lint::late::check_crate
18: rustc_interface::passes::analysis::{closure#0}
19: rustc_interface::passes::analysis
[... omitted 1 frame ...]
20: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
21: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml
note: please make sure that you have updated to the latest nightly
note: rustc 1.91.0-nightly (a1208bf76 2025-09-03) running on aarch64-apple-darwin
note: compiler flags: -Z no-codegen
query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack
note: Clippy version: clippy 0.1.91 (2a6197e375 2025-09-16)
warning: 2 warnings emitted ```
</p>
</details>
<!-- TRIAGEBOT_START -->
<!-- TRIAGEBOT_ASSIGN_START -->
<!-- TRIAGEBOT_ASSIGN_END -->
<!-- TRIAGEBOT_END -->
Metadata
Metadata
Assignees
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-ICEIssue: Clippy panicked, giving an Internal Compilation Error (ICE) ❄️Issue: Clippy panicked, giving an Internal Compilation Error (ICE) ❄️