temp_ref_vars.clear ();
}
- public virtual void append_local_free (Symbol sym, bool stop_at_loop = false, CodeNode? stop_at = null) {
+ protected virtual void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
var b = (Block) sym;
var local_vars = b.get_local_variables ();
ccode.add_expression (data_unref);
ccode.add_assignment (get_variable_cexpression ("_data%d_".printf (block_id)), new CCodeConstant ("NULL"));
}
+ }
+
+ public void append_local_free (Symbol sym, bool stop_at_loop = false, CodeNode? stop_at = null) {
+ var b = (Block) sym;
append_scope_free (sym, stop_at);
}
}
- protected virtual void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
- }
-
private void append_param_free (Method m) {
foreach (Parameter param in m.get_parameters ()) {
if (!param.ellipsis && requires_destroy (param.variable_type) && param.direction == ParameterDirection.IN) {
}
protected override void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
+ base.append_scope_free (sym, stop_at);
+
if (!(stop_at is TryStatement || stop_at is CatchClause)) {
var finally_block = (Block) null;
if (sym.parent_node is TryStatement) {