// issue: <https://github.com/rust-lang/rust/issues/11552>
// Test nested box pattern matching inside a larger `match` statement.
//@ run-pass
#![feature(box_patterns)]

#[derive(Clone)]
enum Noun {
    Atom(isize),
    Cell(Box<Noun>, Box<Noun>),
}

fn fas(n: &Noun) -> Noun {
    match n {
        &Noun::Cell(box Noun::Atom(2), box Noun::Cell(ref a, _)) => (**a).clone(),
        _ => panic!("Invalid fas pattern"),
    }
}

pub fn main() {
    fas(&Noun::Cell(
        Box::new(Noun::Atom(2)),
        Box::new(Noun::Cell(Box::new(Noun::Atom(2)), Box::new(Noun::Atom(3)))),
    ));
}
