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