[gobject-introspection] regress: Add regression test for signal with GError param



commit 99db7d7fb3dbb9f4da416a21282aadf351eb3471
Author: Philip Chimento <philip chimento gmail com>
Date:   Thu Aug 1 13:37:47 2019 -0700

    regress: Add regression test for signal with GError param
    
    This exercises the little-used code path where a signal is emitted with
    a nullable GError as a parameter. It's modeled after
    GstPbutils.Discoverer's 'discovered' signal.
    
    See GNOME/gjs#262.

 .../Regress.TestObj-sig-with-gerror.page           |  34 ++
 .../Regress.TestObj.emit_sig_with_error.page       |  38 ++
 .../Regress.TestObj.emit_sig_with_null_error.page  |  38 ++
 .../Regress.TestObj-sig-with-gerror.page           |  34 ++
 .../Regress.TestObj.emit_sig_with_error.page       |  26 +
 .../Regress.TestObj.emit_sig_with_null_error.page  |  26 +
 .../Regress.TestObj-sig-with-gerror.page           |  40 ++
 .../Regress.TestObj.emit_sig_with_error.page       |  37 ++
 .../Regress.TestObj.emit_sig_with_null_error.page  |  37 ++
 tests/scanner/Regress-1.0-expected.gir             | 622 +++++++++++----------
 tests/scanner/Regress-1.0-sections-expected.txt    |   2 +
 tests/scanner/regress.c                            |  44 ++
 tests/scanner/regress.h                            |   6 +
 13 files changed, 701 insertions(+), 283 deletions(-)
---
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-gerror.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-gerror.page
new file mode 100644
index 00000000..b511ced1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-gerror.page
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-gerror"
+      type="topic"
+      style="signal"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="signal" type="guide"/>
+    <title type="link" role="topic">sig-with-gerror</title>
+  </info>
+  <title>Regress.TestObj::sig-with-gerror</title>
+  <synopsis><code mime="text/x-csrc">
+void sig-with-gerror (GError error);
+  </code></synopsis>
+  <p>This signal is modeled after #GstDiscoverer::discovered, and is added to
+exercise the path of a <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> being marshalled as a 
boxed type instead of
+an exception in the introspected language.</p>  <p>Use via <link 
xref="Regress.TestObj.emit_sig_with_error"/> and
+<link xref="Regress.TestObj.emit_sig_with_null_error"/>, or emit via the introspected
+language.</p>
+
+<terms>
+<item>
+<title><code>error</code></title>
+  <p>A <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> if something went wrong
+  internally in @self. You must not free this <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link>.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_error.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_error.page
new file mode 100644
index 00000000..a2acb8ca
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_error.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_error</api:name>
+      <api:arg>
+        <api:type>RegressTestObj*</api:type>
+        <api:name>self</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>regress_test_obj_emit_sig_with_error</title>
+  <synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_error (RegressTestObj* self);
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+  <p>The object to emit the signal.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_null_error.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_null_error.page
new file mode 100644
index 00000000..11e38be4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_null_error.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_null_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_null_error</api:name>
+      <api:arg>
+        <api:type>RegressTestObj*</api:type>
+        <api:name>self</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>regress_test_obj_emit_sig_with_null_error</title>
+  <synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_null_error (RegressTestObj* self);
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+  <p>The object to emit the signal.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-gerror.page 
b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-gerror.page
new file mode 100644
index 00000000..5a2c10f1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-gerror.page
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-gerror"
+      type="topic"
+      style="signal"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="signal" type="guide"/>
+    <title type="link" role="topic">sig-with-gerror</title>
+  </info>
+  <title>Regress.TestObj::sig-with-gerror</title>
+  <synopsis><code mime="text/x-gjs">
+connect('sig-with-gerror', function (testObj, error: <link 
href="../GLib-2.0/GLib.Error.html">GLib.Error</link>, ): void);
+  </code></synopsis>
+  <p>This signal is modeled after #GstDiscoverer::discovered, and is added to
+exercise the path of a <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> being marshalled as a 
boxed type instead of
+an exception in the introspected language.</p>  <p>Use via <link 
xref="Regress.TestObj.emit_sig_with_error"/> and
+<link xref="Regress.TestObj.emit_sig_with_null_error"/>, or emit via the introspected
+language.</p>
+
+<terms>
+<item>
+<title><code>testObj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>error</code></title>
+  <p>A <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> if something went wrong
+  internally in @self. You must not free this <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link>.</p>
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_error.page 
b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_error.page
new file mode 100644
index 00000000..1d0128eb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_error.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_error</api:name>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.prototype.emit_sig_with_error</title>
+  <synopsis><code mime="text/x-gjs">
+function emit_sig_with_error(): void {
+    // Gjs wrapper for regress_test_obj_emit_sig_with_error()
+}
+  </code></synopsis>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_null_error.page 
b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_null_error.page
new file mode 100644
index 00000000..84ff3771
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_null_error.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_null_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_null_error</api:name>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.prototype.emit_sig_with_null_error</title>
+  <synopsis><code mime="text/x-gjs">
+function emit_sig_with_null_error(): void {
+    // Gjs wrapper for regress_test_obj_emit_sig_with_null_error()
+}
+  </code></synopsis>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-gerror.page 
b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-gerror.page
new file mode 100644
index 00000000..9e0cd6e4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-gerror.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-gerror"
+      type="topic"
+      style="signal"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="signal" type="guide"/>
+    <title type="link" role="topic">sig-with-gerror</title>
+  </info>
+  <title>Regress.TestObj::sig-with-gerror</title>
+  <synopsis><code mime="text/x-python">
+def callback(test_obj, error, user_param1, ...)
+  </code></synopsis>
+  <p>This signal is modeled after #GstDiscoverer::discovered, and is added to
+exercise the path of a <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> being marshalled as a 
boxed type instead of
+an exception in the introspected language.</p>  <p>Use via <link 
xref="Regress.TestObj.emit_sig_with_error"/> and
+<link xref="Regress.TestObj.emit_sig_with_null_error"/>, or emit via the introspected
+language.</p>
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>error</code></title>
+  <p>A <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link> if something went wrong
+  internally in @self. You must not free this <link href="../GLib-2.0/GLib.Error.html">GLib.Error</link>.</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_error.page 
b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_error.page
new file mode 100644
index 00000000..de973b13
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_error.page
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>none</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_error</api:name>
+      <api:arg>
+        <api:type>Regress.TestObj</api:type>
+        <api:name>self</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.emit_sig_with_error</title>
+  <synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_error(self):
+    # Python wrapper for regress_test_obj_emit_sig_with_error()
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+  <p>The object to emit the signal.</p>
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_null_error.page 
b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_null_error.page
new file mode 100644
index 00000000..4ced2eb6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_null_error.page
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_null_error"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>none</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_null_error</api:name>
+      <api:arg>
+        <api:type>Regress.TestObj</api:type>
+        <api:name>self</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.emit_sig_with_null_error</title>
+  <synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_null_error(self):
+    # Python wrapper for regress_test_obj_emit_sig_with_null_error()
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+  <p>The object to emit the signal.</p>
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index a5e3665d..949df37b 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -18,8 +18,8 @@ and/or use gtk-doc annotations.  -->
     <alias name="AliasedTestBoxed" c:type="RegressAliasedTestBoxed">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1375">Typedef TestBoxed to test caller-allocates correctness</doc>
-      <source-position filename="regress.h" line="1380"/>
+           line="1381">Typedef TestBoxed to test caller-allocates correctness</doc>
+      <source-position filename="regress.h" line="1386"/>
       <type name="TestBoxed" c:type="RegressTestBoxed"/>
     </alias>
     <alias name="FooObjectCookie" c:type="RegressFooObjectCookie">
@@ -33,15 +33,15 @@ and/or use gtk-doc annotations.  -->
     <alias name="IntsetAlias" c:type="RegressIntsetAlias" introspectable="0">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1345">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
-      <source-position filename="regress.h" line="1351"/>
+           line="1351">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
+      <source-position filename="regress.h" line="1357"/>
       <type name="Intset" c:type="RegressIntset"/>
     </alias>
     <alias name="PtrArrayAlias" c:type="RegressPtrArrayAlias">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1353">Typedef'd GPtrArray for some reason</doc>
-      <source-position filename="regress.h" line="1358"/>
+           line="1359">Typedef'd GPtrArray for some reason</doc>
+      <source-position filename="regress.h" line="1364"/>
       <type name="GLib.PtrArray" c:type="GPtrArray"/>
     </alias>
     <alias name="TestTypeGUInt64" c:type="RegressTestTypeGUInt64">
@@ -51,8 +51,8 @@ and/or use gtk-doc annotations.  -->
     <alias name="VaListAlias" c:type="RegressVaListAlias" introspectable="0">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1364">Typedef'd va_list for additional reasons</doc>
-      <source-position filename="regress.h" line="1369"/>
+           line="1370">Typedef'd va_list for additional reasons</doc>
+      <source-position filename="regress.h" line="1375"/>
       <type name="va_list" c:type="va_list"/>
     </alias>
     <constant name="ANNOTATION_CALCULATED_DEFINE"
@@ -92,12 +92,12 @@ and/or use gtk-doc annotations.  -->
       </member>
     </enumeration>
     <record name="AnAnonymousUnion" c:type="RegressAnAnonymousUnion">
-      <source-position filename="regress.h" line="1481"/>
+      <source-position filename="regress.h" line="1487"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <union>
-        <source-position filename="regress.h" line="1480"/>
+        <source-position filename="regress.h" line="1486"/>
         <field name="a" writable="1">
           <array zero-terminated="0" fixed-size="2">
             <type name="LikeGnomeKeyringPasswordSchema"
@@ -1214,14 +1214,14 @@ it says it's pointer but it's actually a string.</doc>
     </record>
     <record name="AnonymousUnionAndStruct"
             c:type="RegressAnonymousUnionAndStruct">
-      <source-position filename="regress.h" line="1494"/>
+      <source-position filename="regress.h" line="1500"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <union>
-        <source-position filename="regress.h" line="1493"/>
+        <source-position filename="regress.h" line="1499"/>
         <record>
-          <source-position filename="regress.h" line="1490"/>
+          <source-position filename="regress.h" line="1496"/>
           <field name="a" writable="1">
             <type name="LikeGnomeKeyringPasswordSchema"
                   c:type="RegressLikeGnomeKeyringPasswordSchema*"/>
@@ -2582,13 +2582,13 @@ exposed to language bindings.</doc>
     <constant name="GI_SCANNER_ELSE"
               value="3"
               c:type="REGRESS_GI_SCANNER_ELSE">
-      <source-position filename="regress.h" line="1458"/>
+      <source-position filename="regress.h" line="1464"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="GI_SCANNER_IFDEF"
               value="3"
               c:type="REGRESS_GI_SCANNER_IFDEF">
-      <source-position filename="regress.h" line="1462"/>
+      <source-position filename="regress.h" line="1468"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="GUINT64_CONSTANT"
@@ -2616,18 +2616,18 @@ exposed to language bindings.</doc>
     <record name="Intset" c:type="RegressIntset" disguised="1">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1337">Like telepathy-glib's TpIntset.</doc>
-      <source-position filename="regress.h" line="1343"/>
+           line="1343">Like telepathy-glib's TpIntset.</doc>
+      <source-position filename="regress.h" line="1349"/>
     </record>
     <constant name="LONG_STRING_CONSTANT"
               
value="TYPE,VALUE,ENCODING,CHARSET,LANGUAGE,DOM,INTL,POSTAL,PARCEL,HOME,WORK,PREF,VOICE,FAX,MSG,CELL,PAGER,BBS,MODEM,CAR,ISDN,VIDEO,AOL,APPLELINK,ATTMAIL,CIS,EWORLD,INTERNET,IBMMAIL,MCIMAIL,POWERSHARE,PRODIGY,TLX,X400,GIF,CGM,WMF,BMP,MET,PMB,DIB,PICT,TIFF,PDF,PS,JPEG,QTIME,MPEG,MPEG2,AVI,WAVE,AIFF,PCM,X509,PGP"
               c:type="REGRESS_LONG_STRING_CONSTANT">
-      <source-position filename="regress.h" line="1429"/>
+      <source-position filename="regress.h" line="1435"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <record name="LikeGnomeKeyringPasswordSchema"
             c:type="RegressLikeGnomeKeyringPasswordSchema">
-      <source-position filename="regress.h" line="1448"/>
+      <source-position filename="regress.h" line="1454"/>
       <field name="dummy" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -2641,7 +2641,7 @@ exposed to language bindings.</doc>
       </field>
     </record>
     <record name="LikeXklConfigItem" c:type="RegressLikeXklConfigItem">
-      <source-position filename="regress.h" line="1415"/>
+      <source-position filename="regress.h" line="1421"/>
       <field name="name" writable="1">
         <array zero-terminated="0" fixed-size="32">
           <type name="gchar" c:type="gchar"/>
@@ -2649,7 +2649,7 @@ exposed to language bindings.</doc>
       </field>
       <method name="set_name"
               c:identifier="regress_like_xkl_config_item_set_name">
-        <source-position filename="regress.h" line="1419"/>
+        <source-position filename="regress.h" line="1425"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2666,13 +2666,13 @@ exposed to language bindings.</doc>
     <constant name="MAXUINT64"
               value="18446744073709551615"
               c:type="REGRESS_MAXUINT64">
-      <source-position filename="regress.h" line="1452"/>
+      <source-position filename="regress.h" line="1458"/>
       <type name="guint64" c:type="guint64"/>
     </constant>
     <constant name="MININT64"
               value="-9223372036854775808"
               c:type="REGRESS_MININT64">
-      <source-position filename="regress.h" line="1451"/>
+      <source-position filename="regress.h" line="1457"/>
       <type name="gint64" c:type="gint64"/>
     </constant>
     <constant name="Mixed_Case_Constant"
@@ -2698,9 +2698,9 @@ exposed to language bindings.</doc>
             introspectable="0">
       <doc xml:space="preserve"
            filename="regress.h"
-           line="1319">This should be skipped, and moreover, all function which
+           line="1325">This should be skipped, and moreover, all function which
 use it should be.</doc>
-      <source-position filename="regress.h" line="1329"/>
+      <source-position filename="regress.h" line="1335"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -2711,7 +2711,7 @@ use it should be.</doc>
     <function-macro name="TEST_FLOATING"
                     c:identifier="REGRESS_TEST_FLOATING"
                     introspectable="0">
-      <source-position filename="regress.h" line="1247"/>
+      <source-position filename="regress.h" line="1253"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2720,7 +2720,7 @@ use it should be.</doc>
     <function-macro name="TEST_FLOATING_GET_CLASS"
                     c:identifier="REGRESS_TEST_FLOATING_GET_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="1249"/>
+      <source-position filename="regress.h" line="1255"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2729,7 +2729,7 @@ use it should be.</doc>
     <function-macro name="TEST_FUNDAMENTAL_OBJECT"
                     c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT"
                     introspectable="0">
-      <source-position filename="regress.h" line="1001"/>
+      <source-position filename="regress.h" line="1007"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2738,7 +2738,7 @@ use it should be.</doc>
     <function-macro name="TEST_FUNDAMENTAL_OBJECT_CAST"
                     c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST"
                     introspectable="0">
-      <source-position filename="regress.h" line="1003"/>
+      <source-position filename="regress.h" line="1009"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2747,7 +2747,7 @@ use it should be.</doc>
     <function-macro name="TEST_FUNDAMENTAL_OBJECT_CLASS"
                     c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="1002"/>
+      <source-position filename="regress.h" line="1008"/>
       <parameters>
         <parameter name="klass">
         </parameter>
@@ -2756,7 +2756,7 @@ use it should be.</doc>
     <function-macro name="TEST_FUNDAMENTAL_OBJECT_GET_CLASS"
                     c:identifier="REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="1000"/>
+      <source-position filename="regress.h" line="1006"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2765,7 +2765,7 @@ use it should be.</doc>
     <function-macro name="TEST_GNUC_EXTENSION_STMT"
                     c:identifier="REGRESS_TEST_GNUC_EXTENSION_STMT"
                     introspectable="0">
-      <source-position filename="regress.h" line="1425"/>
+      <source-position filename="regress.h" line="1431"/>
       <parameters>
         <parameter name="foo">
         </parameter>
@@ -2774,7 +2774,7 @@ use it should be.</doc>
     <function-macro name="TEST_INTERFACE"
                     c:identifier="REGRESS_TEST_INTERFACE"
                     introspectable="0">
-      <source-position filename="regress.h" line="1195"/>
+      <source-position filename="regress.h" line="1201"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2783,7 +2783,7 @@ use it should be.</doc>
     <function-macro name="TEST_INTERFACE_GET_IFACE"
                     c:identifier="REGRESS_TEST_INTERFACE_GET_IFACE"
                     introspectable="0">
-      <source-position filename="regress.h" line="1197"/>
+      <source-position filename="regress.h" line="1203"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2792,7 +2792,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_FLOATING"
                     c:identifier="REGRESS_TEST_IS_FLOATING"
                     introspectable="0">
-      <source-position filename="regress.h" line="1248"/>
+      <source-position filename="regress.h" line="1254"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2801,7 +2801,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_FUNDAMENTAL_OBJECT"
                     c:identifier="REGRESS_TEST_IS_FUNDAMENTAL_OBJECT"
                     introspectable="0">
-      <source-position filename="regress.h" line="998"/>
+      <source-position filename="regress.h" line="1004"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2810,7 +2810,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_FUNDAMENTAL_OBJECT_CLASS"
                     c:identifier="REGRESS_TEST_IS_FUNDAMENTAL_OBJECT_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="999"/>
+      <source-position filename="regress.h" line="1005"/>
       <parameters>
         <parameter name="klass">
         </parameter>
@@ -2819,7 +2819,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_INTERFACE"
                     c:identifier="REGRESS_TEST_IS_INTERFACE"
                     introspectable="0">
-      <source-position filename="regress.h" line="1196"/>
+      <source-position filename="regress.h" line="1202"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2837,7 +2837,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_SUB_OBJECT"
                     c:identifier="REGRESS_TEST_IS_SUB_OBJECT"
                     introspectable="0">
-      <source-position filename="regress.h" line="964"/>
+      <source-position filename="regress.h" line="970"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2846,7 +2846,7 @@ use it should be.</doc>
     <function-macro name="TEST_IS_WI_802_1X"
                     c:identifier="REGRESS_TEST_IS_WI_802_1X"
                     introspectable="0">
-      <source-position filename="regress.h" line="1214"/>
+      <source-position filename="regress.h" line="1220"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2873,7 +2873,7 @@ use it should be.</doc>
     <function-macro name="TEST_SUB_OBJECT"
                     c:identifier="REGRESS_TEST_SUB_OBJECT"
                     introspectable="0">
-      <source-position filename="regress.h" line="963"/>
+      <source-position filename="regress.h" line="969"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2882,7 +2882,7 @@ use it should be.</doc>
     <function-macro name="TEST_SUB_OBJ_GET_CLASS"
                     c:identifier="REGRESS_TEST_SUB_OBJ_GET_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="965"/>
+      <source-position filename="regress.h" line="971"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -2891,7 +2891,7 @@ use it should be.</doc>
     <function-macro name="TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT"
                     c:identifier="REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT"
                     introspectable="0">
-      <source-position filename="regress.h" line="1038"/>
+      <source-position filename="regress.h" line="1044"/>
       <parameters>
         <parameter name="value">
         </parameter>
@@ -2900,7 +2900,7 @@ use it should be.</doc>
     <function-macro name="TEST_WI_802_1X"
                     c:identifier="REGRESS_TEST_WI_802_1X"
                     introspectable="0">
-      <source-position filename="regress.h" line="1213"/>
+      <source-position filename="regress.h" line="1219"/>
       <parameters>
         <parameter name="object">
         </parameter>
@@ -2909,7 +2909,7 @@ use it should be.</doc>
     <function-macro name="TEST_WI_802_1X_GET_CLASS"
                     c:identifier="REGRESS_TEST_WI_802_1X_GET_CLASS"
                     introspectable="0">
-      <source-position filename="regress.h" line="1215"/>
+      <source-position filename="regress.h" line="1221"/>
       <parameters>
         <parameter name="obj">
         </parameter>
@@ -3157,13 +3157,13 @@ use it should be.</doc>
       <source-position filename="regress.h" line="666"/>
     </record>
     <callback name="TestCallback" c:type="RegressTestCallback">
-      <source-position filename="regress.h" line="1075"/>
+      <source-position filename="regress.h" line="1081"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
     </callback>
     <callback name="TestCallbackArray" c:type="RegressTestCallbackArray">
-      <source-position filename="regress.h" line="1107"/>
+      <source-position filename="regress.h" line="1113"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -3188,7 +3188,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackArrayInOut"
               c:type="RegressTestCallbackArrayInOut">
-      <source-position filename="regress.h" line="1113"/>
+      <source-position filename="regress.h" line="1119"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3210,7 +3210,7 @@ use it should be.</doc>
       </parameters>
     </callback>
     <callback name="TestCallbackFull" c:type="RegressTestCallbackFull">
-      <source-position filename="regress.h" line="1094"/>
+      <source-position filename="regress.h" line="1100"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -3218,25 +3218,25 @@ use it should be.</doc>
         <parameter name="foo" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.h"
-               line="1090">the investment rate</doc>
+               line="1096">the investment rate</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="bar" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.h"
-               line="1091">how much money</doc>
+               line="1097">how much money</doc>
           <type name="gdouble" c:type="double"/>
         </parameter>
         <parameter name="path" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.h"
-               line="1092">Path to file</doc>
+               line="1098">Path to file</doc>
           <type name="filename" c:type="char*"/>
         </parameter>
       </parameters>
     </callback>
     <callback name="TestCallbackGError" c:type="RegressTestCallbackGError">
-      <source-position filename="regress.h" line="1082"/>
+      <source-position filename="regress.h" line="1088"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3248,7 +3248,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackHashtable"
               c:type="RegressTestCallbackHashtable">
-      <source-position filename="regress.h" line="1081"/>
+      <source-position filename="regress.h" line="1087"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3256,7 +3256,7 @@ use it should be.</doc>
         <parameter name="data" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.h"
-               line="1079">a hash table; will be modified</doc>
+               line="1085">a hash table; will be modified</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
             <type name="gint"/>
@@ -3266,7 +3266,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackOwnedGError"
               c:type="RegressTestCallbackOwnedGError">
-      <source-position filename="regress.h" line="1087"/>
+      <source-position filename="regress.h" line="1093"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3274,20 +3274,20 @@ use it should be.</doc>
         <parameter name="error" transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.h"
-               line="1085">GError instance; must be freed by the callback</doc>
+               line="1091">GError instance; must be freed by the callback</doc>
           <type name="GLib.Error" c:type="GError*"/>
         </parameter>
       </parameters>
     </callback>
     <callback name="TestCallbackReturnFull"
               c:type="RegressTestCallbackReturnFull">
-      <source-position filename="regress.h" line="1099"/>
+      <source-position filename="regress.h" line="1105"/>
       <return-value transfer-ownership="full">
         <type name="TestObj" c:type="RegressTestObj*"/>
       </return-value>
     </callback>
     <callback name="TestCallbackUserData" c:type="RegressTestCallbackUserData">
-      <source-position filename="regress.h" line="1076"/>
+      <source-position filename="regress.h" line="1082"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -3456,13 +3456,13 @@ use it should be.</doc>
            glib:type-name="RegressTestFloating"
            glib:get-type="regress_test_floating_get_type"
            glib:type-struct="TestFloatingClass">
-      <source-position filename="regress.h" line="1259"/>
+      <source-position filename="regress.h" line="1265"/>
       <constructor name="new" c:identifier="regress_test_floating_new">
-        <source-position filename="regress.h" line="1266"/>
+        <source-position filename="regress.h" line="1272"/>
         <return-value transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4223">A new floating #RegressTestFloating</doc>
+               line="4267">A new floating #RegressTestFloating</doc>
           <type name="TestFloating" c:type="RegressTestFloating*"/>
         </return-value>
       </constructor>
@@ -3473,7 +3473,7 @@ use it should be.</doc>
     <record name="TestFloatingClass"
             c:type="RegressTestFloatingClass"
             glib:is-gtype-struct-for="TestFloating">
-      <source-position filename="regress.h" line="1259"/>
+      <source-position filename="regress.h" line="1265"/>
       <field name="parent_class">
         <type name="GObject.InitiallyUnownedClass"
               c:type="GInitiallyUnownedClass"/>
@@ -3491,9 +3491,9 @@ use it should be.</doc>
            glib:unref-func="regress_test_fundamental_object_unref"
            glib:set-value-func="regress_test_value_set_fundamental_object"
            glib:get-value-func="regress_test_value_get_fundamental_object">
-      <source-position filename="regress.h" line="1027"/>
+      <source-position filename="regress.h" line="1033"/>
       <virtual-method name="copy">
-        <source-position filename="regress.h" line="1012"/>
+        <source-position filename="regress.h" line="1018"/>
         <return-value transfer-ownership="full">
           <type name="TestFundamentalObject"
                 c:type="RegressTestFundamentalObject*"/>
@@ -3506,7 +3506,7 @@ use it should be.</doc>
         </parameters>
       </virtual-method>
       <virtual-method name="finalize">
-        <source-position filename="regress.h" line="1013"/>
+        <source-position filename="regress.h" line="1019"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3518,11 +3518,11 @@ use it should be.</doc>
         </parameters>
       </virtual-method>
       <method name="ref" c:identifier="regress_test_fundamental_object_ref">
-        <source-position filename="regress.h" line="1033"/>
+        <source-position filename="regress.h" line="1039"/>
         <return-value transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3340">A new #RegressTestFundamentalObject</doc>
+               line="3384">A new #RegressTestFundamentalObject</doc>
           <type name="TestFundamentalObject"
                 c:type="RegressTestFundamentalObject*"/>
         </return-value>
@@ -3536,7 +3536,7 @@ use it should be.</doc>
       </method>
       <method name="unref"
               c:identifier="regress_test_fundamental_object_unref">
-        <source-position filename="regress.h" line="1036"/>
+        <source-position filename="regress.h" line="1042"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3561,7 +3561,7 @@ use it should be.</doc>
     <record name="TestFundamentalObjectClass"
             c:type="RegressTestFundamentalObjectClass"
             glib:is-gtype-struct-for="TestFundamentalObject">
-      <source-position filename="regress.h" line="1027"/>
+      <source-position filename="regress.h" line="1033"/>
       <field name="type_class">
         <type name="GObject.TypeClass" c:type="GTypeClass"/>
       </field>
@@ -3576,7 +3576,7 @@ use it should be.</doc>
     </record>
     <callback name="TestFundamentalObjectCopyFunction"
               c:type="RegressTestFundamentalObjectCopyFunction">
-      <source-position filename="regress.h" line="1012"/>
+      <source-position filename="regress.h" line="1018"/>
       <return-value transfer-ownership="full">
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -3590,7 +3590,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestFundamentalObjectFinalizeFunction"
               c:type="RegressTestFundamentalObjectFinalizeFunction">
-      <source-position filename="regress.h" line="1013"/>
+      <source-position filename="regress.h" line="1019"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3609,10 +3609,10 @@ use it should be.</doc>
            glib:get-type="regress_test_fundamental_sub_object_get_type"
            glib:type-struct="TestFundamentalSubObjectClass"
            glib:fundamental="1">
-      <source-position filename="regress.h" line="1057"/>
+      <source-position filename="regress.h" line="1063"/>
       <constructor name="new"
                    c:identifier="regress_test_fundamental_sub_object_new">
-        <source-position filename="regress.h" line="1066"/>
+        <source-position filename="regress.h" line="1072"/>
         <return-value transfer-ownership="full">
           <type name="TestFundamentalSubObject"
                 c:type="RegressTestFundamentalSubObject*"/>
@@ -3634,7 +3634,7 @@ use it should be.</doc>
     <record name="TestFundamentalSubObjectClass"
             c:type="RegressTestFundamentalSubObjectClass"
             glib:is-gtype-struct-for="TestFundamentalSubObject">
-      <source-position filename="regress.h" line="1057"/>
+      <source-position filename="regress.h" line="1063"/>
       <field name="fundamental_object_class">
         <type name="TestFundamentalObjectClass"
               c:type="RegressTestFundamentalObjectClass"/>
@@ -3758,10 +3758,10 @@ use it should be.</doc>
                glib:type-name="RegressTestInterface"
                glib:get-type="regress_test_interface_get_type"
                glib:type-struct="TestInterfaceIface">
-      <source-position filename="regress.h" line="1203"/>
+      <source-position filename="regress.h" line="1209"/>
       <method name="emit_signal"
               c:identifier="regress_test_interface_emit_signal">
-        <source-position filename="regress.h" line="1209"/>
+        <source-position filename="regress.h" line="1215"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3769,7 +3769,7 @@ use it should be.</doc>
           <instance-parameter name="self" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="4082">the object to emit the signal</doc>
+                 line="4126">the object to emit the signal</doc>
             <type name="TestInterface" c:type="RegressTestInterface*"/>
           </instance-parameter>
         </parameters>
@@ -3788,7 +3788,7 @@ use it should be.</doc>
           <parameter name="ptr" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="4063">the code must look up the signal with
+                 line="4107">the code must look up the signal with
   g_interface_info_find_signal() in order to get this to work.</doc>
             <type name="gint" c:type="gpointer"/>
           </parameter>
@@ -3798,13 +3798,13 @@ use it should be.</doc>
     <record name="TestInterfaceIface"
             c:type="RegressTestInterfaceIface"
             glib:is-gtype-struct-for="TestInterface">
-      <source-position filename="regress.h" line="1203"/>
+      <source-position filename="regress.h" line="1209"/>
       <field name="base_iface">
         <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
       </field>
     </record>
     <callback name="TestNoPtrCallback" c:type="RegressTestNoPtrCallback">
-      <source-position filename="regress.h" line="1074"/>
+      <source-position filename="regress.h" line="1080"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -3832,14 +3832,14 @@ use it should be.</doc>
           <parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2770">A #RegressTestObj</doc>
+                 line="2791">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </parameter>
         </parameters>
       </constructor>
       <constructor name="new_callback"
                    c:identifier="regress_test_obj_new_callback">
-        <source-position filename="regress.h" line="1171"/>
+        <source-position filename="regress.h" line="1177"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
@@ -3877,7 +3877,7 @@ use it should be.</doc>
         </parameters>
       </constructor>
       <function name="null_out" c:identifier="regress_test_obj_null_out">
-        <source-position filename="regress.h" line="947"/>
+        <source-position filename="regress.h" line="953"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3890,14 +3890,14 @@ use it should be.</doc>
                      allow-none="1">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3159">A #RegressTestObj</doc>
+                 line="3203">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj**"/>
           </parameter>
         </parameters>
       </function>
       <function name="static_method"
                 c:identifier="regress_test_obj_static_method">
-        <source-position filename="regress.h" line="855"/>
+        <source-position filename="regress.h" line="861"/>
         <return-value transfer-ownership="none">
           <type name="gdouble" c:type="double"/>
         </return-value>
@@ -3909,7 +3909,7 @@ use it should be.</doc>
       </function>
       <function name="static_method_callback"
                 c:identifier="regress_test_obj_static_method_callback">
-        <source-position filename="regress.h" line="1168"/>
+        <source-position filename="regress.h" line="1174"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3960,7 +3960,7 @@ use it should be.</doc>
       <virtual-method name="matrix" invoker="do_matrix">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3133">This method is virtual.  Notably its name differs from the virtual
+             line="3177">This method is virtual.  Notably its name differs from the virtual
 slot name, which makes it useful for testing bindings handle this
 case.</doc>
         <source-position filename="regress.h" line="797"/>
@@ -3971,13 +3971,13 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3135">A #RegressTestObj</doc>
+                 line="3179">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="somestr" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3136">Meaningless string</doc>
+                 line="3180">Meaningless string</doc>
             <type name="utf8" c:type="const char*"/>
           </parameter>
         </parameters>
@@ -3985,10 +3985,10 @@ case.</doc>
       <method name="do_matrix" c:identifier="regress_test_obj_do_matrix">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3133">This method is virtual.  Notably its name differs from the virtual
+             line="3177">This method is virtual.  Notably its name differs from the virtual
 slot name, which makes it useful for testing bindings handle this
 case.</doc>
-        <source-position filename="regress.h" line="940"/>
+        <source-position filename="regress.h" line="946"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -3996,13 +3996,13 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3135">A #RegressTestObj</doc>
+                 line="3179">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="somestr" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3136">Meaningless string</doc>
+                 line="3180">Meaningless string</doc>
             <type name="utf8" c:type="const char*"/>
           </parameter>
         </parameters>
@@ -4019,6 +4019,21 @@ case.</doc>
           </instance-parameter>
         </parameters>
       </method>
+      <method name="emit_sig_with_error"
+              c:identifier="regress_test_obj_emit_sig_with_error">
+        <source-position filename="regress.h" line="849"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2898">The object to emit the signal.</doc>
+            <type name="TestObj" c:type="RegressTestObj*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
       <method name="emit_sig_with_foreign_struct"
               c:identifier="regress_test_obj_emit_sig_with_foreign_struct">
         <source-position filename="regress.h" line="834"/>
@@ -4035,7 +4050,7 @@ case.</doc>
               c:identifier="regress_test_obj_emit_sig_with_inout_int">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2861">The signal handler must increment the inout parameter by 1.</doc>
+             line="2882">The signal handler must increment the inout parameter by 1.</doc>
         <source-position filename="regress.h" line="846"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -4044,7 +4059,7 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2863">The object to emit the signal.</doc>
+                 line="2884">The object to emit the signal.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
         </parameters>
@@ -4061,6 +4076,21 @@ case.</doc>
           </instance-parameter>
         </parameters>
       </method>
+      <method name="emit_sig_with_null_error"
+              c:identifier="regress_test_obj_emit_sig_with_null_error">
+        <source-position filename="regress.h" line="852"/>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="self" transfer-ownership="none">
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2911">The object to emit the signal.</doc>
+            <type name="TestObj" c:type="RegressTestObj*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
       <method name="emit_sig_with_obj"
               c:identifier="regress_test_obj_emit_sig_with_obj">
         <source-position filename="regress.h" line="831"/>
@@ -4086,7 +4116,7 @@ case.</doc>
         </parameters>
       </method>
       <method name="forced_method" c:identifier="regress_forced_method">
-        <source-position filename="regress.h" line="858"/>
+        <source-position filename="regress.h" line="864"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4094,14 +4124,14 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2900">A #RegressTestObj</doc>
+                 line="2944">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="instance_method"
               c:identifier="regress_test_obj_instance_method">
-        <source-position filename="regress.h" line="849"/>
+        <source-position filename="regress.h" line="855"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -4113,7 +4143,7 @@ case.</doc>
       </method>
       <method name="instance_method_callback"
               c:identifier="regress_test_obj_instance_method_callback">
-        <source-position filename="regress.h" line="1165"/>
+        <source-position filename="regress.h" line="1171"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4132,7 +4162,7 @@ case.</doc>
       </method>
       <method name="instance_method_full"
               c:identifier="regress_test_obj_instance_method_full">
-        <source-position filename="regress.h" line="852"/>
+        <source-position filename="regress.h" line="858"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4144,7 +4174,7 @@ case.</doc>
       </method>
       <method name="name_conflict"
               c:identifier="regress_test_obj_name_conflict">
-        <source-position filename="regress.h" line="959"/>
+        <source-position filename="regress.h" line="965"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4152,14 +4182,14 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3203">A #RegressTestObj</doc>
+                 line="3247">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="not_nullable_element_typed_gpointer_in"
               c:identifier="regress_test_obj_not_nullable_element_typed_gpointer_in">
-        <source-position filename="regress.h" line="954"/>
+        <source-position filename="regress.h" line="960"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4167,13 +4197,13 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3190">A #RegressTestObj</doc>
+                 line="3234">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="input" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3191">some uint8 array</doc>
+                 line="3235">some uint8 array</doc>
             <array length="1" zero-terminated="0" c:type="gpointer">
               <type name="guint8"/>
             </array>
@@ -4181,14 +4211,14 @@ case.</doc>
           <parameter name="count" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3192">length of @input</doc>
+                 line="3236">length of @input</doc>
             <type name="guint" c:type="guint"/>
           </parameter>
         </parameters>
       </method>
       <method name="not_nullable_typed_gpointer_in"
               c:identifier="regress_test_obj_not_nullable_typed_gpointer_in">
-        <source-position filename="regress.h" line="951"/>
+        <source-position filename="regress.h" line="957"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4196,13 +4226,13 @@ case.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3179">A #RegressTestObj</doc>
+                 line="3223">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="input" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3180">some #GObject</doc>
+                 line="3224">some #GObject</doc>
             <type name="GObject.Object" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -4229,25 +4259,25 @@ case.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3097">Check that the out value is skipped</doc>
-        <source-position filename="regress.h" line="928"/>
+             line="3141">Check that the out value is skipped</doc>
+        <source-position filename="regress.h" line="934"/>
         <return-value transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3111">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+               line="3155">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3099">A #RegressTestObj.</doc>
+                 line="3143">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3100">Parameter.</doc>
+                 line="3144">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
@@ -4256,13 +4286,13 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3101">Return value.</doc>
+                 line="3145">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3102">Other parameter.</doc>
+                 line="3146">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
@@ -4272,7 +4302,7 @@ case.</doc>
                      skip="1">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3103">Will be incremented.</doc>
+                 line="3147">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
@@ -4281,19 +4311,19 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3104">Return value.</doc>
+                 line="3148">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3105">Number.</doc>
+                 line="3149">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3106">Number.</doc>
+                 line="3150">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4303,25 +4333,25 @@ case.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3061">Check that the out value is skipped</doc>
-        <source-position filename="regress.h" line="916"/>
+             line="3105">Check that the out value is skipped</doc>
+        <source-position filename="regress.h" line="922"/>
         <return-value transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3075">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+               line="3119">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3063">A #RegressTestObj.</doc>
+                 line="3107">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3064">Parameter.</doc>
+                 line="3108">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
@@ -4331,13 +4361,13 @@ case.</doc>
                      skip="1">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3065">Return value.</doc>
+                 line="3109">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3066">Other parameter.</doc>
+                 line="3110">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
@@ -4346,7 +4376,7 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3067">Will be incremented.</doc>
+                 line="3111">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
@@ -4355,19 +4385,19 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3068">Return value.</doc>
+                 line="3112">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3069">Number.</doc>
+                 line="3113">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3070">Number.</doc>
+                 line="3114">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4377,25 +4407,25 @@ case.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3025">Check that a parameter is skipped</doc>
-        <source-position filename="regress.h" line="904"/>
+             line="3069">Check that a parameter is skipped</doc>
+        <source-position filename="regress.h" line="910"/>
         <return-value transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3039">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+               line="3083">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3027">A #RegressTestObj.</doc>
+                 line="3071">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3028">Parameter.</doc>
+                 line="3072">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
@@ -4404,13 +4434,13 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3029">Return value.</doc>
+                 line="3073">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none" skip="1">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3030">Other parameter.</doc>
+                 line="3074">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
@@ -4419,7 +4449,7 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3031">Will be incremented.</doc>
+                 line="3075">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
@@ -4428,19 +4458,19 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3032">Return value.</doc>
+                 line="3076">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3033">Number.</doc>
+                 line="3077">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3034">Number.</doc>
+                 line="3078">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4450,25 +4480,25 @@ case.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2965">Check that the return value is skipped</doc>
-        <source-position filename="regress.h" line="886"/>
+             line="3009">Check that the return value is skipped</doc>
+        <source-position filename="regress.h" line="892"/>
         <return-value transfer-ownership="none" skip="1">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="2979">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+               line="3023">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2967">a #RegressTestObj</doc>
+                 line="3011">a #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2968">Parameter.</doc>
+                 line="3012">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
@@ -4477,13 +4507,13 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2969">A return value.</doc>
+                 line="3013">A return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2970">Other parameter.</doc>
+                 line="3014">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
@@ -4492,7 +4522,7 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2971">Will be incremented.</doc>
+                 line="3015">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
@@ -4501,19 +4531,19 @@ case.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2972">Return value.</doc>
+                 line="3016">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2973">Number.</doc>
+                 line="3017">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2974">Number.</doc>
+                 line="3018">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4523,33 +4553,33 @@ case.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3001">Check that the return value is skipped. Succeed if a is nonzero, otherwise
+             line="3045">Check that the return value is skipped. Succeed if a is nonzero, otherwise
 raise an error.</doc>
-        <source-position filename="regress.h" line="898"/>
+        <source-position filename="regress.h" line="904"/>
         <return-value transfer-ownership="none" skip="1">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3010">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+               line="3054">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3003">a #RegressTestObj</doc>
+                 line="3047">a #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="3004">Parameter.</doc>
+                 line="3048">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
       </method>
       <method name="torture_signature_0"
               c:identifier="regress_test_obj_torture_signature_0">
-        <source-position filename="regress.h" line="866"/>
+        <source-position filename="regress.h" line="872"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4557,7 +4587,7 @@ raise an error.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2910">A #RegressTestObj</doc>
+                 line="2954">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="x" transfer-ownership="none">
@@ -4594,8 +4624,8 @@ raise an error.</doc>
               throws="1">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2933">This function throws an error if m is odd.</doc>
-        <source-position filename="regress.h" line="875"/>
+             line="2977">This function throws an error if m is odd.</doc>
+        <source-position filename="regress.h" line="881"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -4603,7 +4633,7 @@ raise an error.</doc>
           <instance-parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2935">A #RegressTestObj</doc>
+                 line="2979">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="x" transfer-ownership="none">
@@ -4779,7 +4809,7 @@ raise an error.</doc>
       <glib:signal name="sig-with-array-len-prop" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2360">This test signal similar to GSettings::change-event.
+             line="2361">This test signal similar to GSettings::change-event.
 You can use this with regress_test_obj_emit_sig_with_array_len_prop(), or
 raise from the introspection client language.</doc>
         <return-value transfer-ownership="none">
@@ -4792,7 +4822,7 @@ raise from the introspection client language.</doc>
                      allow-none="1">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2363">numbers, or %NULL</doc>
+                 line="2364">numbers, or %NULL</doc>
             <array length="1" zero-terminated="0" c:type="gpointer">
               <type name="guint"/>
             </array>
@@ -4800,7 +4830,7 @@ raise from the introspection client language.</doc>
           <parameter name="len" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2364">length of @arr, or 0</doc>
+                 line="2365">length of @arr, or 0</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4808,7 +4838,7 @@ raise from the introspection client language.</doc>
       <glib:signal name="sig-with-array-prop" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2340">This test signal is like TelepathyGlib's
+             line="2341">This test signal is like TelepathyGlib's
  TpChannel:: group-members-changed-detailed:</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -4817,7 +4847,7 @@ raise from the introspection client language.</doc>
           <parameter name="arr" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2343">numbers</doc>
+                 line="2344">numbers</doc>
             <array name="GLib.Array">
               <type name="guint"/>
             </array>
@@ -4832,15 +4862,41 @@ raise from the introspection client language.</doc>
           <parameter name="cr" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2446">A cairo context.</doc>
+                 line="2447">A cairo context.</doc>
             <type name="cairo.Context"/>
           </parameter>
         </parameters>
       </glib:signal>
+      <glib:signal name="sig-with-gerror" when="last">
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2575">This signal is modeled after #GstDiscoverer::discovered, and is added to
+exercise the path of a #GError being marshalled as a boxed type instead of
+an exception in the introspected language.
+
+Use via regress_test_obj_emit_sig_with_error() and
+regress_test_obj_emit_sig_with_null_error(), or emit via the introspected
+language.</doc>
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <parameter name="error"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2578">A #GError if something went wrong
+  internally in @self. You must not free this #GError.</doc>
+            <type name="GLib.Error"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
       <glib:signal name="sig-with-hash-prop" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2383">This test signal is like TelepathyGlib's
+             line="2384">This test signal is like TelepathyGlib's
  TpAccount::status-changed</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -4857,7 +4913,7 @@ raise from the introspection client language.</doc>
       <glib:signal name="sig-with-inout-int" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2553">This signal is modeled after GtkEditable::insert-text.</doc>
+             line="2554">This signal is modeled after GtkEditable::insert-text.</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4868,7 +4924,7 @@ raise from the introspection client language.</doc>
                      transfer-ownership="full">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2556">The position, in characters, at which to
+                 line="2557">The position, in characters, at which to
     insert the new text. This is an in-out paramter. After the signal
     emission is finished, it should point after the newly inserted text.</doc>
             <type name="gint" c:type="gpointer"/>
@@ -4878,7 +4934,7 @@ raise from the introspection client language.</doc>
       <glib:signal name="sig-with-int64-prop" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2494">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+             line="2495">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
 the introspection client langage.</doc>
         <return-value transfer-ownership="none">
           <type name="gint64" c:type="gint64"/>
@@ -4887,7 +4943,7 @@ the introspection client langage.</doc>
           <parameter name="i" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2497">an integer</doc>
+                 line="2498">an integer</doc>
             <type name="gint64" c:type="gint64"/>
           </parameter>
         </parameters>
@@ -4902,7 +4958,7 @@ the introspection client langage.</doc>
           <parameter name="i" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2537">an integer</doc>
+                 line="2538">an integer</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -4910,7 +4966,7 @@ the introspection client langage.</doc>
       <glib:signal name="sig-with-obj" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2422">Test transfer none GObject as a param (tests refcounting).
+             line="2423">Test transfer none GObject as a param (tests refcounting).
 Use with regress_test_obj_emit_sig_with_obj</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -4919,7 +4975,7 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
           <parameter name="obj" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2425">A newly created RegressTestObj</doc>
+                 line="2426">A newly created RegressTestObj</doc>
             <type name="GObject.Object"/>
           </parameter>
         </parameters>
@@ -4927,7 +4983,7 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
       <glib:signal name="sig-with-strv" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2403">Test GStrv as a param.</doc>
+             line="2404">Test GStrv as a param.</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4935,7 +4991,7 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
           <parameter name="strs" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2406">strings</doc>
+                 line="2407">strings</doc>
             <array>
               <type name="utf8"/>
             </array>
@@ -4945,7 +5001,7 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
       <glib:signal name="sig-with-uint64-prop" when="last">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="2514">You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+             line="2515">You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
 the introspection client langage.</doc>
         <return-value transfer-ownership="none">
           <type name="guint64" c:type="guint64"/>
@@ -4954,7 +5010,7 @@ the introspection client langage.</doc>
           <parameter name="i" transfer-ownership="none">
             <doc xml:space="preserve"
                  filename="regress.c"
-                 line="2517">an integer</doc>
+                 line="2518">an integer</doc>
             <type name="guint64" c:type="guint64"/>
           </parameter>
         </parameters>
@@ -4995,13 +5051,13 @@ the introspection client langage.</doc>
             <parameter name="obj" transfer-ownership="none">
               <doc xml:space="preserve"
                    filename="regress.c"
-                   line="3135">A #RegressTestObj</doc>
+                   line="3179">A #RegressTestObj</doc>
               <type name="TestObj" c:type="RegressTestObj*"/>
             </parameter>
             <parameter name="somestr" transfer-ownership="none">
               <doc xml:space="preserve"
                    filename="regress.c"
-                   line="3136">Meaningless string</doc>
+                   line="3180">Meaningless string</doc>
               <type name="utf8" c:type="const char*"/>
             </parameter>
           </parameters>
@@ -5084,7 +5140,7 @@ the introspection client langage.</doc>
       </function>
     </enumeration>
     <bitfield name="TestPrivateEnum" c:type="RegressTestPrivateEnum">
-      <source-position filename="regress.h" line="1402"/>
+      <source-position filename="regress.h" line="1408"/>
       <member name="public_enum_before"
               value="1"
               c:identifier="REGRESS_TEST_PUBLIC_ENUM_BEFORE">
@@ -5095,7 +5151,7 @@ the introspection client langage.</doc>
       </member>
     </bitfield>
     <record name="TestPrivateStruct" c:type="RegressTestPrivateStruct">
-      <source-position filename="regress.h" line="1394"/>
+      <source-position filename="regress.h" line="1400"/>
       <field name="this_is_public_before" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -5107,7 +5163,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestReferenceCounters" c:type="RegressTestReferenceCounters">
-      <source-position filename="regress.h" line="1504"/>
+      <source-position filename="regress.h" line="1510"/>
       <field name="refcount" writable="1">
         <type name="gint" c:type="grefcount"/>
       </field>
@@ -5207,7 +5263,7 @@ the introspection client langage.</doc>
       </method>
     </record>
     <callback name="TestSimpleCallback" c:type="RegressTestSimpleCallback">
-      <source-position filename="regress.h" line="1073"/>
+      <source-position filename="regress.h" line="1079"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5414,7 +5470,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestStructFixedArray" c:type="RegressTestStructFixedArray">
-      <source-position filename="regress.h" line="1407"/>
+      <source-position filename="regress.h" line="1413"/>
       <field name="just_int" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -5424,7 +5480,7 @@ the introspection client langage.</doc>
         </array>
       </field>
       <method name="frob" c:identifier="regress_test_struct_fixed_array_frob">
-        <source-position filename="regress.h" line="1411"/>
+        <source-position filename="regress.h" line="1417"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -5443,17 +5499,17 @@ the introspection client langage.</doc>
            glib:type-name="RegressTestSubObj"
            glib:get-type="regress_test_sub_obj_get_type"
            glib:type-struct="TestSubObjClass">
-      <source-position filename="regress.h" line="981"/>
+      <source-position filename="regress.h" line="987"/>
       <implements name="TestInterface"/>
       <constructor name="new" c:identifier="regress_test_sub_obj_new">
-        <source-position filename="regress.h" line="988"/>
+        <source-position filename="regress.h" line="994"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
       </constructor>
       <method name="instance_method"
               c:identifier="regress_test_sub_obj_instance_method">
-        <source-position filename="regress.h" line="994"/>
+        <source-position filename="regress.h" line="1000"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -5464,7 +5520,7 @@ the introspection client langage.</doc>
         </parameters>
       </method>
       <method name="unset_bare" c:identifier="regress_test_sub_obj_unset_bare">
-        <source-position filename="regress.h" line="991"/>
+        <source-position filename="regress.h" line="997"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -5493,7 +5549,7 @@ the introspection client langage.</doc>
     <record name="TestSubObjClass"
             c:type="RegressTestSubObjClass"
             glib:is-gtype-struct-for="TestSubObj">
-      <source-position filename="regress.h" line="981"/>
+      <source-position filename="regress.h" line="987"/>
       <field name="parent_class">
         <type name="TestObjClass" c:type="RegressTestObjClass"/>
       </field>
@@ -5505,16 +5561,16 @@ the introspection client langage.</doc>
            glib:type-name="RegressTestWi8021x"
            glib:get-type="regress_test_wi_802_1x_get_type"
            glib:type-struct="TestWi8021xClass">
-      <source-position filename="regress.h" line="1227"/>
+      <source-position filename="regress.h" line="1233"/>
       <constructor name="new" c:identifier="regress_test_wi_802_1x_new">
-        <source-position filename="regress.h" line="1234"/>
+        <source-position filename="regress.h" line="1240"/>
         <return-value transfer-ownership="full">
           <type name="TestWi8021x" c:type="RegressTestWi8021x*"/>
         </return-value>
       </constructor>
       <function name="static_method"
                 c:identifier="regress_test_wi_802_1x_static_method">
-        <source-position filename="regress.h" line="1243"/>
+        <source-position filename="regress.h" line="1249"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -5526,7 +5582,7 @@ the introspection client langage.</doc>
       </function>
       <method name="get_testbool"
               c:identifier="regress_test_wi_802_1x_get_testbool">
-        <source-position filename="regress.h" line="1237"/>
+        <source-position filename="regress.h" line="1243"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -5538,7 +5594,7 @@ the introspection client langage.</doc>
       </method>
       <method name="set_testbool"
               c:identifier="regress_test_wi_802_1x_set_testbool">
-        <source-position filename="regress.h" line="1240"/>
+        <source-position filename="regress.h" line="1246"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -5564,7 +5620,7 @@ the introspection client langage.</doc>
     <record name="TestWi8021xClass"
             c:type="RegressTestWi8021xClass"
             glib:is-gtype-struct-for="TestWi8021x">
-      <source-position filename="regress.h" line="1227"/>
+      <source-position filename="regress.h" line="1233"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
@@ -5572,12 +5628,12 @@ the introspection client langage.</doc>
     <constant name="UTF8_CONSTANT"
               value="const ♥ utf8"
               c:type="REGRESS_UTF8_CONSTANT">
-      <source-position filename="regress.h" line="1422"/>
+      <source-position filename="regress.h" line="1428"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <function name="aliased_caller_alloc"
               c:identifier="regress_aliased_caller_alloc">
-      <source-position filename="regress.h" line="1384"/>
+      <source-position filename="regress.h" line="1390"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6234,7 +6290,7 @@ exposed to language bindings.</doc>
       </parameters>
     </function>
     <function name="func_obj_null_in" c:identifier="regress_func_obj_null_in">
-      <source-position filename="regress.h" line="944"/>
+      <source-position filename="regress.h" line="950"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6245,14 +6301,14 @@ exposed to language bindings.</doc>
                    allow-none="1">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3150">A #RegressTestObj</doc>
+               line="3194">A #RegressTestObj</doc>
           <type name="TestObj" c:type="RegressTestObj*"/>
         </parameter>
       </parameters>
     </function>
     <function name="func_obj_nullable_in"
               c:identifier="regress_func_obj_nullable_in">
-      <source-position filename="regress.h" line="949"/>
+      <source-position filename="regress.h" line="955"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6263,17 +6319,17 @@ exposed to language bindings.</doc>
                    allow-none="1">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3170">A #RegressTestObj</doc>
+               line="3214">A #RegressTestObj</doc>
           <type name="TestObj" c:type="RegressTestObj*"/>
         </parameter>
       </parameters>
     </function>
     <function name="get_variant" c:identifier="regress_get_variant">
-      <source-position filename="regress.h" line="1497"/>
+      <source-position filename="regress.h" line="1503"/>
       <return-value transfer-ownership="none">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="4499">A new variant</doc>
+             line="4543">A new variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
@@ -6299,9 +6355,9 @@ exposed to language bindings.</doc>
               c:identifier="regress_has_parameter_named_attrs">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4459">This test case mirrors GnomeKeyringPasswordSchema from
+           line="4503">This test case mirrors GnomeKeyringPasswordSchema from
 libgnome-keyring.</doc>
-      <source-position filename="regress.h" line="1437"/>
+      <source-position filename="regress.h" line="1443"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6309,13 +6365,13 @@ libgnome-keyring.</doc>
         <parameter name="foo" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4461">some int</doc>
+               line="4505">some int</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="attributes" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4462">list of attributes</doc>
+               line="4506">list of attributes</doc>
           <array zero-terminated="0" c:type="gpointer" fixed-size="32">
             <type name="guint32" c:type="gpointer"/>
           </array>
@@ -6324,7 +6380,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="introspectable_via_alias"
               c:identifier="regress_introspectable_via_alias">
-      <source-position filename="regress.h" line="1362"/>
+      <source-position filename="regress.h" line="1368"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6337,7 +6393,7 @@ libgnome-keyring.</doc>
     <function name="not_introspectable_via_alias"
               c:identifier="regress_not_introspectable_via_alias"
               introspectable="0">
-      <source-position filename="regress.h" line="1373"/>
+      <source-position filename="regress.h" line="1379"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6350,7 +6406,7 @@ libgnome-keyring.</doc>
     <function name="random_function_with_skipped_structure"
               c:identifier="regress_random_function_with_skipped_structure"
               introspectable="0">
-      <source-position filename="regress.h" line="1333"/>
+      <source-position filename="regress.h" line="1339"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6387,7 +6443,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_callback"
               c:identifier="regress_test_array_callback">
-      <source-position filename="regress.h" line="1128"/>
+      <source-position filename="regress.h" line="1134"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -6399,7 +6455,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_fixed_out_objects"
               c:identifier="regress_test_array_fixed_out_objects">
-      <source-position filename="regress.h" line="862"/>
+      <source-position filename="regress.h" line="868"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6410,7 +6466,7 @@ libgnome-keyring.</doc>
                    transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3212">An array of #RegressTestObj</doc>
+               line="3256">An array of #RegressTestObj</doc>
           <array zero-terminated="0" c:type="RegressTestObj***" fixed-size="2">
             <type name="TestObj" c:type="RegressTestObj**"/>
           </array>
@@ -6574,7 +6630,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_inout_callback"
               c:identifier="regress_test_array_inout_callback">
-      <source-position filename="regress.h" line="1131"/>
+      <source-position filename="regress.h" line="1137"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -6764,12 +6820,12 @@ libgnome-keyring.</doc>
               c:identifier="regress_test_array_struct_in_full">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4591">Test flat array input with transfer full.
+           line="4635">Test flat array input with transfer full.
 
 Similar to:
 - gsf_property_settings_free() with structs but they contain pointers
 - g_byte_array_new_take() with guint8s</doc>
-      <source-position filename="regress.h" line="1519"/>
+      <source-position filename="regress.h" line="1525"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6777,7 +6833,7 @@ Similar to:
         <parameter name="arr" transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4593">An array</doc>
+               line="4637">An array</doc>
           <array length="1" zero-terminated="0" c:type="RegressTestStructA*">
             <type name="TestStructA" c:type="RegressTestStructA"/>
           </array>
@@ -6785,7 +6841,7 @@ Similar to:
         <parameter name="len" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4594">Length of @arr</doc>
+               line="4638">Length of @arr</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
       </parameters>
@@ -6794,10 +6850,10 @@ Similar to:
               c:identifier="regress_test_array_struct_in_none">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4611">Test flat array input with transfer none.
+           line="4655">Test flat array input with transfer none.
 
 Similar to g_main_context_check() or gtk_target_list_new().</doc>
-      <source-position filename="regress.h" line="1522"/>
+      <source-position filename="regress.h" line="1528"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6805,7 +6861,7 @@ Similar to g_main_context_check() or gtk_target_list_new().</doc>
         <parameter name="arr" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4613">An array.</doc>
+               line="4657">An array.</doc>
           <array length="1" zero-terminated="0" c:type="RegressTestStructA*">
             <type name="TestStructA" c:type="RegressTestStructA"/>
           </array>
@@ -6813,7 +6869,7 @@ Similar to g_main_context_check() or gtk_target_list_new().</doc>
         <parameter name="len" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4614">Length of @arr</doc>
+               line="4658">Length of @arr</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
       </parameters>
@@ -6848,10 +6904,10 @@ Similar to g_main_context_check() or gtk_target_list_new().</doc>
               c:identifier="regress_test_array_struct_out_caller_alloc">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4570">Test flat caller-allocated array output.
+           line="4614">Test flat caller-allocated array output.
 
 Similar to g_main_context_query().</doc>
-      <source-position filename="regress.h" line="1516"/>
+      <source-position filename="regress.h" line="1522"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6862,7 +6918,7 @@ Similar to g_main_context_query().</doc>
                    transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4572">An array</doc>
+               line="4616">An array</doc>
           <array length="1" zero-terminated="0" c:type="RegressTestStructA*">
             <type name="TestStructA" c:type="RegressTestStructA"/>
           </array>
@@ -6873,7 +6929,7 @@ Similar to g_main_context_query().</doc>
                    transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4573">Length of @arr</doc>
+               line="4617">Length of @arr</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
       </parameters>
@@ -6882,10 +6938,10 @@ Similar to g_main_context_query().</doc>
               c:identifier="regress_test_array_struct_out_container">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4532">Test flat array output with transfer container.
+           line="4576">Test flat array output with transfer container.
 
 Similar to pango_layout_get_log_attrs().</doc>
-      <source-position filename="regress.h" line="1510"/>
+      <source-position filename="regress.h" line="1516"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6896,7 +6952,7 @@ Similar to pango_layout_get_log_attrs().</doc>
                    transfer-ownership="container">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4534">An array</doc>
+               line="4578">An array</doc>
           <array length="1" zero-terminated="0" c:type="RegressTestStructA**">
             <type name="TestStructA" c:type="RegressTestStructA*"/>
           </array>
@@ -6907,7 +6963,7 @@ Similar to pango_layout_get_log_attrs().</doc>
                    transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4535">Length of @arr</doc>
+               line="4579">Length of @arr</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
       </parameters>
@@ -6916,8 +6972,8 @@ Similar to pango_layout_get_log_attrs().</doc>
               c:identifier="regress_test_array_struct_out_full_fixed">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4554">Test flat fixed-size array output with transfer full.</doc>
-      <source-position filename="regress.h" line="1513"/>
+           line="4598">Test flat fixed-size array output with transfer full.</doc>
+      <source-position filename="regress.h" line="1519"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6928,7 +6984,7 @@ Similar to pango_layout_get_log_attrs().</doc>
                    transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4556">An array</doc>
+               line="4600">An array</doc>
           <array zero-terminated="0"
                  c:type="RegressTestStructA**"
                  fixed-size="4">
@@ -6941,13 +6997,13 @@ Similar to pango_layout_get_log_attrs().</doc>
               c:identifier="regress_test_array_struct_out_none">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4507">Test flat array output with transfer none.
+           line="4551">Test flat array output with transfer none.
 
 Similar to:
 - mm_modem_peek_ports() with structs
 - gdk_query_visual_types() with enums
 - gdk_event_get_axes() with doubles</doc>
-      <source-position filename="regress.h" line="1507"/>
+      <source-position filename="regress.h" line="1513"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6958,7 +7014,7 @@ Similar to:
                    transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4509">An array</doc>
+               line="4553">An array</doc>
           <array length="1" zero-terminated="0" c:type="RegressTestStructA**">
             <type name="TestStructA" c:type="RegressTestStructA*"/>
           </array>
@@ -6969,14 +7025,14 @@ Similar to:
                    transfer-ownership="full">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4510">Length of @arr</doc>
+               line="4554">Length of @arr</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_async_ready_callback"
               c:identifier="regress_test_async_ready_callback">
-      <source-position filename="regress.h" line="1161"/>
+      <source-position filename="regress.h" line="1167"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7105,7 +7161,7 @@ Similar to:
       </return-value>
     </function>
     <function name="test_callback" c:identifier="regress_test_callback">
-      <source-position filename="regress.h" line="1122"/>
+      <source-position filename="regress.h" line="1128"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -7121,7 +7177,7 @@ Similar to:
     </function>
     <function name="test_callback_async"
               c:identifier="regress_test_callback_async">
-      <source-position filename="regress.h" line="1154"/>
+      <source-position filename="regress.h" line="1160"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7145,9 +7201,9 @@ Similar to:
               c:identifier="regress_test_callback_destroy_notify">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="3813">Notified - callback persists until a DestroyNotify delegate
+           line="3857">Notified - callback persists until a DestroyNotify delegate
 is invoked.</doc>
-      <source-position filename="regress.h" line="1141"/>
+      <source-position filename="regress.h" line="1147"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -7175,9 +7231,9 @@ is invoked.</doc>
               c:identifier="regress_test_callback_destroy_notify_no_user_data">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="3840">Adds a scope notified callback with no user data. This can invoke an error
+           line="3884">Adds a scope notified callback with no user data. This can invoke an error
 condition in bindings which needs to be tested.</doc>
-      <source-position filename="regress.h" line="1146"/>
+      <source-position filename="regress.h" line="1152"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -7196,7 +7252,7 @@ condition in bindings which needs to be tested.</doc>
     </function>
     <function name="test_callback_return_full"
               c:identifier="regress_test_callback_return_full">
-      <source-position filename="regress.h" line="1138"/>
+      <source-position filename="regress.h" line="1144"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7209,7 +7265,7 @@ condition in bindings which needs to be tested.</doc>
     </function>
     <function name="test_callback_thaw_async"
               c:identifier="regress_test_callback_thaw_async">
-      <source-position filename="regress.h" line="1157"/>
+      <source-position filename="regress.h" line="1163"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -7218,14 +7274,14 @@ condition in bindings which needs to be tested.</doc>
               c:identifier="regress_test_callback_thaw_notifications">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="3854">Invokes all callbacks installed by #test_callback_destroy_notify(),
+           line="3898">Invokes all callbacks installed by #test_callback_destroy_notify(),
 adding up their return values, and removes them, invoking the
 corresponding destroy notfications.</doc>
-      <source-position filename="regress.h" line="1150"/>
+      <source-position filename="regress.h" line="1156"/>
       <return-value transfer-ownership="none">
         <doc xml:space="preserve"
              filename="regress.c"
-             line="3861">Sum of the return values of the invoked callbacks.</doc>
+             line="3905">Sum of the return values of the invoked callbacks.</doc>
         <type name="gint" c:type="int"/>
       </return-value>
     </function>
@@ -7233,9 +7289,9 @@ corresponding destroy notfications.</doc>
               c:identifier="regress_test_callback_user_data">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="3782">Call - callback parameter persists for the duration of the method
+           line="3826">Call - callback parameter persists for the duration of the method
 call and can be released on return.</doc>
-      <source-position filename="regress.h" line="1134"/>
+      <source-position filename="regress.h" line="1140"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -7307,7 +7363,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_create_fundamental_hidden_class_instance"
               c:identifier="regress_test_create_fundamental_hidden_class_instance">
-      <source-position filename="regress.h" line="1070"/>
+      <source-position filename="regress.h" line="1076"/>
       <return-value transfer-ownership="full">
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -7315,7 +7371,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_date_in_gvalue"
               c:identifier="regress_test_date_in_gvalue">
-      <source-position filename="regress.h" line="1300"/>
+      <source-position filename="regress.h" line="1306"/>
       <return-value transfer-ownership="full">
         <type name="GObject.Value" c:type="GValue*"/>
       </return-value>
@@ -7400,7 +7456,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_gerror_callback"
               c:identifier="regress_test_gerror_callback">
-      <source-position filename="regress.h" line="1179"/>
+      <source-position filename="regress.h" line="1185"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7863,7 +7919,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_hash_table_callback"
               c:identifier="regress_test_hash_table_callback">
-      <source-position filename="regress.h" line="1176"/>
+      <source-position filename="regress.h" line="1182"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7871,7 +7927,7 @@ element-type annotation.</doc>
         <parameter name="data" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="3985">GHashTable that gets passed to callback</doc>
+               line="4029">GHashTable that gets passed to callback</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
             <type name="gint"/>
@@ -7981,7 +8037,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_multi_callback"
               c:identifier="regress_test_multi_callback">
-      <source-position filename="regress.h" line="1125"/>
+      <source-position filename="regress.h" line="1131"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -8023,14 +8079,14 @@ element-type annotation.</doc>
               c:identifier="regress_test_multiline_doc_comments">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4367">This is a function.
+           line="4411">This is a function.
 
 It has multiple lines in the documentation.
 
 The sky is blue.
 
 You will give me your credit card number.</doc>
-      <source-position filename="regress.h" line="1314"/>
+      <source-position filename="regress.h" line="1320"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8039,7 +8095,7 @@ You will give me your credit card number.</doc>
               c:identifier="regress_test_nested_parameter">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4383">&lt;informaltable&gt;
+           line="4427">&lt;informaltable&gt;
   &lt;tgroup cols="3"&gt;
     &lt;thead&gt;
       &lt;row&gt;
@@ -8067,7 +8123,7 @@ rgb(20%, 30%, 0%)&lt;/literallayout&gt;&lt;/entry&gt;
 &lt;/informaltable&gt;
 
 What we're testing here is that the scanner ignores the @a nested inside XML.</doc>
-      <source-position filename="regress.h" line="1317"/>
+      <source-position filename="regress.h" line="1323"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8075,14 +8131,14 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
         <parameter name="a" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4385">An integer</doc>
+               line="4429">An integer</doc>
           <type name="gint" c:type="int"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_noptr_callback"
               c:identifier="regress_test_noptr_callback">
-      <source-position filename="regress.h" line="1119"/>
+      <source-position filename="regress.h" line="1125"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8098,7 +8154,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     </function>
     <function name="test_null_gerror_callback"
               c:identifier="regress_test_null_gerror_callback">
-      <source-position filename="regress.h" line="1182"/>
+      <source-position filename="regress.h" line="1188"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8110,14 +8166,14 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     </function>
     <function name="test_null_strv_in_gvalue"
               c:identifier="regress_test_null_strv_in_gvalue">
-      <source-position filename="regress.h" line="1306"/>
+      <source-position filename="regress.h" line="1312"/>
       <return-value transfer-ownership="full">
         <type name="GObject.Value" c:type="GValue*"/>
       </return-value>
     </function>
     <function name="test_owned_gerror_callback"
               c:identifier="regress_test_owned_gerror_callback">
-      <source-position filename="regress.h" line="1185"/>
+      <source-position filename="regress.h" line="1191"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8163,7 +8219,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     </function>
     <function name="test_simple_callback"
               c:identifier="regress_test_simple_callback">
-      <source-position filename="regress.h" line="1116"/>
+      <source-position filename="regress.h" line="1122"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8193,9 +8249,9 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
               introspectable="0">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4035">Should not emit a warning:
+           line="4079">Should not emit a warning:
 https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
-      <source-position filename="regress.h" line="1189"/>
+      <source-position filename="regress.h" line="1195"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8203,7 +8259,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
         <parameter name="callback" transfer-ownership="none">
           <doc xml:space="preserve"
                filename="regress.c"
-               line="4037">No annotation here</doc>
+               line="4081">No annotation here</doc>
           <type name="TestCallback" c:type="RegressTestCallback"/>
         </parameter>
       </parameters>
@@ -8259,7 +8315,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_strv_in_gvalue"
               c:identifier="regress_test_strv_in_gvalue">
-      <source-position filename="regress.h" line="1303"/>
+      <source-position filename="regress.h" line="1309"/>
       <return-value transfer-ownership="full">
         <type name="GObject.Value" c:type="GValue*"/>
       </return-value>
@@ -8318,7 +8374,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_torture_signature_0"
               c:identifier="regress_test_torture_signature_0">
-      <source-position filename="regress.h" line="1271"/>
+      <source-position filename="regress.h" line="1277"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8357,8 +8413,8 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
               throws="1">
       <doc xml:space="preserve"
            filename="regress.c"
-           line="4255">This function throws an error if m is odd.</doc>
-      <source-position filename="regress.h" line="1279"/>
+           line="4299">This function throws an error if m is odd.</doc>
+      <source-position filename="regress.h" line="1285"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -8394,7 +8450,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_torture_signature_2"
               c:identifier="regress_test_torture_signature_2">
-      <source-position filename="regress.h" line="1288"/>
+      <source-position filename="regress.h" line="1294"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -8695,7 +8751,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     <function name="test_value_get_fundamental_object"
               c:identifier="regress_test_value_get_fundamental_object"
               introspectable="0">
-      <source-position filename="regress.h" line="1044"/>
+      <source-position filename="regress.h" line="1050"/>
       <return-value>
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -8727,7 +8783,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     <function name="test_value_set_fundamental_object"
               c:identifier="regress_test_value_set_fundamental_object"
               introspectable="0">
-      <source-position filename="regress.h" line="1041"/>
+      <source-position filename="regress.h" line="1047"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt
index ba180b4d..0a0bf082 100644
--- a/tests/scanner/Regress-1.0-sections-expected.txt
+++ b/tests/scanner/Regress-1.0-sections-expected.txt
@@ -346,9 +346,11 @@ RegressTestObj
 RegressTestObjClass
 regress_test_obj_do_matrix
 regress_test_obj_emit_sig_with_array_len_prop
+regress_test_obj_emit_sig_with_error
 regress_test_obj_emit_sig_with_foreign_struct
 regress_test_obj_emit_sig_with_inout_int
 regress_test_obj_emit_sig_with_int64
+regress_test_obj_emit_sig_with_null_error
 regress_test_obj_emit_sig_with_obj
 regress_test_obj_emit_sig_with_uint64
 regress_forced_method
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index eca7cdd4..bc04079c 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -2300,6 +2300,7 @@ enum {
   REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_UINT64_PROP,
   REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET,
   REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INOUT_INT,
+  REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_GERROR,
   N_REGRESS_TEST_OBJ_SIGNALS
 };
 
@@ -2571,6 +2572,26 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
                   1,
                   G_TYPE_POINTER);
 
+  /**
+   * RegressTestObj::sig-with-gerror:
+   * @self: The object that emitted the signal
+   * @error: (nullable) (type GLib.Error): A #GError if something went wrong
+   *   internally in @self. You must not free this #GError.
+   *
+   * This signal is modeled after #GstDiscoverer::discovered, and is added to
+   * exercise the path of a #GError being marshalled as a boxed type instead of
+   * an exception in the introspected language.
+   *
+   * Use via regress_test_obj_emit_sig_with_error() and
+   * regress_test_obj_emit_sig_with_null_error(), or emit via the introspected
+   * language.
+   */
+  regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_GERROR] =
+      g_signal_new ("sig-with-gerror", G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+                    g_cclosure_marshal_generic, G_TYPE_NONE, 1,
+                    G_TYPE_ERROR | G_SIGNAL_TYPE_STATIC_SCOPE);
+
   gobject_class->set_property = regress_test_obj_set_property;
   gobject_class->get_property = regress_test_obj_get_property;
   gobject_class->dispose = regress_test_obj_dispose;
@@ -2872,6 +2893,29 @@ regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj)
   g_assert_cmpint (inout, ==, 43);
 }
 
+/**
+ * regress_test_obj_emit_sig_with_error:
+ * @self: The object to emit the signal.
+ */
+void
+regress_test_obj_emit_sig_with_error (RegressTestObj *self)
+{
+  GError *err = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED,
+                                     "Something failed");
+  g_signal_emit_by_name (self, "sig-with-gerror", err);
+  g_error_free (err);
+}
+
+/**
+ * regress_test_obj_emit_sig_with_null_error:
+ * @self: The object to emit the signal.
+ */
+void
+regress_test_obj_emit_sig_with_null_error (RegressTestObj *self)
+{
+  g_signal_emit_by_name (self, "sig-with-gerror", NULL);
+}
+
 int
 regress_test_obj_instance_method (RegressTestObj *obj G_GNUC_UNUSED)
 {
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 82fd6b55..cf5302e4 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -845,6 +845,12 @@ void       regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj);
 _GI_TEST_EXTERN
 void       regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj);
 
+_GI_TEST_EXTERN
+void       regress_test_obj_emit_sig_with_error (RegressTestObj *self);
+
+_GI_TEST_EXTERN
+void       regress_test_obj_emit_sig_with_null_error (RegressTestObj *self);
+
 _GI_TEST_EXTERN
 int        regress_test_obj_instance_method (RegressTestObj *obj);
 


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