rust-lang/rust

ICE:can't get the span of an arbitrary parsed attribute: Parsed(Coroutine(<source>:28:32: 28:44 (#0)))

Opened this issue · 6 comments

This also seems to be an ICE caused by converting the closure to a function pointer. I'm not sure if it's a duplicate of #146837 (which I accidentally filed with another account, sorry), or if they are both duplicates of some other issue.

Code

#![feature(coroutines, stmt_expr_attributes)]

const _: for<'a> fn() -> i32 = #[coroutine] || -> i32 { yield 0; return 1; };

fn main(){}

Meta

rustc --version --verbose:

rustc 1.92.0-nightly (dd7fda570 2025-09-20)
binary: rustc
commit-hash: dd7fda570040e8a736f7d8bc28ddd1b444aabc82
commit-date: 2025-09-20
host: x86_64-unknown-linux-gnu
release: 1.92.0-nightly
LLVM version: 21.1.1

Error output

thread 'rustc' (3) panicked at /rustc-dev/7c275d09ea6b953d2cca169667184a7214bd14c7/compiler/rustc_hir/src/hir.rs:1323:18:
can't get the span of an arbitrary parsed attribute: Parsed(Coroutine(<source>:28:32: 28:44 (#0)))
Backtrace

stack backtrace:
   0:     0x7b706be05953 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h1d9a860939142303
   1:     0x7b706c601fc4 - core::fmt::write::h4cde2f6e6eca889f
   2:     0x7b706bdba5f1 - std::io::Write::write_fmt::hbbb02a45894db6e0
   3:     0x7b706bdcb5d2 - std::sys::backtrace::BacktraceLock::print::hfcdaff63564fa703
   4:     0x7b706bdd1539 - std::panicking::default_hook::{{closure}}::hcc588fdbd9e0eddf
   5:     0x7b706bdd1063 - std::panicking::default_hook::h21841b6cba7fa436
   6:     0x7b706adf5bd7 - std[6c96415bc1a38016]::panicking::update_hook::<alloc[c6e2df4d00e1f0b6]::boxed::Box<rustc_driver_impl[459800387efcc559]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7b706bdd195f - std::panicking::panic_with_hook::hedf05123aa8b61bb
   8:     0x7b706bdd171a - std::panicking::panic_handler::{{closure}}::h956f7c5977a5ec91
   9:     0x7b706bdcb709 - std::sys::backtrace::__rust_end_short_backtrace::h743f27db24eccdeb
  10:     0x7b706bdac05d - __rustc[dd6286f626093c3b]::rust_begin_unwind
  11:     0x7b70690928c0 - core::panicking::panic_fmt::h4f3e86766fc85179
  12:     0x7b706e06a7db - <rustc_hir_typeck[ec5df76106ecc9bb]::fn_ctxt::FnCtxt>::precedence::{closure#0}.llvm.14209757712867987235.cold
  13:     0x7b706ca76c6d - <rustc_hir[f64a1fb3a7caff8d]::hir::Expr>::precedence
  14:     0x7b706b1050c5 - <rustc_hir_typeck[ec5df76106ecc9bb]::fn_ctxt::FnCtxt>::suggest_deref_ref_or_into
  15:     0x7b706b0cc144 - <rustc_hir_typeck[ec5df76106ecc9bb]::fn_ctxt::FnCtxt>::emit_type_mismatch_suggestions
  16:     0x7b706b0c7b63 - <rustc_hir_typeck[ec5df76106ecc9bb]::fn_ctxt::FnCtxt>::emit_coerce_suggestions
  17:     0x7b706ca70ab7 - rustc_hir_typeck[ec5df76106ecc9bb]::typeck_with_inspect::{closure#0}
  18:     0x7b706ca662b6 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  19:     0x7b706c7e74c4 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  20:     0x7b706c7e6e49 - rustc_query_impl[8ceca73aa722394f]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  21:     0x7b706d0e8a3a - rustc_mir_build[a421b28dce73fa3]::thir::pattern::check_match::check_match
  22:     0x7b706d0e7e1b - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::check_match::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>>
  23:     0x7b706ce976ef - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  24:     0x7b706ca07b89 - rustc_query_impl[8ceca73aa722394f]::query_impl::check_match::get_query_non_incr::__rust_end_short_backtrace
  25:     0x7b706ca07c9a - rustc_mir_build[a421b28dce73fa3]::builder::build_mir
  26:     0x7b706c607781 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  27:     0x7b706c7e74c4 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  28:     0x7b706c7e6f09 - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
  29:     0x7b706d129635 - rustc_mir_transform[ff5e13a6e501cd2c]::mir_const_qualif
  30:     0x7b706d1295a9 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_const_qualif::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 4usize]>>
  31:     0x7b706d128a4b - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::DefIdCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 4usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  32:     0x7b706d12878a - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_const_qualif::get_query_non_incr::__rust_end_short_backtrace
  33:     0x7b70697b6fdd - rustc_mir_transform[ff5e13a6e501cd2c]::mir_promoted
  34:     0x7b706d088c56 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 16usize]>>
  35:     0x7b706d088f39 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  36:     0x7b706d088aa6 - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_promoted::get_query_non_incr::__rust_end_short_backtrace
  37:     0x7b706d7ae323 - rustc_borrowck[dd44c889f7481f64]::mir_borrowck
  38:     0x7b706d7ae1dd - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  39:     0x7b706c7e74c4 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  40:     0x7b706c7ebe09 - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
  41:     0x7b706d1705c9 - rustc_mir_transform[ff5e13a6e501cd2c]::mir_drops_elaborated_and_const_checked
  42:     0x7b706d16fc59 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  43:     0x7b706c7e74c4 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_data_structures[e568e5fb65a8620a]::vec_cache::VecCache<rustc_span[9408016a182fdcc0]::def_id::LocalDefId, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[44f2cb83942a7389]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  44:     0x7b706c7e6c09 - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
  45:     0x7b706d118d4a - rustc_mir_transform[ff5e13a6e501cd2c]::mir_for_ctfe
  46:     0x7b706d118bef - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::mir_for_ctfe::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>
  47:     0x7b706c61ad7a - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::DefIdCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  48:     0x7b706d270a23 - rustc_query_impl[8ceca73aa722394f]::query_impl::mir_for_ctfe::get_query_non_incr::__rust_end_short_backtrace
  49:     0x7b706d270bf7 - <rustc_const_eval[77c235cee62e82ee]::interpret::eval_context::InterpCx<rustc_const_eval[77c235cee62e82ee]::const_eval::machine::CompileTimeMachine>>::load_mir
  50:     0x7b706d271bdd - rustc_const_eval[77c235cee62e82ee]::const_eval::eval_queries::eval_to_allocation_raw_provider
  51:     0x7b706d27174e - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 24usize]>>
  52:     0x7b706d267420 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::DefaultCache<rustc_middle[e11099e36afb5411]::ty::PseudoCanonicalInput<rustc_middle[e11099e36afb5411]::mir::interpret::GlobalId>, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  53:     0x7b706d266fc7 - rustc_query_impl[8ceca73aa722394f]::query_impl::eval_to_allocation_raw::get_query_non_incr::__rust_end_short_backtrace
  54:     0x7b706d2695ad - rustc_const_eval[77c235cee62e82ee]::const_eval::eval_queries::eval_to_const_value_raw_provider
  55:     0x7b706d2693c0 - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::eval_to_const_value_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 24usize]>>
  56:     0x7b706d268b12 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::DefaultCache<rustc_middle[e11099e36afb5411]::ty::PseudoCanonicalInput<rustc_middle[e11099e36afb5411]::mir::interpret::GlobalId>, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 24usize]>>, false, true, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  57:     0x7b706d268691 - rustc_query_impl[8ceca73aa722394f]::query_impl::eval_to_const_value_raw::get_query_non_incr::__rust_end_short_backtrace
  58:     0x7b706d0c9a90 - <rustc_middle[e11099e36afb5411]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[1618d3df19afa2f8]::check_crate::{closure#2}>::{closure#0}
  59:     0x7b706d0c8a4d - rustc_hir_analysis[1618d3df19afa2f8]::check_crate
  60:     0x7b706c7e8bb0 - rustc_interface[f4ad0248271d71d8]::passes::analysis
  61:     0x7b706c7e886d - rustc_query_impl[8ceca73aa722394f]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ceca73aa722394f]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 0usize]>>
  62:     0x7b706d665526 - rustc_query_system[44f2cb83942a7389]::query::plumbing::try_execute_query::<rustc_query_impl[8ceca73aa722394f]::DynamicConfig<rustc_query_system[44f2cb83942a7389]::query::caches::SingleCache<rustc_middle[e11099e36afb5411]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[8ceca73aa722394f]::plumbing::QueryCtxt, false>
  63:     0x7b706d66517c - rustc_query_impl[8ceca73aa722394f]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  64:     0x7b706d872d4f - rustc_interface[f4ad0248271d71d8]::passes::create_and_enter_global_ctxt::<core[88dcab6addd45e6c]::option::Option<rustc_interface[f4ad0248271d71d8]::queries::Linker>, rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  65:     0x7b706d7e96be - rustc_interface[f4ad0248271d71d8]::interface::run_compiler::<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}
  66:     0x7b706d7482f8 - std[6c96415bc1a38016]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_with_globals<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_pool_with_globals<rustc_interface[f4ad0248271d71d8]::interface::run_compiler<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  67:     0x7b706d747fdc - <<std[6c96415bc1a38016]::thread::Builder>::spawn_unchecked_<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_with_globals<rustc_interface[f4ad0248271d71d8]::util::run_in_thread_pool_with_globals<rustc_interface[f4ad0248271d71d8]::interface::run_compiler<(), rustc_driver_impl[459800387efcc559]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[88dcab6addd45e6c]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  68:     0x7b706d74e68d - std::sys::thread::unix::Thread::new::thread_start::hb28ad79a6a69b48c
  69:     0x7b7066e94ac3 - <unknown>
  70:     0x7b7066f26850 - <unknown>
  71:                0x0 - <unknown>

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 `/app/rustc-ice-2025-09-21T08_30_04-1.txt` to your bug report

note: compiler flags: -C debuginfo=2 --crate-type bin -C linker=/opt/compiler-explorer/gcc-15.2.0/bin/gcc

query stack during panic:
#0 [typeck] type-checking `_`
#1 [check_match] match-checking `_`
... and 9 other queries... use `env RUST_BACKTRACE=1` to see the full query stack
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: `TypeError` when attempting coercion but no error emitted
  --> <source>:28:45
   |
28 | const _: for<'a> fn() -> i32 = #[coroutine] || -> i32 { yield 0; return 1; };
   |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: delayed at compiler/rustc_hir_typeck/src/demand.rs:276:47 - disabled backtrace
  --> <source>:28:45
   |
28 | const _: for<'a> fn() -> i32 = #[coroutine] || -> i32 { yield 0; return 1; };
   |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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 `/app/rustc-ice-2025-09-21T08_30_04-1.txt` to your bug report

note: compiler flags: -C debuginfo=2 --crate-type bin -C linker=/opt/compiler-explorer/gcc-15.2.0/bin/gcc

query stack during panic:
end of query stack

#![feature(coroutines, stmt_expr_attributes)]

fn main() {
    let _: fn() = #[coroutine] || -> () {};
}

this is probably the same root cause as #143094 , not sure if we need a single ticket for every attribute that is applies to

searched nightlies: from nightly-2025-06-23 to nightly-2025-09-20
regressed nightly: nightly-2025-08-08
searched commit range: 7d82b83...2fd855f
regressed commit: 6bcdcc7

Oh, I never got pinged here but this is quite old already... I'll take a look

am looking into this, might take a few separate changes to fix I'm afraid.