[vala/staging] girparser: Delay adding of "GLib.Object" prerequisite to interfaces



commit afde50f906adf7042a6b268b5afd4e75dd139f35
Author: Princeton Ferro <princetonferro gmail com>
Date:   Mon Feb 3 03:26:34 2020 -0500

    girparser: Delay adding of "GLib.Object" prerequisite to interfaces

 vala/valagirparser.vala | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 1e0d9a939..7deb4bef4 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -1331,6 +1331,7 @@ public class Vala.GirParser : CodeVisitor {
        HashMap<UnresolvedSymbol,Symbol> unresolved_symbols_map = new HashMap<UnresolvedSymbol,Symbol> 
(unresolved_symbol_hash, unresolved_symbol_equal);
        ArrayList<UnresolvedSymbol> unresolved_gir_symbols = new ArrayList<UnresolvedSymbol> ();
        HashMap<UnresolvedType,Node> unresolved_type_arguments = new HashMap<UnresolvedType,Node> ();
+       ArrayList<Interface> ifaces_needing_object_prereq = new ArrayList<Interface> ();
 
        /**
         * Parses all .gir source files in the specified code
@@ -1357,6 +1358,13 @@ public class Vala.GirParser : CodeVisitor {
 
                root.process (this);
 
+               /* Temporarily workaround G-I bug not adding GLib.Object prerequisite:
+                  ensure we have at least one instantiable prerequisite */
+               var object_type = (Class) glib_ns.scope.lookup ("Object");
+               foreach (var iface in ifaces_needing_object_prereq) {
+                       iface.add_prerequisite (new ObjectType (object_type));
+               }
+
                foreach (var metadata in metadata_roots) {
                        report_unused_metadata (metadata);
                }
@@ -3742,7 +3750,7 @@ public class Vala.GirParser : CodeVisitor {
                }
 
                if (!has_instantiable_prereq) {
-                       iface.add_prerequisite (new ObjectType ((ObjectTypeSymbol) glib_ns.scope.lookup 
("Object")));
+                       ifaces_needing_object_prereq.add (iface);
                }
        }
 


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