diff --git a/src/test/auxiliary/cci_class_iface.rs b/src/test/auxiliary/cci_class_iface.rs new file mode 100644 index 00000000000..61f22d47290 --- /dev/null +++ b/src/test/auxiliary/cci_class_iface.rs @@ -0,0 +1,7 @@ +mod animals { + +iface noisy { + fn speak(); +} + +} diff --git a/src/test/run-pass/class-implement-iface-cross-crate.rs b/src/test/run-pass/class-implement-iface-cross-crate.rs new file mode 100644 index 00000000000..2c845fa1c03 --- /dev/null +++ b/src/test/run-pass/class-implement-iface-cross-crate.rs @@ -0,0 +1,45 @@ +// xfail-fast +// aux-build:cci_class_iface.rs +use cci_class_iface; +import cci_class_iface::animals::*; + +class cat implements noisy { + priv { + let mut meows : uint; + fn meow() { + #error("Meow"); + self.meows += 1u; + if self.meows % 5u == 0u { + self.how_hungry += 1; + } + } + } + + let mutable how_hungry : int; + let name : str; + + new(in_x : uint, in_y : int, in_name: str) + { self.meows = in_x; self.how_hungry = in_y; self.name = in_name; } + + fn speak() { self.meow(); } + + fn eat() -> bool { + if self.how_hungry > 0 { + #error("OM NOM NOM"); + self.how_hungry -= 2; + ret true; + } + else { + #error("Not hungry!"); + ret false; + } + } +} + +fn main() { + let nyan = cat(0u, 2, "nyan"); + nyan.eat(); + assert(!nyan.eat()); + uint::range(1u, 10u, {|_i| nyan.speak(); }); + assert(nyan.eat()); +} \ No newline at end of file