vala r2214 - in trunk: . vala



Author: juergbi
Date: Fri Dec 19 10:47:17 2008
New Revision: 2214
URL: http://svn.gnome.org/viewvc/vala?rev=2214&view=rev

Log:
2008-12-19  JÃrg Billeter  <j bitron ch>

	* vala/valaparser.vala:
	* vala/valascanner.vala:
	* vala/valatokentype.vala:

	Add `owned' type modifier and `(owned)' cast to replace `#',
	add `unowned' type modifier to complement `weak' for non-reference
	counted objects.

	`#' will be deprecated in Vala 0.5.5


Modified:
   trunk/ChangeLog
   trunk/vala/valaparser.vala
   trunk/vala/valascanner.vala
   trunk/vala/valatokentype.vala

Modified: trunk/vala/valaparser.vala
==============================================================================
--- trunk/vala/valaparser.vala	(original)
+++ trunk/vala/valaparser.vala	Fri Dec 19 10:47:17 2008
@@ -207,6 +207,7 @@
 		case TokenType.NULL:
 		case TokenType.OUT:
 		case TokenType.OVERRIDE:
+		case TokenType.OWNED:
 		case TokenType.PARAMS:
 		case TokenType.PRIVATE:
 		case TokenType.PROTECTED:
@@ -226,6 +227,7 @@
 		case TokenType.TRUE:
 		case TokenType.TRY:
 		case TokenType.TYPEOF:
+		case TokenType.UNOWNED:
 		case TokenType.USING:
 		case TokenType.VAR:
 		case TokenType.VIRTUAL:
@@ -336,6 +338,8 @@
 			return;
 		}
 		accept (TokenType.DYNAMIC);
+		accept (TokenType.OWNED);
+		accept (TokenType.UNOWNED);
 		accept (TokenType.WEAK);
 		skip_symbol_name ();
 		skip_type_argument_list ();
@@ -369,8 +373,14 @@
 		bool is_dynamic = accept (TokenType.DYNAMIC);
 
 		bool value_owned = owned_by_default;
+
 		if (owned_by_default) {
-			value_owned = !accept (TokenType.WEAK);
+			if (accept (TokenType.UNOWNED)
+			    || accept (TokenType.WEAK)) {
+				value_owned = false;
+			}
+		} else {
+			value_owned = accept (TokenType.OWNED);
 		}
 
 		var sym = parse_symbol_name ();
@@ -419,7 +429,11 @@
 		}
 
 		if (!owned_by_default) {
-			value_owned = accept (TokenType.HASH);
+			if (accept (TokenType.HASH)) {
+				// TODO enable warning after releasing Vala 0.5.4
+				// Report.warning (get_last_src (), "deprecated syntax, use `owned` modifier");
+				value_owned = true;
+			}
 		}
 
 		type.is_dynamic = is_dynamic;
@@ -776,15 +790,24 @@
 		}
 		switch (current ()) {
 		case TokenType.HASH:
+			// TODO enable warning after releasing Vala 0.5.4
+			// Report.warning (get_last_src (), "deprecated syntax, use `(owned)` cast");
 			next ();
 			var op = parse_unary_expression ();
 			return new ReferenceTransferExpression (op, get_src (begin));
 		case TokenType.OPEN_PARENS:
 			next ();
 			switch (current ()) {
+			case TokenType.OWNED:
+				// (owned) foo
+				next ();
+				if (accept (TokenType.CLOSE_PARENS)) {
+					var op = parse_unary_expression ();
+					return new ReferenceTransferExpression (op, get_src (begin));
+				}
+				break;
 			case TokenType.VOID:
 			case TokenType.DYNAMIC:
-			case TokenType.WEAK:
 			case TokenType.IDENTIFIER:
 				var type = parse_type ();
 				if (accept (TokenType.CLOSE_PARENS)) {
@@ -807,9 +830,6 @@
 					case TokenType.SIZEOF:
 					case TokenType.TYPEOF:
 					case TokenType.IDENTIFIER:
-						if (!(type is PointerType) && !type.value_owned) {
-							Report.warning (get_src (begin), "obsolete syntax, weak type modifier unused in cast expressions");
-						}
 						var inner = parse_unary_expression ();
 						return new CastExpression (inner, type, get_src (begin), false);
 					default:
@@ -2179,7 +2199,7 @@
 		var begin = get_location ();
 		var access = parse_access_modifier ();
 		var flags = parse_member_declaration_modifiers ();
-		bool is_weak = accept (TokenType.WEAK);
+		bool is_weak = accept (TokenType.UNOWNED) || accept (TokenType.WEAK);
 		var type = parse_type (false);
 		string id = parse_identifier ();
 		var prop = new Property (id, type, null, null, get_src_com (begin));
@@ -2818,6 +2838,7 @@
 				switch (current ()) {
 				case TokenType.VOID:
 				case TokenType.DYNAMIC:
+				case TokenType.UNOWNED:
 				case TokenType.WEAK:
 				case TokenType.IDENTIFIER:
 					var type = parse_type ();

Modified: trunk/vala/valascanner.vala
==============================================================================
--- trunk/vala/valascanner.vala	(original)
+++ trunk/vala/valascanner.vala	Fri Dec 19 10:47:17 2008
@@ -166,6 +166,9 @@
 			case 'f':
 				if (matches (begin, "false")) return TokenType.FALSE;
 				break;
+			case 'o':
+				if (matches (begin, "owned")) return TokenType.OWNED;
+				break;
 			case 't':
 				if (matches (begin, "throw")) return TokenType.THROW;
 				break;
@@ -274,6 +277,9 @@
 			case 'p':
 				if (matches (begin, "private")) return TokenType.PRIVATE;
 				break;
+			case 'u':
+				if (matches (begin, "unowned")) return TokenType.UNOWNED;
+				break;
 			case 'v':
 				if (matches (begin, "virtual")) return TokenType.VIRTUAL;
 				break;

Modified: trunk/vala/valatokentype.vala
==============================================================================
--- trunk/vala/valatokentype.vala	(original)
+++ trunk/vala/valatokentype.vala	Fri Dec 19 10:47:17 2008
@@ -107,6 +107,7 @@
 	OPEN_BRACKET,
 	OPEN_PARENS,
 	OVERRIDE,
+	OWNED,
 	PARAMS,
 	PERCENT,
 	PLUS,
@@ -133,6 +134,7 @@
 	TRUE,
 	TRY,
 	TYPEOF,
+	UNOWNED,
 	USING,
 	VAR,
 	VERBATIM_STRING_LITERAL,
@@ -226,6 +228,7 @@
 		case OPEN_BRACKET: return "`['";
 		case OPEN_PARENS: return "`('";
 		case OVERRIDE: return "`override'";
+		case OWNED: return "`owned'";
 		case PARAMS: return "`params'";
 		case PERCENT: return "`%'";
 		case PLUS: return "`+'";
@@ -252,6 +255,7 @@
 		case TRUE: return "`true'";
 		case TRY: return "`try'";
 		case TYPEOF: return "`typeof'";
+		case UNOWNED: return "`unowned'";
 		case USING: return "`using'";
 		case VAR: return "`var'";
 		case VIRTUAL: return "`virtual'";



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