2012-06-01 16:48:02 -05:00
|
|
|
// Ensures that class dtors run if the object is inside an enum
|
|
|
|
// variant
|
2011-07-29 04:44:29 -05:00
|
|
|
|
2012-03-26 20:35:18 -05:00
|
|
|
type closable = @mut bool;
|
2011-07-29 04:44:29 -05:00
|
|
|
|
2012-06-01 16:48:02 -05:00
|
|
|
class close_res {
|
|
|
|
let i: closable;
|
|
|
|
|
|
|
|
new(i: closable) { self.i = i; }
|
|
|
|
drop { *(self.i) = false; }
|
|
|
|
}
|
2011-07-29 04:44:29 -05:00
|
|
|
|
2012-01-19 20:31:08 -06:00
|
|
|
enum option<T> { none, some(T), }
|
2011-07-29 04:44:29 -05:00
|
|
|
|
2011-08-19 17:16:48 -05:00
|
|
|
fn sink(res: option<close_res>) { }
|
2011-07-29 04:44:29 -05:00
|
|
|
|
|
|
|
fn main() {
|
2012-03-26 20:35:18 -05:00
|
|
|
let c = @mut true;
|
2011-07-29 04:44:29 -05:00
|
|
|
sink(none);
|
|
|
|
sink(some(close_res(c)));
|
2011-08-19 17:16:48 -05:00
|
|
|
assert (!*c);
|
2011-07-29 04:44:29 -05:00
|
|
|
}
|