diff options
| author | Jeffrey Yasskin <[email protected]> | 2010-07-13 14:53:27 +0800 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-07-16 08:13:08 +0800 |
| commit | 7dd464fdb55dfdc6ade52c65f551504632280772 (patch) | |
| tree | 6bbaae13f14aaaf349437b97441aa3d30b7bda96 /src | |
| parent | Add a _vec.slice function that'll hold us over until .(a,b) syntax is (diff) | |
| download | rust-7dd464fdb55dfdc6ade52c65f551504632280772.tar.xz rust-7dd464fdb55dfdc6ade52c65f551504632280772.zip | |
Initial test that the compiler runs destructors in the right order.
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/run-pass/destructor-ordering.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/run-pass/destructor-ordering.rs b/src/test/run-pass/destructor-ordering.rs new file mode 100644 index 00000000..e00966f1 --- /dev/null +++ b/src/test/run-pass/destructor-ordering.rs @@ -0,0 +1,29 @@ +// We share an instance of this type among all the destructor-order +// checkers. It tracks how many destructors have run so far and +// 'fail's when one runs out of order. +// FIXME: Make it easier to collect a failure message. +state obj order_tracker(mutable int init) { + fn assert_order(int expected, str fail_message) { + if (expected != init) { + log expected; + log " != "; + log init; + log fail_message; + fail; + } + init += 1; + } +} + + +obj dorder(@order_tracker tracker, int order, str message) { + drop { + tracker.assert_order(order, message); + } +} + +fn main() { + auto tracker = @order_tracker(0); + dorder(tracker, 1, "Reverse decl order"); + dorder(tracker, 0, "Reverse decl order"); +}
\ No newline at end of file |