add test for Failed to normalize closure with TAIT #109020
Fixes #109020
This commit is contained in:
parent
5e0d8c3b62
commit
56ea366763
@ -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…
x
Reference in New Issue
Block a user