vala r2042 - in trunk: . vala



Author: juergbi
Date: Thu Nov 20 21:37:35 2008
New Revision: 2042
URL: http://svn.gnome.org/viewvc/vala?rev=2042&view=rev

Log:
2008-11-20  JÃrg Billeter  <j bitron ch>

	* vala/valaassignment.vala:

	Check types in property assignments, fixes bug 550088


Modified:
   trunk/ChangeLog
   trunk/vala/valaassignment.vala

Modified: trunk/vala/valaassignment.vala
==============================================================================
--- trunk/vala/valaassignment.vala	(original)
+++ trunk/vala/valaassignment.vala	Thu Nov 20 21:37:35 2008
@@ -301,7 +301,9 @@
 					Report.error (source_reference, "Assignment: Invalid callback assignment attempt");
 					return false;
 				}
-			} else if (left.value_type != null && right.value_type != null) {
+			}
+
+			if (left.value_type != null && right.value_type != null) {
 				/* if there was an error on either side,
 				 * i.e. {left|right}.value_type == null, skip type check */
 
@@ -311,18 +313,20 @@
 					return false;
 				}
 
-				if (right.value_type.is_disposable ()) {
-					/* rhs transfers ownership of the expression */
-					if (!(left.value_type is PointerType) && !left.value_type.value_owned) {
-						/* lhs doesn't own the value */
-						error = true;
-						Report.error (source_reference, "Invalid assignment from owned expression to unowned variable");
+				if (!(ma.symbol_reference is Property)) {
+					if (right.value_type.is_disposable ()) {
+						/* rhs transfers ownership of the expression */
+						if (!(left.value_type is PointerType) && !left.value_type.value_owned) {
+							/* lhs doesn't own the value */
+							error = true;
+							Report.error (source_reference, "Invalid assignment from owned expression to unowned variable");
+						}
+					} else if (left.value_type.value_owned) {
+						/* lhs wants to own the value
+						 * rhs doesn't transfer the ownership
+						 * code generator needs to add reference
+						 * increment calls */
 					}
-				} else if (left.value_type.value_owned) {
-					/* lhs wants to own the value
-					 * rhs doesn't transfer the ownership
-					 * code generator needs to add reference
-					 * increment calls */
 				}
 			}
 		} else if (left is ElementAccess) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]