2011-05-20 17:41:36 -07:00
|
|
|
use std;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
obj a() {
|
2011-06-15 11:19:50 -07:00
|
|
|
fn foo() -> int { ret 2; }
|
2011-05-20 17:41:36 -07:00
|
|
|
}
|
|
|
|
auto my_a = a();
|
|
|
|
// Extending an object with a new method
|
|
|
|
|
2011-06-15 12:18:02 -07:00
|
|
|
auto my_b = obj {
|
|
|
|
fn bar() -> int {
|
|
|
|
ret 3;
|
|
|
|
}
|
|
|
|
with my_a
|
|
|
|
};
|
2011-05-20 17:41:36 -07:00
|
|
|
|
2011-06-15 12:18:02 -07:00
|
|
|
assert (my_a.foo() == 2);
|
2011-06-15 11:19:50 -07:00
|
|
|
assert (my_b.bar() == 3);
|
2011-06-15 12:18:02 -07:00
|
|
|
|
|
|
|
auto my_c = obj {
|
|
|
|
fn baz() -> int {
|
|
|
|
ret 4;
|
|
|
|
}
|
|
|
|
with my_b
|
|
|
|
};
|
|
|
|
|
|
|
|
assert (my_c.baz() == 4);
|
|
|
|
|
|
|
|
}
|
|
|
|
|