Skip to content

ICE: assertion failed: assert_eq!(self.diverges.get(), Diverges::Maybe) in rustc_hir_typeck/src/expr.rs #141592

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
cushionbadak opened this issue May 26, 2025 · 0 comments
Assignees
Labels
C-bug Category: This is a bug. F-never_patterns `#![feature(never_patterns)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@cushionbadak
Copy link

Code

#![feature(never_patterns)]
#![allow(incomplete_features)]

fn main() {
    let _ = "12".lines().map(|!| [1]);
}

A mutant of glacier2's fixed/72372.rs

Meta

rustc --version --verbose:

rustc 1.89.0-nightly (283db70ac 2025-05-25)
binary: rustc
commit-hash: 283db70ace62a0ae704a624e43b68c2ee44b87a6
commit-date: 2025-05-25
host: aarch64-apple-darwin
release: 1.89.0-nightly
LLVM version: 20.1.5

Error output

command: rustc

thread 'rustc' panicked at compiler/rustc_hir_typeck/src/expr.rs:1802:13:
assertion `left == right` failed
  left: Always { span: never_4.rs:5:31: 5:32 (#0), custom_note: Some("any code following a never pattern is unreachable") }
 right: Maybe
Backtrace

thread 'rustc' panicked at compiler/rustc_hir_typeck/src/expr.rs:1802:13:
assertion `left == right` failed
  left: Always { span: never_4.rs:5:31: 5:32 (#0), custom_note: Some("any code following a never pattern is unreachable") }
 right: Maybe
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::assert_failed_inner
   3: core::panicking::assert_failed::<rustc_hir_typeck::diverges::Diverges, rustc_hir_typeck::diverges::Diverges>
   4: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
   5: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
   6: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_return_or_body_tail
   7: rustc_hir_typeck::check::check_fn
   8: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
   9: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  10: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_argument_types
  11: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
  12: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  13: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_decl
  14: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_block
  15: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
  16: <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_return_or_body_tail
  17: rustc_hir_typeck::check::check_fn
  18: rustc_hir_typeck::typeck_with_inspect::{closure#0}
  19: rustc_hir_typeck::typeck
      [... omitted 1 frame ...]
  20: <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis::check_crate::{closure#1}>::{closure#0}
  21: rustc_hir_analysis::check_crate
  22: rustc_interface::passes::run_required_analyses
  23: rustc_interface::passes::analysis
      [... omitted 1 frame ...]
  24: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
  25: 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/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

note: please attach the file at `/Users/jisukbyun/workspace/250203 scratch/rustc-ice-2025-05-26T15_22_30-94759.txt` to your bug report

query stack during panic:
#0 [typeck] type-checking `main`
#1 [analysis] running analysis passes on this crate
end of query stack

Bisects to

tool version: cargo-bisect-rustc 0.6.9
command: cargo-bisect-rustc --start=2023-05-01 --end=2025-05-22 --regress ice --preserve --script rustc -- never_4.rs

********************************************************************************
Regression in nightly-2024-01-24
********************************************************************************

fetching https://static.rust-lang.org/dist/2024-01-23/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2024-01-23: 40 B / 40 B [=======================================================] 100.00 % 825.50 KB/s converted 2024-01-23 to d5fd0997291ca0135401a39dff25c8a9c13b8961
fetching https://static.rust-lang.org/dist/2024-01-24/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2024-01-24: 40 B / 40 B [=======================================================] 100.00 % 938.10 KB/s converted 2024-01-24 to 5d3d3479d774754856db2db3e439dfb88ef3c52f
looking for regression commit between 2024-01-23 and 2024-01-24
fetching (via remote github) commits from max(d5fd0997291ca0135401a39dff25c8a9c13b8961, 2024-01-21) to 5d3d3479d774754856db2db3e439dfb88ef3c52f
ending github query because we found starting sha: d5fd0997291ca0135401a39dff25c8a9c13b8961
get_commits_between returning commits, len: 9
  commit[0] 2024-01-22: Auto merge of #120242 - matthiaskrgr:rollup-a93yj3i, r=matthiaskrgr
  commit[1] 2024-01-22: Auto merge of #120251 - matthiaskrgr:rollup-gttrw68, r=matthiaskrgr
  commit[2] 2024-01-23: Auto merge of #120017 - nnethercote:lint-api, r=oli-obk
  commit[3] 2024-01-23: Auto merge of #119892 - joboet:libs_use_assert_unchecked, r=Nilstrieb,cuviper
  commit[4] 2024-01-23: Auto merge of #117958 - risc0:erik/target-triple, r=davidtwco,Mark-Simulacrum
  commit[5] 2024-01-23: Auto merge of #116152 - cjgillot:unchunck, r=nnethercote
  commit[6] 2024-01-23: Auto merge of #119044 - RalfJung:intern-without-types, r=oli-obk
  commit[7] 2024-01-23: Auto merge of #119433 - taiki-e:rc-uninit-ref, r=Nilstrieb
  commit[8] 2024-01-23: Auto merge of #120281 - fmease:rollup-9nxail8, r=fmease
ERROR: no CI builds available between d5fd0997291ca0135401a39dff25c8a9c13b8961 and 5d3d3479d774754856db2db3e439dfb88ef3c52f within last 167 days

Notes

  • ICE location: compiler/rustc_hir_typeck/src/expr.rs Line-1781
    fn check_expr_array(
    &self,
    args: &'tcx [hir::Expr<'tcx>],
    expected: Expectation<'tcx>,
    expr: &'tcx hir::Expr<'tcx>,
    ) -> Ty<'tcx> {
    let element_ty = if !args.is_empty() {
    let coerce_to = expected
    .to_option(self)
    .and_then(|uty| match *self.try_structurally_resolve_type(expr.span, uty).kind() {
    ty::Array(ty, _) | ty::Slice(ty) => Some(ty),
    _ => None,
    })
    .unwrap_or_else(|| self.next_ty_var(expr.span));
    let mut coerce = CoerceMany::with_coercion_sites(coerce_to, args);
    assert_eq!(self.diverges.get(), Diverges::Maybe);

@rustbot label +F-never_patterns

@cushionbadak cushionbadak added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. labels May 26, 2025
@rustbot rustbot added needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. F-never_patterns `#![feature(never_patterns)]` labels May 26, 2025
@chenyukang chenyukang self-assigned this May 28, 2025
@Noratrieb Noratrieb removed the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Jun 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. F-never_patterns `#![feature(never_patterns)]` I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

4 participants