if (stmt.return_expression != null) {
var local = stmt.return_expression.symbol_reference as LocalVariable;
if (current_return_type.value_owned
- && local != null && local.variable_type.value_owned && !variable_accessible_in_finally (local)) {
+ && local != null && local.variable_type.value_owned
+ && !local.captured
+ && !variable_accessible_in_finally (local)) {
/* return expression is local variable taking ownership and
* current method is transferring ownership */
// avoid unnecessary ref/unref pair
var local = stmt.return_expression.symbol_reference as LocalVariable;
if (current_return_type.value_owned
- && local != null && local.variable_type.value_owned && !variable_accessible_in_finally (local)) {
+ && local != null && local.variable_type.value_owned
+ && !local.captured
+ && !variable_accessible_in_finally (local)) {
/* return expression is local variable taking ownership and
* current method is transferring ownership */
methods/lambda.vala \
methods/closures.vala \
methods/bug595538.vala \
+ methods/bug596726.vala \
control-flow/break.vala \
control-flow/expressions-conditional.vala \
control-flow/for.vala \