[vala/wip/attributes: 102/121] On demand Deprecated and Experimental attributes



commit d6552cb3c1b3b0b8a29dfbdbdcaca699cd982a7b
Author: Luca Bruno <lucabru src gnome org>
Date:   Sun Jul 3 12:54:04 2011 +0200

    On demand Deprecated and Experimental attributes

 vala/valaclass.vala       |   15 -----------
 vala/valaconstant.vala    |   15 -----------
 vala/valadelegate.vala    |   15 -----------
 vala/valaenum.vala        |    2 -
 vala/valaerrordomain.vala |   15 -----------
 vala/valafield.vala       |   17 ------------
 vala/valamethod.vala      |    4 ---
 vala/valasignal.vala      |    4 ---
 vala/valastruct.vala      |    4 ---
 vala/valasymbol.vala      |   61 ++++++++++++++++++++------------------------
 vala/valavariable.vala    |    6 ----
 11 files changed, 28 insertions(+), 130 deletions(-)
---
diff --git a/vala/valaclass.vala b/vala/valaclass.vala
index 09abf79..f70a88b 100644
--- a/vala/valaclass.vala
+++ b/vala/valaclass.vala
@@ -549,19 +549,6 @@ public class Vala.Class : ObjectTypeSymbol {
 		return true;
 	}
 
-	/**
-	 * Process all associated attributes.
-	 */
-	public void process_attributes () {
-		foreach (Attribute a in attributes) {
-			if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
-			}
-		}
-	}
-
 	public bool is_fundamental () {
 		if (!is_compact && base_class == null) {
 			return true;
@@ -635,8 +622,6 @@ public class Vala.Class : ObjectTypeSymbol {
 
 		checked = true;
 
-		process_attributes ();
-
 		var old_source_file = context.analyzer.current_source_file;
 		var old_symbol = context.analyzer.current_symbol;
 
diff --git a/vala/valaconstant.vala b/vala/valaconstant.vala
index 8a9e552..7361f9b 100644
--- a/vala/valaconstant.vala
+++ b/vala/valaconstant.vala
@@ -105,19 +105,6 @@ public class Vala.Constant : Symbol, Lockable {
 		}
 	}
 
-	/**
-	 * Process all associated attributes.
-	 */
-	public void process_attributes () {
-		foreach (Attribute a in attributes) {
-			if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
-			}
-		}
-	}
-
 	public override bool check (CodeContext context) {
 		if (checked) {
 			return !error;
@@ -125,8 +112,6 @@ public class Vala.Constant : Symbol, Lockable {
 
 		checked = true;
 
-		process_attributes ();
-
 		var old_source_file = context.analyzer.current_source_file;
 		var old_symbol = context.analyzer.current_symbol;
 
diff --git a/vala/valadelegate.vala b/vala/valadelegate.vala
index 216d516..0df961d 100644
--- a/vala/valadelegate.vala
+++ b/vala/valadelegate.vala
@@ -224,19 +224,6 @@ public class Vala.Delegate : TypeSymbol {
 		}
 	}
 
-	/**
-	 * Process all associated attributes.
-	 */
-	public void process_attributes () {
-		foreach (Attribute a in attributes) {
-			if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
-			}
-		}
-	}
-
 	public override bool is_reference_type () {
 		return false;
 	}
@@ -310,8 +297,6 @@ public class Vala.Delegate : TypeSymbol {
 
 		checked = true;
 
-		process_attributes ();
-
 		var old_source_file = context.analyzer.current_source_file;
 
 		if (source_reference != null) {
diff --git a/vala/valaenum.vala b/vala/valaenum.vala
index a97c614..367e2c8 100644
--- a/vala/valaenum.vala
+++ b/vala/valaenum.vala
@@ -154,8 +154,6 @@ public class Vala.Enum : TypeSymbol {
 		foreach (Attribute a in attributes) {
 			if (a.name == "Flags") {
 				is_flags = true;
-			} else if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
 			}
 		}
 	}
diff --git a/vala/valaerrordomain.vala b/vala/valaerrordomain.vala
index fd503a3..a73dcf8 100644
--- a/vala/valaerrordomain.vala
+++ b/vala/valaerrordomain.vala
@@ -107,19 +107,6 @@ public class Vala.ErrorDomain : TypeSymbol {
 		return false;
 	}
 	
-	/**
-	 * Process all associated attributes.
-	 */
-	public void process_attributes () {
-		foreach (Attribute a in attributes) {
-			if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
-			}
-		}
-	}
-
 	public override bool check (CodeContext context) {
 		if (checked) {
 			return !error;
@@ -127,8 +114,6 @@ public class Vala.ErrorDomain : TypeSymbol {
 
 		checked = true;
 
-		process_attributes ();
-
 		foreach (ErrorCode ecode in codes) {
 			ecode.check (context);
 		}
diff --git a/vala/valafield.vala b/vala/valafield.vala
index 803b9f9..8b932a5 100644
--- a/vala/valafield.vala
+++ b/vala/valafield.vala
@@ -65,21 +65,6 @@ public class Vala.Field : Variable, Lockable {
 		}
 	}
 
-	/**
-	 * Process all associated attributes.
-	 */
-	public override void process_attributes () {
-		base.process_attributes ();
-
-		foreach (Attribute a in attributes) {
-			if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
-			}
-		}
-	}
-
 	public bool get_lock_used () {
 		return lock_used;
 	}
@@ -138,8 +123,6 @@ public class Vala.Field : Variable, Lockable {
 			return false;
 		}
 
-		process_attributes ();
-
 		if (initializer != null) {
 			initializer.target_type = variable_type;
 
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index 3b2b58c..38466c4 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -255,10 +255,6 @@ public class Vala.Method : Subroutine {
 				printf_format = true;
 			} else if (a.name == "ScanfFormat") {
 				scanf_format = true;
-			} else if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
 			} else if (a.name == "DestroysInstance") {
 				this_parameter.variable_type.value_owned = true;
 			}
diff --git a/vala/valasignal.vala b/vala/valasignal.vala
index d811a88..27be146 100644
--- a/vala/valasignal.vala
+++ b/vala/valasignal.vala
@@ -214,10 +214,6 @@ public class Vala.Signal : Symbol, Lockable {
 				has_emitter = true;
 			} else if (a.name == "Signal") {
 				process_signal_attribute (a);
-			} else if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
 			}
 		}
 	}
diff --git a/vala/valastruct.vala b/vala/valastruct.vala
index 7d217c5..8c3b014 100644
--- a/vala/valastruct.vala
+++ b/vala/valastruct.vala
@@ -373,10 +373,6 @@ public class Vala.Struct : TypeSymbol {
 				process_floating_type_attribute (a);
 			} else if (a.name == "Immutable") {
 				is_immutable = true;
-			} else if (a.name == "Deprecated") {
-				process_deprecated_attribute (a);
-			} else if (a.name == "Experimental") {
-				process_experimental_attribute (a);
 			}
 		}
 	}
diff --git a/vala/valasymbol.vala b/vala/valasymbol.vala
index 06dd021..ed75dd9 100644
--- a/vala/valasymbol.vala
+++ b/vala/valasymbol.vala
@@ -70,22 +70,44 @@ public abstract class Vala.Symbol : CodeNode {
 	/**
 	 * Specifies whether this symbol has been deprecated.
 	 */
-	public bool deprecated { get; set; default = false; }
+	public bool deprecated {
+		get {
+			if (_deprecated == null) {
+				_deprecated = get_attribute ("Deprecated") != null;
+			}
+			return _deprecated;
+		}
+	}
 
 	/**
 	 * Specifies what version this symbol has been deprecated since.
 	 */
-	public string? deprecated_since { get; set; default = null; }
+	public string? deprecated_since {
+		get {
+			return get_attribute_string ("Deprecated", "since");
+		}
+	}
 
 	/**
 	 * Specifies the replacement if this symbol has been deprecated.
 	 */
-	public string? replacement { get; set; default = null; }
+	public string? replacement {
+		get {
+			return get_attribute_string ("Deprecated", "replacement");
+		}
+	}
 
 	/**
 	 * Specifies whether this symbol is experimental.
 	 */
-	public bool experimental { get; set; default = false; }
+	public bool experimental {
+		get {
+			if (_experimental == null) {
+				_experimental = get_attribute ("Experimental") != null;
+			}
+			return _experimental;
+		}
+	}
 
 	/**
 	 * Specifies whether this symbol has been accessed.
@@ -179,6 +201,8 @@ public abstract class Vala.Symbol : CodeNode {
 
 	private weak Scope _owner;
 	private Scope _scope;
+	private bool? _deprecated;
+	private bool? _experimental;
 
 	public Symbol (string? name, SourceReference? source_reference, Comment? comment = null) {
 		this.name = name;
@@ -363,24 +387,6 @@ public abstract class Vala.Symbol : CodeNode {
 	}
 
 	/**
-	 * Process a [Deprecated] attribute
-	 */
-	public virtual void process_deprecated_attribute (Attribute attr) {
-		if (attr.name != "Deprecated") {
-			return;
-		}
-
-		deprecated = true;
-
-		if (attr.has_argument ("since")) {
-			deprecated_since = attr.get_string ("since");
-		}
-		if (attr.has_argument ("replacement")) {
-			replacement = attr.get_string ("replacement");
-		}
-	}
-
-	/**
 	 * Check to see if the symbol has been deprecated, and emit a warning
 	 * if it has.
 	 */
@@ -396,17 +402,6 @@ public abstract class Vala.Symbol : CodeNode {
 	}
 
 	/**
-	 * Process a [Experimental] attribute
-	 */
-	public virtual void process_experimental_attribute (Attribute attr) {
-		if (attr.name != "Experimental") {
-			return;
-		}
-
-		experimental = true;
-	}
-
-	/**
 	 * Check to see if the symbol is experimental, and emit a warning
 	 * if it is.
 	 */
diff --git a/vala/valavariable.vala b/vala/valavariable.vala
index cb8b6b4..9337751 100644
--- a/vala/valavariable.vala
+++ b/vala/valavariable.vala
@@ -57,10 +57,4 @@ public class Vala.Variable : Symbol {
 		this.variable_type = variable_type;
 		this.initializer = initializer;
 	}
-
-	/**
-	 * Process all associated attributes.
-	 */
-	public virtual void process_attributes () {
-	}
 }



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