add test for Failed to normalize closure with TAIT #109020
Fixes #109020
This commit is contained in:
parent
5e0d8c3b62
commit
56ea366763
1 changed files with 41 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
// ICE Failed to normalize closure with TAIT
|
||||
// issue: rust-lang/rust#109020
|
||||
//@ check-pass
|
||||
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
type WithEmplacableForFn<'a> = impl EmplacableFn + 'a;
|
||||
|
||||
fn with_emplacable_for<'a, F, R>(mut f: F) -> R
|
||||
where
|
||||
F: for<'b> FnMut(Emplacable<WithEmplacableForFn<'b>>) -> R,
|
||||
{
|
||||
fn with_emplacable_for_inner<'a, R>(
|
||||
_: &'a (),
|
||||
_: &mut dyn FnMut(Emplacable<WithEmplacableForFn<'a>>) -> R,
|
||||
) -> R {
|
||||
fn _constrain(_: &mut ()) -> WithEmplacableForFn<'_> {
|
||||
()
|
||||
}
|
||||
loop {}
|
||||
}
|
||||
|
||||
with_emplacable_for_inner(&(), &mut f)
|
||||
}
|
||||
|
||||
trait EmplacableFn {}
|
||||
|
||||
impl EmplacableFn for () {}
|
||||
|
||||
struct Emplacable<F>
|
||||
where
|
||||
F: EmplacableFn,
|
||||
{
|
||||
phantom: PhantomData<F>,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
with_emplacable_for(|_| {});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue