|  | //@ 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() {} |