// check-pass

// Regression test for #54378.

#![feature(never_type)]

use std::marker::PhantomData;

pub trait Machine<'a, 'mir, 'tcx>: Sized {
    type MemoryKinds: ::std::fmt::Debug + Copy + Eq;
    const MUT_STATIC_KIND: Option<Self::MemoryKinds>;
}

pub struct CompileTimeEvaluator<'a, 'mir, 'tcx: 'a+'mir> {
    pub _data: PhantomData<(&'a (), &'mir (), &'tcx ())>,
}

impl<'a, 'mir, 'tcx: 'a + 'mir> Machine<'a, 'mir, 'tcx>
    for CompileTimeEvaluator<'a, 'mir, 'tcx>
{
    type MemoryKinds = !;

    const MUT_STATIC_KIND: Option<!> = None;
}

fn main() {}