File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments