// -*- rust -*- // Tests for if as expressions returning structural types fn test_rec() { let rs = if true { {i: 100} } else { {i: 101} }; assert (rs.i == 100); } enum mood { happy, sad, } impl mood : cmp::Eq { pure fn eq(&&other: mood) -> bool { (self as uint) == (other as uint) } pure fn ne(&&other: mood) -> bool { !self.eq(other) } } fn test_tag() { let rs = if true { happy } else { sad }; assert (rs == happy); } fn main() { test_rec(); test_tag(); }