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

//@ ignore-freebsd FIXME fails on BSD


trait noisy {
  fn speak(&mut self);
}

struct cat {
  meows: usize,
  how_hungry: isize,
  name: String,
}

impl noisy for cat {
  fn speak(&mut self) { self.meow(); }
}

impl cat {
  pub fn eat(&mut self) -> bool {
    if self.how_hungry > 0 {
        println!("OM NOM NOM");
        self.how_hungry -= 2;
        return true;
    }
    else {
        println!("Not hungry!");
        return false;
    }
  }
}

impl cat {
    fn meow(&mut self) {
      println!("Meow");
      self.meows += 1;
      if self.meows % 5 == 0 {
          self.how_hungry += 1;
      }
    }
}

fn cat(in_x : usize, in_y : isize, in_name: String) -> cat {
    cat {
        meows: in_x,
        how_hungry: in_y,
        name: in_name
    }
}


pub fn main() {
    let mut nyan = cat(0, 2, "nyan".to_string());
    let mut nyan: &mut dyn noisy = &mut nyan;
    nyan.speak();
}
