[vala] girparser: don't deprecate children of deprecated containers



commit 2894abb2e2b5e70e54413a55c418d54cf4dda9df
Author: Evan Nemerson <evan nemerson com>
Date:   Sun May 25 19:42:00 2014 -0700

    girparser: don't deprecate children of deprecated containers
    
    GObject Introspection doesn't support marking entire types as
    deprecated, so we end up with a lot of places where the type isn't
    deprecated, but every method, property, field, signal, etc. in it is,
    which causes a lot of spew during compilation.  This patch allows us
    to easily deprecate a type in metadata and any extra deprecation
    information on child symbols will be omitted.

 vala/valagirparser.vala |   64 +++++++++++++++++++++++++++---
 vapi/clutter-1.0.vapi   |  100 -----------------------------------------------
 2 files changed, 57 insertions(+), 107 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index f35f1ec..05a0703 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -524,6 +524,11 @@ public class Vala.GirParser : CodeVisitor {
                // alias-specific
                public DataType base_type;
 
+               public bool deprecated = false;
+               public uint64 deprecated_version = 0;
+               public string? deprecated_since = null;
+               public string? deprecated_replacement = null;
+
                public Node (string? name) {
                        this.name = name;
                }
@@ -750,6 +755,26 @@ public class Vala.GirParser : CodeVisitor {
                        return "";
                }
 
+               private static uint64 parse_version_string (string version) {
+                       int64 res = 0;
+                       int shift = 16;
+                       string[] tokens = version.split (".", 3);
+
+                       foreach (unowned string token in tokens) {
+                               int64 t;
+
+                               if (!int64.try_parse (token, out t))
+                                       return 0;
+                               if (t > 0xffff)
+                                       return 0;
+
+                               res |= (t << shift);
+                               shift -= 8;
+                       }
+
+                       return res;
+               }
+
                public void process (GirParser parser) {
                        if (processed) {
                                return;
@@ -1035,21 +1060,29 @@ public class Vala.GirParser : CodeVisitor {
                                        }
                                }
 
-                               // deprecation
+                               // deprecated
                                if (metadata.has_argument (ArgumentType.REPLACEMENT)) {
-                                       symbol.set_attribute_string ("Deprecated", "replacement", 
metadata.get_string (ArgumentType.REPLACEMENT));
+                                       deprecated = true;
+                                       deprecated_replacement = metadata.get_string 
(ArgumentType.REPLACEMENT);
                                }
                                if (metadata.has_argument (ArgumentType.DEPRECATED_SINCE)) {
-                                       symbol.set_attribute_string ("Deprecated", "since",  
metadata.get_string (ArgumentType.DEPRECATED_SINCE));
+                                       deprecated = true;
+                                       deprecated_since = metadata.get_string 
(ArgumentType.DEPRECATED_SINCE);
                                } else if (girdata["deprecated-version"] != null) {
-                                       symbol.set_attribute_string ("Deprecated", "since", girdata.get 
("deprecated-version"));
+                                       deprecated = true;
+                                       deprecated_since = girdata.get ("deprecated-version");
                                }
                                if (metadata.has_argument (ArgumentType.DEPRECATED)) {
-                                       if (metadata.get_bool (ArgumentType.DEPRECATED)) {                    
                          
-                                               symbol.set_attribute ("Deprecated", true);
+                                       deprecated = metadata.get_bool (ArgumentType.DEPRECATED, true);
+                                       if (!deprecated) {
+                                               deprecated_since = null;
+                                               deprecated_replacement = null;
                                        }
                                } else if (girdata["deprecated"] != null) {
-                                       symbol.set_attribute ("Deprecated", true);
+                                       deprecated = true;
+                               }
+                               if (deprecated_since != null) {
+                                       deprecated_version = parse_version_string (deprecated_since);
                                }
 
                                // experimental
@@ -1090,6 +1123,23 @@ public class Vala.GirParser : CodeVisitor {
 
                        if (!(new_symbol && merged) && is_container (symbol)) {
                                foreach (var node in members) {
+                                       if (this.deprecated_version > 0 && node.deprecated_version > 0) {
+                                               if (this.deprecated_version <= node.deprecated_version) {
+                                                       node.deprecated = false;
+                                                       node.deprecated_since = null;
+                                                       node.deprecated_replacement = null;
+                                               }
+                                       }
+                                       if (node.deprecated) {
+                                               node.symbol.set_attribute ("Deprecated", true);
+                                       }
+                                       if (node.deprecated_since != null) {
+                                               node.symbol.set_attribute_string ("Deprecated", "since", 
node.deprecated_since);
+                                       }
+                                       if (node.deprecated_replacement != null) {
+                                               node.symbol.set_attribute_string ("Deprecated", 
"replacement", node.deprecated_replacement);
+                                       }
+
                                        if (node.new_symbol && !node.merged && !metadata.get_bool 
(ArgumentType.HIDDEN)) {
                                                add_symbol_to_container (symbol, node.symbol);
                                        }
diff --git a/vapi/clutter-1.0.vapi b/vapi/clutter-1.0.vapi
index 8a0833d..ee3c86a 100644
--- a/vapi/clutter-1.0.vapi
+++ b/vapi/clutter-1.0.vapi
@@ -5230,39 +5230,22 @@ namespace Clutter {
        [Deprecated (since = "1.12")]
        public class Animator : GLib.Object, Clutter.Scriptable {
                [CCode (has_construct_function = false)]
-               [Deprecated (since = "1.12")]
                public Animator ();
-               [Deprecated (since = "1.12")]
                public bool compute_value (GLib.Object object, string property_name, double progress, 
GLib.Value value);
-               [Deprecated (since = "1.12")]
                public uint get_duration ();
-               [Deprecated (since = "1.12")]
                public GLib.List<weak Clutter.AnimatorKey> get_keys (GLib.Object? object, string? 
property_name, double progress);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Timeline get_timeline ();
-               [Deprecated (since = "1.12")]
                public bool property_get_ease_in (GLib.Object object, string property_name);
-               [Deprecated (since = "1.12")]
                public Clutter.Interpolation property_get_interpolation (GLib.Object object, string 
property_name);
-               [Deprecated (since = "1.12")]
                public void property_set_ease_in (GLib.Object object, string property_name, bool ease_in);
-               [Deprecated (since = "1.12")]
                public void property_set_interpolation (GLib.Object object, string property_name, 
Clutter.Interpolation interpolation);
-               [Deprecated (since = "1.12")]
                public void remove_key (GLib.Object? object, string? property_name, double progress);
-               [Deprecated (since = "1.12")]
                public void @set (void* first_object, string first_property_name, uint first_mode, ...);
-               [Deprecated (since = "1.12")]
                public void set_duration (uint duration);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Animator set_key (GLib.Object object, string property_name, uint mode, 
double progress, GLib.Value value);
-               [Deprecated (since = "1.12")]
                public void set_timeline (Clutter.Timeline timeline);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Timeline start ();
-               [Deprecated (since = "1.12")]
                public uint duration { get; set; }
-               [Deprecated (since = "1.12")]
                public Clutter.Timeline timeline { get; set; }
        }
        [CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = 
"g_boxed_free", type_id = "clutter_animator_key_get_type ()")]
@@ -5333,49 +5316,31 @@ namespace Clutter {
        public abstract class Behaviour : GLib.Object, Clutter.Scriptable {
                [CCode (has_construct_function = false)]
                protected Behaviour ();
-               [Deprecated (since = "1.6")]
                public void actors_foreach (Clutter.BehaviourForeachFunc func);
                [NoWrapper]
                public virtual void alpha_notify (double alpha_value);
-               [Deprecated (since = "1.6")]
                public void apply (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public GLib.SList<weak Clutter.Actor> get_actors ();
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Alpha get_alpha ();
-               [Deprecated (since = "1.6")]
                public int get_n_actors ();
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Actor get_nth_actor (int index_);
-               [Deprecated (since = "1.6")]
                public bool is_applied (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public void remove (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public void remove_all ();
-               [Deprecated (since = "1.6")]
                public void set_alpha (Clutter.Alpha alpha);
-               [Deprecated (since = "1.6")]
                public Clutter.Alpha alpha { get; set; }
-               [Deprecated (since = "1.6")]
                public virtual signal void applied (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public virtual signal void removed (Clutter.Actor actor);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_depth_get_type ()")]
        [Deprecated (since = "1.6")]
        public class BehaviourDepth : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourDepth (Clutter.Alpha? alpha, int depth_start, int depth_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out int depth_start, out int depth_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (int depth_start, int depth_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public int depth_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public int depth_start { get; set; }
        }
@@ -5418,16 +5383,11 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourOpacity : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourOpacity (Clutter.Alpha? alpha, uint8 opacity_start, uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out uint8 opacity_start, out uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (uint8 opacity_start, uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public uint opacity_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public uint opacity_start { get; set; }
        }
@@ -5435,20 +5395,14 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourPath : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath (Clutter.Alpha? alpha, Clutter.Path path);
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Path get_path ();
-               [Deprecated (since = "1.6")]
                public void set_path (Clutter.Path path);
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath.with_description (Clutter.Alpha? alpha, string desc);
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath.with_knots (Clutter.Alpha? alpha, [CCode (array_length_cname = 
"n_knots", array_length_pos = 2.1, array_length_type = "guint")] Clutter.Knot[] knots);
                public Clutter.Path path { get; set; }
-               [Deprecated (since = "1.6")]
                public virtual signal void knot_reached (uint knot_num);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_rotate_get_type ()")]
@@ -5481,22 +5435,15 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourScale : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourScale (Clutter.Alpha? alpha, double x_scale_start, double y_scale_start, 
double x_scale_end, double y_scale_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out double x_scale_start, out double y_scale_start, out double 
x_scale_end, out double y_scale_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (double x_scale_start, double y_scale_start, double x_scale_end, 
double y_scale_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double x_scale_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double x_scale_start { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double y_scale_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double y_scale_start { get; set; }
        }
@@ -5656,37 +5603,24 @@ namespace Clutter {
        [Deprecated (since = "1.12")]
        public class CairoTexture : Clutter.Texture, Atk.Implementor, Clutter.Animatable, Clutter.Container, 
Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterActor*")]
-               [Deprecated (since = "1.12")]
                public CairoTexture (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public void clear ();
                [Deprecated (since = "1.8")]
                public Cairo.Context create ();
                [Deprecated (since = "1.8")]
                public Cairo.Context create_region (int x_offset, int y_offset, int width, int height);
-               [Deprecated (since = "1.12")]
                public bool get_auto_resize ();
-               [Deprecated (since = "1.12")]
                public void get_surface_size (out uint width, out uint height);
-               [Deprecated (since = "1.12")]
                public void invalidate ();
-               [Deprecated (since = "1.12")]
                public void invalidate_rectangle (Cairo.RectangleInt? rect);
-               [Deprecated (since = "1.12")]
                public void set_auto_resize (bool value);
-               [Deprecated (since = "1.12")]
                public void set_surface_size (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public bool auto_resize { get; set; }
-               [Deprecated (since = "1.12")]
                [NoAccessorMethod]
                public uint surface_height { get; set; }
-               [Deprecated (since = "1.12")]
                [NoAccessorMethod]
                public uint surface_width { get; set; }
-               [Deprecated (since = "1.12")]
                public virtual signal Cairo.Surface create_surface (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public virtual signal bool draw (Cairo.Context cr);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_canvas_get_type ()")]
@@ -6585,45 +6519,27 @@ namespace Clutter {
        [Deprecated (since = "1.8")]
        public class Shader : GLib.Object {
                [CCode (has_construct_function = false)]
-               [Deprecated (since = "1.8")]
                public Shader ();
-               [Deprecated (since = "1.8")]
                public bool compile () throws GLib.Error;
                public static GLib.Quark error_quark ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_fragment_shader ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_program ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_vertex_shader ();
-               [Deprecated (since = "1.8")]
                public unowned string get_fragment_source ();
-               [Deprecated (since = "1.8")]
                public bool get_is_enabled ();
-               [Deprecated (since = "1.8")]
                public unowned string get_vertex_source ();
-               [Deprecated (since = "1.8")]
                public bool is_compiled ();
-               [Deprecated (since = "1.8")]
                public void release ();
-               [Deprecated (since = "1.8")]
                public void set_fragment_source (string data, ssize_t length);
-               [Deprecated (since = "1.8")]
                public void set_is_enabled (bool enabled);
-               [Deprecated (since = "1.8")]
                public void set_uniform (string name, GLib.Value value);
-               [Deprecated (since = "1.8")]
                public void set_vertex_source (string data, ssize_t length);
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public bool compiled { get; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public bool enabled { get; set; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public string fragment_source { owned get; set; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public string vertex_source { owned get; set; }
        }
@@ -6851,13 +6767,10 @@ namespace Clutter {
        [Deprecated (since = "1.18")]
        public class TableLayout : Clutter.LayoutManager {
                [CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
-               [Deprecated (since = "1.18")]
                public TableLayout ();
                [Deprecated (since = "1.12")]
                public void get_alignment (Clutter.Actor actor, out Clutter.TableAlignment x_align, out 
Clutter.TableAlignment y_align);
-               [Deprecated (since = "1.18")]
                public int get_column_count ();
-               [Deprecated (since = "1.18")]
                public uint get_column_spacing ();
                [Deprecated (since = "1.12")]
                public uint get_easing_duration ();
@@ -6867,19 +6780,14 @@ namespace Clutter {
                public void get_expand (Clutter.Actor actor, out bool x_expand, out bool y_expand);
                [Deprecated (since = "1.12")]
                public void get_fill (Clutter.Actor actor, out bool x_fill, out bool y_fill);
-               [Deprecated (since = "1.18")]
                public int get_row_count ();
-               [Deprecated (since = "1.18")]
                public uint get_row_spacing ();
-               [Deprecated (since = "1.18")]
                public void get_span (Clutter.Actor actor, out int column_span, out int row_span);
                [Deprecated (since = "1.12")]
                public bool get_use_animations ();
-               [Deprecated (since = "1.18")]
                public void pack (Clutter.Actor actor, int column, int row);
                [Deprecated (since = "1.12")]
                public void set_alignment (Clutter.Actor actor, Clutter.TableAlignment x_align, 
Clutter.TableAlignment y_align);
-               [Deprecated (since = "1.18")]
                public void set_column_spacing (uint spacing);
                [Deprecated (since = "1.12")]
                public void set_easing_duration (uint msecs);
@@ -6889,19 +6797,15 @@ namespace Clutter {
                public void set_expand (Clutter.Actor actor, bool x_expand, bool y_expand);
                [Deprecated (since = "1.12")]
                public void set_fill (Clutter.Actor actor, bool x_fill, bool y_fill);
-               [Deprecated (since = "1.18")]
                public void set_row_spacing (uint spacing);
-               [Deprecated (since = "1.18")]
                public void set_span (Clutter.Actor actor, int column_span, int row_span);
                [Deprecated (since = "1.12")]
                public void set_use_animations (bool animate);
-               [Deprecated (since = "1.18")]
                public uint column_spacing { get; set; }
                [Deprecated (since = "1.12")]
                public uint easing_duration { get; set; }
                [Deprecated (since = "1.12")]
                public ulong easing_mode { get; set; }
-               [Deprecated (since = "1.18")]
                public uint row_spacing { get; set; }
                [Deprecated (since = "1.12")]
                public bool use_animations { get; set; }
@@ -7222,9 +7126,7 @@ namespace Clutter {
        public class TimeoutPool {
                [CCode (has_construct_function = false)]
                public TimeoutPool (int priority);
-               [Deprecated (since = "1.6")]
                public uint add (uint fps, owned GLib.SourceFunc func);
-               [Deprecated (since = "1.6")]
                public void remove (uint id_);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transition_get_type ()")]
@@ -7557,9 +7459,7 @@ namespace Clutter {
                public int y;
                public uint width;
                public uint height;
-               [Deprecated (since = "1.16")]
                public bool intersects (Clutter.Geometry geometry1);
-               [Deprecated (since = "1.16")]
                public Clutter.Geometry union (Clutter.Geometry geometry_b);
        }
        [CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]


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