Closed
Description
Hello,
I am getting an ICE while "playing" with unboxed_closure
Code
MCVE can be found here: #76168 (comment)
Original
#![feature(unboxed_closures)]
use futures::executor::block_on;
use std::future::Future;
async fn walk<F>(mut filter: F)
where
for<'a> F: FnMut<(&'a u32,)> + 'a,
for<'a> <F as FnOnce<(&'a u32,)>>::Output: Future<Output = bool> + 'a,
{
let res = filter(&5u32).await;
println!("res: {}", res);
}
fn main() {
block_on(async { walk(|&i| async move { true }).await });
}
Meta
rustc --version --verbose
: (from Playground)
rustc 1.48.0-nightly (d006f5734 2020-08-28) running on x86_64-unknown-linux-gnu
Error output
error: internal compiler error: src/librustc_mir/borrow_check/universal_regions.rs:768:36: cannot convert `RePlaceholder(Placeholder { universe: U5, name: BrNamed(DefId(0:8 ~ playground[a09e]::walk[0]::'a[1]), 'a) })` to a region vid
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:918:9
Backtrace
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:918:9
stack backtrace:
0: std::panicking::begin_panic
1: rustc_errors::HandlerInner::bug
2: rustc_errors::Handler::bug
3: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
4: rustc_middle::ty::context::tls::with_opt::{{closure}}
5: rustc_middle::ty::context::tls::with_opt
6: rustc_middle::util::bug::opt_span_bug_fmt
7: rustc_middle::util::bug::bug_fmt
8: rustc_mir::borrow_check::universal_regions::UniversalRegionIndices::to_region_vid::{{closure}}
9: rustc_mir::borrow_check::universal_regions::UniversalRegionIndices::to_region_vid
10: rustc_mir::borrow_check::region_infer::RegionInferenceContext::eval_verify_bound
11: rustc_mir::borrow_check::region_infer::RegionInferenceContext::eval_verify_bound
12: rustc_mir::borrow_check::region_infer::RegionInferenceContext::solve
13: rustc_mir::borrow_check::nll::compute_regions
14: rustc_mir::borrow_check::do_mir_borrowck
15: rustc_infer::infer::InferCtxtBuilder::enter
16: rustc_mir::borrow_check::mir_borrowck
17: core::ops::function::FnOnce::call_once
18: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::mir_borrowck>::compute
19: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
20: rustc_data_structures::stack::ensure_sufficient_stack
21: rustc_query_system::query::plumbing::get_query_impl
22: rustc_typeck::collect::type_of::type_of
23: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
24: rustc_data_structures::stack::ensure_sufficient_stack
25: rustc_query_system::query::plumbing::get_query_impl
26: rustc_middle::ty::util::OpaqueTypeExpander::expand_opaque_ty
27: rustc_middle::ty::util::<impl rustc_middle::ty::context::TyCtxt>::try_expand_impl_trait_type
28: rustc_typeck::check::check_item_type
29: rustc_middle::hir::map::Map::visit_item_likes_in_module
30: rustc_typeck::check::check_mod_item_types
31: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::check_mod_item_types>::compute
32: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
33: rustc_data_structures::stack::ensure_sufficient_stack
34: rustc_query_system::query::plumbing::get_query_impl
35: rustc_query_system::query::plumbing::ensure_query_impl
36: rustc_session::utils::<impl rustc_session::session::Session>::time
37: rustc_typeck::check_crate
38: rustc_interface::passes::analysis
39: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::analysis>::compute
40: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
41: rustc_data_structures::stack::ensure_sufficient_stack
42: rustc_query_system::query::plumbing::get_query_impl
43: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
44: rustc_span::with_source_map
45: rustc_interface::interface::create_compiler_and_run
46: scoped_tls::ScopedKey<T>::set
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Metadata
Metadata
Assignees
Labels
Area: Async & AwaitArea: The borrow checkerArea: Closures (`|…| { … }`)Async-await issues that have been triaged during a working group meeting.Category: This is a bug.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️High priorityRelevant to the compiler team, which will review and decide on the PR/issue.ICE tracked in rust-lang/glacier.Performance or correctness regression from one stable version to another.
Type
Projects
Status
Done