Skip to content

Commit 7dd464f

Browse files
jyasskingraydon
authored andcommitted
Initial test that the compiler runs destructors in the right order.
1 parent 765a2b3 commit 7dd464f

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

Diff for: src/test/run-pass/destructor-ordering.rs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// We share an instance of this type among all the destructor-order
2+
// checkers. It tracks how many destructors have run so far and
3+
// 'fail's when one runs out of order.
4+
// FIXME: Make it easier to collect a failure message.
5+
state obj order_tracker(mutable int init) {
6+
fn assert_order(int expected, str fail_message) {
7+
if (expected != init) {
8+
log expected;
9+
log " != ";
10+
log init;
11+
log fail_message;
12+
fail;
13+
}
14+
init += 1;
15+
}
16+
}
17+
18+
19+
obj dorder(@order_tracker tracker, int order, str message) {
20+
drop {
21+
tracker.assert_order(order, message);
22+
}
23+
}
24+
25+
fn main() {
26+
auto tracker = @order_tracker(0);
27+
dorder(tracker, 1, "Reverse decl order");
28+
dorder(tracker, 0, "Reverse decl order");
29+
}

0 commit comments

Comments
 (0)