Bug 557788 - Return types for constructors in generated typelib bogus
authorColin Walters <walters@src.gnome.org>
Thu, 13 Nov 2008 22:56:15 +0000 (22:56 +0000)
committerColin Walters <walters@src.gnome.org>
Thu, 13 Nov 2008 22:56:15 +0000 (22:56 +0000)
svn path=/trunk/; revision=920

ChangeLog
girepository/girnode.c
tests/scanner/annotation-1.0-expected.tgir
tests/scanner/foo-1.0-expected.tgir

index 75fa2a7..dfdd1b5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-11-13  Andreas Rottmann  <a.rottmann@gmx.at>
+
+       Bug 557788 - Return types for constructors in generated typelib bogus
+
+       * girepository/girnode.c: Namespace-qualify XREFs; not doing so is
+       obviously broken in the face of duplicate names in different
+       namespaces.
+       * tests/scanner/*expected.gir: Fix up.
+
 2008-11-13  Owen Taylor  <otaylor@redhat.com>
 
        * girepository/girffi.c: Fix  "Unexpected time for time_t"
index 92998ed..8851df0 100644 (file)
@@ -1216,7 +1216,11 @@ serialize_type (GIrModule    *module,
 
       iface = find_entry_node (module, modules, node->interface, NULL);
       if (iface)
-       name = iface->name;
+        {
+          if (iface->type == G_IR_NODE_XREF)
+            g_string_append_printf (str, "%s.", ((GIrNodeXRef *)iface)->namespace);
+          name = iface->name;
+        }
       else
        {
          g_warning ("Interface for type reference %s not found", node->interface);
index 3a4067b..a2c0146 100644 (file)
       <method name="get_objects" c:identifier="annotation_object_get_objects">
         <return-value transfer-ownership="container">
           <type name="GLib.SList">
-            <type name="GObject.Object"/>
+            <type name="Object"/>
           </type>
         </return-value>
       </method>
index 5a457f8..51430fe 100644 (file)
       </field>
       <constructor name="new" c:identifier="foo_object_new">
         <return-value transfer-ownership="full">
-          <type name="GObject.Object"/>
+          <type name="Object"/>
         </return-value>
       </constructor>
       <method name="external_type" c:identifier="foo_object_external_type">
         <return-value transfer-ownership="full">
-          <type name="GObject.Object"/>
+          <type name="utility.Object"/>
         </return-value>
       </method>
       <method name="various" c:identifier="foo_object_various">
     <class name="Subobject" parent="Object" abstract="1" glib:type-name="FooSubobject" glib:get-type="foo_subobject_get_type">
       <implements name="Interface"/>
       <field name="parent_instance">
-        <type name="GObject.Object"/>
+        <type name="Object"/>
       </field>
       <constructor name="new" c:identifier="foo_subobject_new">
         <return-value transfer-ownership="full">
     </class>
     <record name="SubobjectClass">
       <field name="parent_class">
-        <type name="GObject.ObjectClass"/>
+        <type name="ObjectClass"/>
       </field>
     </record>
     <function name="init" c:identifier="foo_init">
       </return-value>
       <parameters>
         <parameter name="foo" transfer-ownership="none">
-          <type name="GObject.Object"/>
+          <type name="Object"/>
         </parameter>
         <parameter name="b" transfer-ownership="none">
           <type name="boolean"/>
       </return-value>
       <parameters>
         <parameter name="object" transfer-ownership="none">
-          <type name="GObject.Object"/>
+          <type name="utility.Object"/>
         </parameter>
         <parameter name="e" transfer-ownership="none">
-          <type name="EnumType"/>
+          <type name="utility.EnumType"/>
         </parameter>
         <parameter name="f" transfer-ownership="none">
           <type name="utility.FlagType"/>