#![feature(generic_const_exprs)] #![allow(incomplete_features)] // The goal is to get an unevaluated const `ct` with a `Ty::Infer(TyVar(?1t)` subst. // // If we are then able to infer `ty::Infer(TyVar(?1t) := Ty` we introduced an // artificial inference cycle. struct Foo; trait Bind { fn bind() -> (T, Self); } // `N` has to be `ConstKind::Unevaluated`. impl Bind for Foo<{ 6 + 1 }> { fn bind() -> (T, Self) { (panic!(), Foo) } } fn main() { let (mut t, foo) = Foo::bind(); //~^ ERROR mismatched types //~| NOTE cyclic type // `t` is `ty::Infer(TyVar(?1t))` // `foo` contains `ty::Infer(TyVar(?1t))` in its substs t = foo; }