//@ run-pass
#![allow(non_camel_case_types)]




// Tests for match as expressions resulting in struct types
#[derive(Copy, Clone)]
struct R { i: isize }

fn test_rec() {
    let rs = match true { true => R {i: 100}, _ => panic!() };
    assert_eq!(rs.i, 100);
}

#[derive(Copy, Clone, Debug)]
enum mood { happy, sad, }

impl PartialEq for mood {
    fn eq(&self, other: &mood) -> bool {
        ((*self) as usize) == ((*other) as usize)
    }
    fn ne(&self, other: &mood) -> bool { !(*self).eq(other) }
}

fn test_tag() {
    let rs = match true { true => { mood::happy } false => { mood::sad } };
    assert_eq!(rs, mood::happy);
}

pub fn main() { test_rec(); test_tag(); }
