Closed
Description
#![feature(unboxed_closures, associated_type_bounds)]
fn foo<F>(f: F) where
F: for<'a> FnOnce<(&'a i32,), Output: 'a> {}
fn main() {
foo(|x: &i32| -> &i32 { x });
}
produces:
error: internal compiler error: src/librustc_typeck/check/mod.rs:692: escaping bound vars in predicate Obligation(predicate=Binder(OutlivesPredicate(_, ReLateBound(DebruijnIndex(1), BrNamed(DefId(0:5 ~ playground[eb44]::foo[0]::'a[0]), 'a)))), depth=0)
--> src/main.rs:7:5
|
7 | foo(|x: &i32| -> &i32 { x }); // OK
| ^^^
This does not happen if written out in this form, even though I think it should be equivalent:
F: for<'a> FnOnce<(&'a i32,)>,
for<'a> <F as FnOnce<(&'a i32,)>>::Output: 'a,
May or may not be related to #70263.
Metadata
Metadata
Assignees
Labels
Area: Associated items (types, constants & functions)Category: This is a bug.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.`#![feature(associated_type_bounds)]`Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Medium priorityRelevant to the compiler team, which will review and decide on the PR/issue.ICE tracked in rust-lang/glacier.This issue requires a nightly compiler in some way.