Skip to content

Commit

Permalink
add test for Failed to normalize closure with TAIT rust-lang#109020
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiaskrgr committed Mar 24, 2024
1 parent 5e0d8c3 commit 56ea366
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tests/ui/type-alias-impl-trait/closure-normalization-ice-109020.rs
Original file line number Diff line number Diff line change
@@ -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(|_| {});
}

0 comments on commit 56ea366

Please sign in to comment.