// Regression test for issue #72839
// Tests that we do not overflow during trait selection after
// a type error occurs
use std::ops::Rem;
trait Foo {}
struct MyStruct<T>(T);

impl<T, U> Rem<MyStruct<T>> for MyStruct<U> where MyStruct<U>: Rem<MyStruct<T>> {
    type Output = u8;
    fn rem(self, _: MyStruct<T>) -> Self::Output {
        panic!()
    }
}

fn main() {}

fn foo() {
    if missing_var % 8 == 0 {} //~ ERROR cannot find
}
