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
@rustbot claim
am looking into this, might take a few separate changes to fix I'm afraid.