]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
On-demand Class.is_immutable
authorLuca Bruno <lucabru@src.gnome.org>
Thu, 7 Jul 2011 09:46:12 +0000 (11:46 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 1 Aug 2011 16:17:04 +0000 (18:17 +0200)
vala/valaclass.vala

index f595248bbc80713ab9dcc24e802228bab3fbbe87..be1862a0cac45416d94091bc2188d75790c0e99c 100644 (file)
@@ -66,10 +66,14 @@ public class Vala.Class : ObjectTypeSymbol {
                        if (base_class != null) {
                                return base_class.is_immutable;
                        }
+                       if (_is_immutable == null) {
+                               _is_immutable = get_attribute ("Immutable") != null;
+                       }
                        return _is_immutable;
                }
                set {
                        _is_immutable = value;
+                       set_attribute ("Immutable", value);
                }
        }
 
@@ -131,7 +135,7 @@ public class Vala.Class : ObjectTypeSymbol {
        private string set_value_function;
        private string take_value_function;
        private bool? _is_compact;
-       private bool _is_immutable;
+       private bool? _is_immutable;
 
        private List<DataType> base_types = new ArrayList<DataType> ();
 
@@ -749,8 +753,6 @@ public class Vala.Class : ObjectTypeSymbol {
                foreach (Attribute a in attributes) {
                        if (a.name == "CCode") {
                                process_ccode_attribute (a);
-                       } else if (a.name == "Immutable") {
-                               is_immutable = true;
                        } else if (a.name == "Deprecated") {
                                process_deprecated_attribute (a);
                        } else if (a.name == "GIR") {