Skip to content

ICE: no enclosing_body_owner for hir_id #129215

Closed
@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

async const fn recurse(n: u32) -> u32 {
    if n == 0 {
        n
    } else {
        recurse(n - 1) 
    }
}




original:

//@ check-fail
//@ compile-flags: -Z tiny-const-eval-limit

#[rustfmt::skip]
async const fn recurse(n: u32) -> u32 {
    if n == 0 {
        n
    } else {
        recurse(n - 1) //~ ERROR is taking a long time
    }
}

const X: u32 = recurse(19);

fn main() {
    println!("{X}");
}

Version information

rustc 1.82.0-nightly (0f26ee4fd 2024-08-17)
binary: rustc
commit-hash: 0f26ee4fd95a1c046582dfb18892f520788e2c2c
commit-date: 2024-08-17
host: x86_64-unknown-linux-gnu
release: 1.82.0-nightly
LLVM version: 19.1.0

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

error[E0670]: `async fn` is not permitted in Rust 2015
 --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:5:1
  |
5 | async const fn recurse(n: u32) -> u32 {
  | ^^^^^ to use `async fn`, switch to Rust 2018 or later
  |
  = help: pass `--edition 2021` to `rustc`
  = note: for more on editions, read https://doc.rust-lang.org/edition-guide

error: expected one of `extern`, `fn`, `safe`, or `unsafe`, found keyword `const`
 --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:5:7
  |
5 | async const fn recurse(n: u32) -> u32 {
  | ------^^^^^
  | |     |
  | |     expected one of `extern`, `fn`, `safe`, or `unsafe`
  | help: `const` must come before `async`: `const async`
  |
  = note: keyword order for functions declaration is `pub`, `default`, `const`, `async`, `unsafe`, `extern`

error: functions cannot be both `const` and `async`
  --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:5:1
   |
5  |   async const fn recurse(n: u32) -> u32 {
   |   -^^^^ ^^^^^ `const` because of this
   |   |
   |  _`async` because of this
   | |
6  | |     if n == 0 {
7  | |         n
8  | |     } else {
9  | |         recurse(n - 1) 
10 | |     }
11 | | }
   | |_-

error[E0601]: `main` function not found in crate `mvce`
  --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:11:2
   |
11 | }
   |  ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs`

error[E0277]: `u32` is not a future
 --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:9:9
  |
9 |         recurse(n - 1) 
  |         ^^^^^^^^^^^^^^ `u32` is not a future
  |
  = help: the trait `Future` is not implemented for `u32`

error[E0277]: `u32` is not a future
 --> /tmp/icemaker_global_tempdir.aymIy9D67iB8/rustc_testrunner_tmpdir_reporting.mSQaM7ZX8tt3/mvce.rs:5:1
  |
5 | async const fn recurse(n: u32) -> u32 {
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `u32` is not a future
  |
  = help: the trait `Future` is not implemented for `u32`

error: internal compiler error: compiler/rustc_middle/src/hir/map/mod.rs:557:73: no `enclosing_body_owner` for hir_id `HirId(DefId(0:3 ~ mvce[5918]::recurse).0)`

thread 'rustc' panicked at compiler/rustc_middle/src/hir/map/mod.rs:557:73:
Box<dyn Any>
stack backtrace:
   0:     0x72af1cfc429d - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hce35dec2bed7e8e1
   1:     0x72af1d805297 - core::fmt::write::haaf8a728f3019c12
   2:     0x72af1eabbd91 - std::io::Write::write_fmt::hb0dc5188703aea0d
   3:     0x72af1cfc697b - std::panicking::default_hook::{{closure}}::h35c501ae74c82675
   4:     0x72af1cfc65ee - std::panicking::default_hook::hc1ddd62643c4c855
   5:     0x72af1c158729 - std[54b021f941472252]::panicking::update_hook::<alloc[8840b3d3a55bb7af]::boxed::Box<rustc_driver_impl[ec4d44b725e7aa11]::install_ice_hook::{closure#0}>>::{closure#0}
   6:     0x72af1cfc7297 - std::panicking::rust_panic_with_hook::h7960ad04eaeb646d
   7:     0x72af1c193111 - std[54b021f941472252]::panicking::begin_panic::<rustc_errors[2e519a482e3c741a]::ExplicitBug>::{closure#0}
   8:     0x72af1c186156 - std[54b021f941472252]::sys::backtrace::__rust_end_short_backtrace::<std[54b021f941472252]::panicking::begin_panic<rustc_errors[2e519a482e3c741a]::ExplicitBug>::{closure#0}, !>
   9:     0x72af1c181536 - std[54b021f941472252]::panicking::begin_panic::<rustc_errors[2e519a482e3c741a]::ExplicitBug>
  10:     0x72af1c19c0f1 - <rustc_errors[2e519a482e3c741a]::diagnostic::BugAbort as rustc_errors[2e519a482e3c741a]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  11:     0x72af1c75f6c4 - rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt::<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}
  12:     0x72af1c7452da - rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_opt::<rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  13:     0x72af1c74516b - rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_context_opt::<rustc_middle[10ec7aec7d9fdda3]::ty::context::tls::with_opt<rustc_middle[10ec7aec7d9fdda3]::util::bug::opt_span_bug_fmt<rustc_span[a5a4c6b08f7cf6f]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  14:     0x72af1a250ac0 - rustc_middle[10ec7aec7d9fdda3]::util::bug::bug_fmt
  15:     0x72af1d98bc34 - <rustc_middle[10ec7aec7d9fdda3]::hir::map::Map>::enclosing_body_owner
  16:     0x72af1d98c3fe - <rustc_middle[10ec7aec7d9fdda3]::hir::map::Map>::get_fn_id_for_return_block
  17:     0x72af1e7c42e4 - <rustc_hir_typeck[cd6451a3b3fe12c4]::fn_ctxt::FnCtxt>::get_fn_decl
  18:     0x72af1c42d09d - <rustc_hir_typeck[cd6451a3b3fe12c4]::coercion::CoerceMany<rustc_hir[9989108a6ccf70c1]::hir::Expr>>::report_return_mismatched_types
  19:     0x72af1da44f52 - rustc_hir_typeck[cd6451a3b3fe12c4]::check::check_fn
  20:     0x72af1dffbf1f - rustc_hir_typeck[cd6451a3b3fe12c4]::typeck
  21:     0x72af1dffb975 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>
  22:     0x72af1dad4bf9 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::VecCache<rustc_span[a5a4c6b08f7cf6f]::def_id::LocalDefId, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  23:     0x72af1dad3e15 - rustc_query_impl[69287ea093d06d1d]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  24:     0x72af1e050233 - rustc_middle[10ec7aec7d9fdda3]::query::plumbing::query_get_at::<rustc_query_system[1449707d44461b06]::query::caches::VecCache<rustc_span[a5a4c6b08f7cf6f]::def_id::LocalDefId, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>>
  25:     0x72af1e6d4a2d - rustc_hir_analysis[c0d9d1e917b71b24]::collect::type_of::type_of_opaque
  26:     0x72af1e6d4965 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>
  27:     0x72af1d825ea7 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefIdCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  28:     0x72af1ea3b276 - rustc_query_impl[69287ea093d06d1d]::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
  29:     0x72af1df545c0 - rustc_middle[10ec7aec7d9fdda3]::query::plumbing::query_get_at::<rustc_query_system[1449707d44461b06]::query::caches::DefIdCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>>
  30:     0x72af1ae7e80b - rustc_hir_analysis[c0d9d1e917b71b24]::collect::type_of::type_of
  31:     0x72af1d8271f0 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>
  32:     0x72af1d825ea7 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefIdCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  33:     0x72af1d825a67 - rustc_query_impl[69287ea093d06d1d]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
  34:     0x72af1df545c0 - rustc_middle[10ec7aec7d9fdda3]::query::plumbing::query_get_at::<rustc_query_system[1449707d44461b06]::query::caches::DefIdCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 8usize]>>>
  35:     0x72af1ae6a096 - rustc_hir_analysis[c0d9d1e917b71b24]::check::wfcheck::check_well_formed
  36:     0x72af1db9e287 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>
  37:     0x72af1db9e505 - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::VecCache<rustc_hir[9989108a6ccf70c1]::hir_id::OwnerId, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  38:     0x72af1db9e262 - rustc_query_impl[69287ea093d06d1d]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  39:     0x72af1db9f03f - rustc_hir_analysis[c0d9d1e917b71b24]::check::wfcheck::check_mod_type_wf
  40:     0x72af1db9ee6d - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>
  41:     0x72af1e75eb3b - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::DefaultCache<rustc_span[a5a4c6b08f7cf6f]::def_id::LocalModDefId, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  42:     0x72af1e75e8ed - rustc_query_impl[69287ea093d06d1d]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
  43:     0x72af1dad143b - rustc_hir_analysis[c0d9d1e917b71b24]::check_crate
  44:     0x72af1df84cbf - rustc_interface[f40e7651e6b02ea1]::passes::run_required_analyses
  45:     0x72af1e35c49e - rustc_interface[f40e7651e6b02ea1]::passes::analysis
  46:     0x72af1e35c471 - rustc_query_impl[69287ea093d06d1d]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[69287ea093d06d1d]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>
  47:     0x72af1e7867ee - rustc_query_system[1449707d44461b06]::query::plumbing::try_execute_query::<rustc_query_impl[69287ea093d06d1d]::DynamicConfig<rustc_query_system[1449707d44461b06]::query::caches::SingleCache<rustc_middle[10ec7aec7d9fdda3]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[69287ea093d06d1d]::plumbing::QueryCtxt, false>
  48:     0x72af1e78654f - rustc_query_impl[69287ea093d06d1d]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  49:     0x72af1e5d38ea - rustc_interface[f40e7651e6b02ea1]::interface::run_compiler::<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}
  50:     0x72af1e5b3210 - std[54b021f941472252]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_with_globals<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_pool_with_globals<rustc_interface[f40e7651e6b02ea1]::interface::run_compiler<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>
  51:     0x72af1e5b387a - <<std[54b021f941472252]::thread::Builder>::spawn_unchecked_<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_with_globals<rustc_interface[f40e7651e6b02ea1]::util::run_in_thread_pool_with_globals<rustc_interface[f40e7651e6b02ea1]::interface::run_compiler<core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>, rustc_driver_impl[ec4d44b725e7aa11]::run_compiler::{closure#0}>::{closure#1}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[5070cb7ec77c977]::result::Result<(), rustc_span[a5a4c6b08f7cf6f]::ErrorGuaranteed>>::{closure#1} as core[5070cb7ec77c977]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  52:     0x72af1e5b3beb - std::sys::pal::unix::thread::Thread::new::thread_start::he8fde62ed04f9a93
  53:     0x72af1fe0a39d - <unknown>
  54:     0x72af1fe8f49c - <unknown>
  55:                0x0 - <unknown>

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: rustc 1.82.0-nightly (0f26ee4fd 2024-08-17) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [typeck] type-checking `recurse`
#1 [type_of_opaque] computing type of opaque `recurse::{opaque#0}`
end of query stack
error: aborting due to 7 previous errors

Some errors have detailed explanations: E0277, E0601, E0670.
For more information about an error, try `rustc --explain E0277`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions