// compile-flags: -Ztrait-solver=next #![feature(rustc_attrs)] // Test that having both an inductive and a coinductive cycle // is handled correctly. #[rustc_coinductive] trait Trait {} impl Trait for T {} trait Inductive {} impl Inductive for T {} #[rustc_coinductive] trait Coinductive {} impl Coinductive for T {} fn impls_trait() {} #[rustc_coinductive] trait TraitRev {} impl TraitRev for T {} trait InductiveRev {} impl InductiveRev for T {} #[rustc_coinductive] trait CoinductiveRev {} impl CoinductiveRev for T {} fn impls_trait_rev() {} fn main() { impls_trait::<()>(); //~^ ERROR overflow evaluating the requirement impls_trait_rev::<()>(); //~^ ERROR overflow evaluating the requirement }