-
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
pub trait NumericLike:Sized{
fn saturating_add_usize(self, i: usize) -> Self;
fn saturating_sub_usize(self, i: usize) -> Self;
}
macro_rules! impl_primitive {
(
$ty:ty,
saturating_add_usize: $self1:ident, $i1:ident => $saturating_add_usize:expr,
saturating_sub_usize: $self2:ident, $i2:ident => $saturating_sub_usize:expr,
$metadata:ident => $precision:expr,
$float:ident => $from_float:expr,
) => {
impl NumericLike for $ty {
fn saturating_add_usize($self1, $i1: usize) -> Self {
$saturating_add_usize
}
fn saturating_sub_usize($self2, $i2: usize) -> Self {
$saturating_sub_usize
}
}
}
}
macro_rules! impl_number_signed {
($(($ty:ty, $unsigned:ty),)*) => {
$(
impl_primitive! {
$ty,
saturating_add_usize: self, i => {
self.saturating_add_unsigned(<$unsigned>::try_from(i).unwrap_or_else(|_| <$unsigned>::max_value(),
// panic line here ^^^^^^^^^^^ 33:107 to 33:118
// ^^^^^^^^^ 33:107 to 33:116
))
},
saturating_sub_usize: self, i => {
self.saturating_sub_unsigned(<$unsigned>::try_from(i).unwrap_or_else(|_| <$unsigned>::max_value()))
},
metadata => { metadata.precision.map(|n| n as f64) },
float => { float.round() as $ty },
}
)*
};
}
impl_number_signed! {
(i8, u8),
}
Version
rustc 1.91.0-beta.4 (aa7859c0d 2025-09-27)
binary: rustc
commit-hash: aa7859c0dec2de6c9cab34b03028bcef7b1fc25d
commit-date: 2025-09-27
host: x86_64-unknown-linux-gnu
release: 1.91.0-beta.4
LLVM version: 21.1.1
Error output
Backtrace
thread 'rustc' (198485) panicked at compiler/rustc_errors/src/lib.rs:385:17:
assertion `left == right` failed: all spans must be disjoint
left: Some([SubstitutionPart { span: src/lib.rs:33:107: 33:118 (#4), snippet: "MAX" }, SubstitutionPart { span: src/lib.rs:33:107: 33:116 (#4), snippet: "::" }])
right: None
stack backtrace:
0: __rustc::rust_begin_unwind
1: core::panicking::panic_fmt
2: core::panicking::assert_failed_inner
3: core::panicking::assert_failed::<core::option::Option<&[rustc_errors::SubstitutionPart; 2]>, core::option::Option<&[rustc_errors::SubstitutionPart; 2]>>
4: <core::iter::adapters::filter_map::FilterMap<core::iter::adapters::cloned::Cloned<core::iter::adapters::filter::Filter<core::slice::iter::Iter<rustc_errors::Substitution>, <rustc_errors::CodeSuggestion>::splice_lines::{closure#0}>>, <rustc_errors::CodeSuggestion>::splice_lines::{closure#1}> as core::iter::traits::iterator::Iterator>::next
5: <rustc_errors::emitter::HumanEmitter>::emit_suggestion_default
6: <rustc_errors::emitter::HumanEmitter as rustc_errors::emitter::Emitter>::emit_diagnostic
7: <rustc_errors::json::Diagnostic>::from_errors_diagnostic
8: <rustc_errors::json::JsonEmitter as rustc_errors::emitter::Emitter>::emit_diagnostic
9: <rustc_errors::DiagCtxtInner>::emit_diagnostic::{closure#3}
10: rustc_interface::callbacks::track_diagnostic::<core::option::Option<rustc_span::ErrorGuaranteed>>
11: <rustc_errors::DiagCtxtInner>::emit_diagnostic
12: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
13: <() as rustc_errors::diagnostic::EmissionGuarantee>::emit_producing_guarantee
14: rustc_middle::lint::lint_level::lint_level_impl
15: <rustc_lint::context::LateContext as rustc_lint::context::LintContext>::opt_span_lint::<rustc_span::span_encoding::Span, clippy_utils::diagnostics::span_lint_and_then<rustc_lint::context::LateContext, rustc_span::span_encoding::Span, &str, <clippy_lints::legacy_numeric_constants::LegacyNumericConstants as rustc_lint::passes::LateLintPass>::check_expr::{closure#1}>::{closure#0}>
16: <clippy_lints::legacy_numeric_constants::LegacyNumericConstants as rustc_lint::passes::LateLintPass>::check_expr
17: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
18: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
19: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_nested_body
20: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_fn
21: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
22: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
23: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
24: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
25: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
26: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
27: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_block
28: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
29: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
30: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_block
31: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr::{closure#0}::{closure#0}
32: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
33: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_nested_body
34: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_fn
35: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass> as rustc_hir::intravisit::Visitor>::visit_nested_item
36: <rustc_lint::late::LateContextAndPass<rustc_lint::late::RuntimeCombinedLateLintPass>>::process_mod
37: rustc_lint::late::check_crate::{closure#0}
38: rustc_lint::late::check_crate
39: rustc_interface::passes::analysis
[... omitted 1 frame ...]
40: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
41: 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: rustc 1.91.0-beta.4 (aa7859c0d 2025-09-27) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [analysis] running analysis passes on this crate
end of query stack
note: Clippy version: clippy 0.1.91 (aa7859c0de 2025-09-27)
error: could not compile `tmp` (lib)
Caused by:
process didn't exit successfully: `/home/sofe/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/bin/clippy-driver /home/sofe/.rustup/toolchains/beta-x86_64-unknown-linux-gnu/bin/rustc --crate-name tmp --edition=2024 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --diagnostic-width=238 --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --check-cfg 'cfg(docsrs,test)' --check-cfg 'cfg(feature, values())' -C metadata=10a479b13c283cde -C extra-filename=-bd475d7d96085378 --out-dir /home/sofe/tmp/target/debug/deps -C incremental=/home/sofe/tmp/target/debug/incremental -L dependency=/home/sofe/tmp/target/debug/deps` (exit status: 101)
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) ❄️