// check-pass enum Sexpression { Num(()), Cons(&'static mut Sexpression) } fn causes_error_in_ast(mut l: &mut Sexpression) { loop { match l { &mut Sexpression::Num(ref mut n) => {}, &mut Sexpression::Cons(ref mut expr) => { l = &mut **expr; } }} } fn main() { causes_error_in_ast(&mut Sexpression::Num(())); }