+2009-01-16 Jürg Billeter <j@bitron.ch>
+
+ * vala/valaexpression.vala:
+ * vala/valareturnstatement.vala:
+
+ Report error when returning owned variable in method or property
+ with unowned return value, fixes bug 547102
+
2009-01-16 Jürg Billeter <j@bitron.ch>
* vapi/packages/gconf-2.0/:
/* valaexpression.vala
*
- * Copyright (C) 2006-2008 Jürg Billeter
+ * Copyright (C) 2006-2009 Jürg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
var stmt = parent_node as Statement;
var local = parent_node as LocalVariable;
if (stmt != null) {
- return stmt;
+ return (Statement) parent_node;
} else if (expr != null) {
return expr.parent_statement;
} else if (local != null) {
return false;
}
- if (return_expression.symbol_reference is LocalVariable &&
- return_expression.value_type.is_disposable () &&
+ var local = return_expression.symbol_reference as LocalVariable;
+ if (local != null && local.variable_type.is_disposable () &&
!analyzer.current_return_type.value_owned) {
- Report.warning (source_reference, "Local variable with strong reference used as return value and method return type hasn't been declared to transfer ownership");
+ error = true;
+ Report.error (source_reference, "Local variable with strong reference used as return value and method return type has not been declared to transfer ownership");
+ return false;
}
if (return_expression is NullLiteral