[gobject-introspection] writer: Include documentation and symbol position in source files



commit 925c3b875861e83d3d6808439b61e80fe5ee8b48
Author: Thibault Saunier <tsaunier igalia com>
Date:   Mon Nov 19 21:49:13 2018 -0300

    writer: Include documentation and symbol position in source files
    
    Some documentation tool (as hotdoc[0]) need to have information about
    symbol declaration and documentation positions in the source files
    to be able to do smart indexing (automatically build the documenation
    index).
    
    [0] https://hotdoc.github.io/
    
    Fixes #175

 docs/gir-1.2.rnc                            |    8 +
 girepository/girparser.c                    |    9 +-
 giscanner/annotationmain.py                 |    2 +-
 giscanner/ast.py                            |   18 +-
 giscanner/girparser.py                      |   18 +
 giscanner/girwriter.py                      |   31 +-
 giscanner/maintransformer.py                |    5 +
 giscanner/message.py                        |    5 +-
 giscanner/scannermain.py                    |   13 +-
 giscanner/transformer.py                    |    3 +-
 tests/scanner/Bar-1.0-expected.gir          |    7 +
 tests/scanner/GetType-1.0-expected.gir      |   26 +-
 tests/scanner/GtkFrob-1.0-expected.gir      |    1 +
 tests/scanner/Headeronly-1.0-expected.gir   |    1 +
 tests/scanner/Identfilter-1.0-expected.gir  |    5 +
 tests/scanner/Regress-1.0-expected.gir      | 1884 ++++++++++++++++++++++-----
 tests/scanner/SLetter-1.0-expected.gir      |    4 +
 tests/scanner/Symbolfilter-1.0-expected.gir |    4 +
 tests/scanner/Typedefs-1.0-expected.gir     |    9 +
 tests/scanner/Utility-1.0-expected.gir      |   17 +-
 tests/scanner/WarnLib-1.0-expected.gir      |   45 +-
 21 files changed, 1725 insertions(+), 390 deletions(-)
---
diff --git a/docs/gir-1.2.rnc b/docs/gir-1.2.rnc
index 5072be11..8b121e98 100644
--- a/docs/gir-1.2.rnc
+++ b/docs/gir-1.2.rnc
@@ -195,6 +195,9 @@ grammar {
     & element doc {
       attribute xml:space { "preserve" }?,
       attribute xml:whitespace { "preserve" }?,
+      attribute filename { xsd:string },
+      attribute line { xsd:string },
+      attribute column { xsd:string },
 
       text
     }?
@@ -204,6 +207,11 @@ grammar {
 
       text
     }?
+    & element source-position {
+      attribute filename { xsd:string },
+      attribute line { xsd:string },
+      attribute column { xsd:string },
+    }?
   )
 
   Info.elements = (
diff --git a/girepository/girparser.c b/girepository/girparser.c
index 97e62a53..d545d310 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -2828,7 +2828,7 @@ start_element_handler (GMarkupParseContext *context,
       if (start_discriminator (context, element_name,
                               attribute_names, attribute_values,
                               ctx, error))
-       goto out;
+    goto out;
       if (strcmp ("doc", element_name) == 0 || strcmp ("doc-deprecated", element_name) == 0 ||
           strcmp ("doc-stability", element_name) == 0 || strcmp ("doc-version", element_name) == 0)
         {
@@ -3068,6 +3068,13 @@ start_element_handler (GMarkupParseContext *context,
        goto out;
       break;
 
+    case 's':
+      if (strcmp ("source-position", element_name) == 0)
+      {
+          state_switch (ctx, STATE_PASSTHROUGH);
+          goto out;
+      }
+      break;
     case 'u':
       if (start_union (context, element_name,
                       attribute_names, attribute_values,
diff --git a/giscanner/annotationmain.py b/giscanner/annotationmain.py
index eef0f035..3d2811e9 100644
--- a/giscanner/annotationmain.py
+++ b/giscanner/annotationmain.py
@@ -80,7 +80,7 @@ def annotation_main(args):
     if options.packages:
         process_packages(options, options.packages)
 
-    ss = create_source_scanner(options, args)
+    ss, _ = create_source_scanner(options, args)
 
     if options.extract:
         parser = GtkDocCommentBlockParser()
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 75daa459..b24efadb 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -31,6 +31,7 @@ from collections import OrderedDict
 
 from . import message
 
+from .sourcescanner import CTYPE_TYPEDEF, CSYMBOL_TYPE_TYPEDEF
 from .message import Position
 from .utils import to_underscores
 
@@ -565,6 +566,7 @@ properties."""
         self.deprecated = None
         self.deprecated_doc = None
         self.doc = None
+        self.doc_position = None
 
 
 class Node(Annotated):
@@ -632,9 +634,23 @@ GIName.  It's possible for nodes to contain or point to other nodes."""
     def add_file_position(self, position):
         self.file_positions.add(position)
 
+    def get_main_position(self):
+        if not self.file_positions:
+            return None
+
+        res = None
+        for position in self.file_positions:
+            if position.is_typedef:
+                res = position
+            else:
+                return position
+
+        return res
+
     def add_symbol_reference(self, symbol):
         if symbol.source_filename:
-            self.add_file_position(Position(symbol.source_filename, symbol.line))
+            self.add_file_position(Position(symbol.source_filename, symbol.line,
+                is_typedef=symbol.type in (CTYPE_TYPEDEF, CSYMBOL_TYPE_TYPEDEF)))
 
     def walk(self, callback, chain):
         res = callback(self, chain)
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index 6841b6c5..45246307 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -30,6 +30,7 @@ from xml.etree.cElementTree import parse
 
 from . import ast
 from .girwriter import COMPATIBLE_GIR_VERSION
+from .message import Position
 
 CORE_NS = "http://www.gtk.org/introspection/core/1.0";
 C_NS = "http://www.gtk.org/introspection/c/1.0";
@@ -189,6 +190,9 @@ class GIRParser(object):
         if doc is not None:
             if doc.text:
                 obj.doc = doc.text
+                obj.doc_position = Position(doc.attrib['filename'],
+                                            doc.attrib['line'],
+                                            doc.attrib.get('column', None))
         version = node.attrib.get('version')
         if version:
             obj.version = version
@@ -219,6 +223,20 @@ class GIRParser(object):
                 attributes_[name] = value
             obj.attributes = attributes_
 
+        if hasattr(obj, 'add_file_position'):
+            positions = sorted(node.findall(_corens('source-position')),
+                               key=lambda x: (x.attrib['filename'],
+                                              int(x.attrib['line'])))
+            for position in positions:
+                if 'column' in position.attrib:
+                    column = int(position.attrib['column'])
+                else:
+                    column = None
+
+                obj.add_file_position(Position(position.attrib['filename'],
+                                               int(position.attrib['line']),
+                                               column))
+
     def _parse_object_interface(self, node):
         parent = node.attrib.get('parent')
         if parent:
diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py
index 4bef1eaf..4f58229b 100644
--- a/giscanner/girwriter.py
+++ b/giscanner/girwriter.py
@@ -25,6 +25,8 @@ from __future__ import division
 from __future__ import print_function
 from __future__ import unicode_literals
 
+import os
+
 from . import ast
 from .xmlwriter import XMLWriter
 
@@ -35,12 +37,13 @@ COMPATIBLE_GIR_VERSION = '1.2'
 
 class GIRWriter(XMLWriter):
 
-    def __init__(self, namespace):
+    def __init__(self, namespace, sources_roots=[]):
         super(GIRWriter, self).__init__()
         self.write_comment(
             'This file was automatically generated from C sources - DO NOT EDIT!\n'
             'To affect the contents of this file, edit the original C definitions,\n'
             'and/or use gtk-doc annotations. ')
+        self.sources_roots = sources_roots
         self._write_repository(namespace)
 
     def _write_repository(self, namespace):
@@ -121,13 +124,27 @@ class GIRWriter(XMLWriter):
         if node.version:
             attrs.append(('version', node.version))
 
+    def _get_relative_path(self, filename):
+        res = filename
+        for root in self.sources_roots:
+            relpath = os.path.relpath(filename, root)
+            if len(relpath) < len(res):
+                res = relpath
+
+        return res
+
     def _write_generic(self, node):
         for key, value in node.attributes.items():
             self.write_tag('attribute', [('name', key), ('value', value)])
 
         if hasattr(node, 'doc') and node.doc:
-            self.write_tag('doc', [('xml:space', 'preserve')],
-                           node.doc)
+            attrs = [('xml:space', 'preserve'),
+                    ('filename', self._get_relative_path(node.doc_position.filename)),
+                    ('line', str(node.doc_position.line))]
+            if node.doc_position.column:
+                attrs.append(('column', str(node.doc_position.column)))
+
+            self.write_tag('doc', attrs, node.doc)
 
         if hasattr(node, 'version_doc') and node.version_doc:
             self.write_tag('doc-version', [('xml:space', 'preserve')],
@@ -141,6 +158,14 @@ class GIRWriter(XMLWriter):
             self.write_tag('doc-stability', [('xml:space', 'preserve')],
                            node.stability_doc)
 
+        filepos = getattr(node, 'get_main_position', lambda: None)()
+        if filepos is not None:
+            position = [('filename', self._get_relative_path(filepos.filename)),
+                        ('line', str(filepos.line))]
+            if filepos.column:
+                position.append(('column', str(filepos.column)))
+            self.write_tag('source-position', position)
+
     def _append_node_generic(self, node, attrs):
         if node.skip or not node.introspectable:
             attrs.append(('introspectable', '0'))
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index 2103e541..e931fcdb 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -236,6 +236,7 @@ class MainTransformer(object):
             block = self._blocks.get(section_name)
             if block and block.description:
                 node.doc = block.description
+                node.doc_position = block.position
         if isinstance(node, (ast.Class, ast.Interface)):
             for prop in node.properties:
                 self._apply_annotations_property(node, prop)
@@ -693,6 +694,7 @@ class MainTransformer(object):
 
         if tag and tag.description:
             node.doc = tag.description
+            node.doc_position = tag.position
 
         if ANN_SKIP in annotations:
             node.skip = True
@@ -710,6 +712,7 @@ class MainTransformer(object):
 
         if block.description:
             node.doc = block.description
+            node.doc_position = block.position
 
         since_tag = block.tags.get(TAG_SINCE)
         if since_tag is not None:
@@ -859,6 +862,7 @@ class MainTransformer(object):
         if type_annotation:
             field.type = self._transformer.create_type_from_user_string(type_annotation[0])
         field.doc = tag.description
+        field.doc_position = tag.position
         try:
             self._adjust_container_type(parent, field, tag.annotations)
         except AttributeError as ex:
@@ -936,6 +940,7 @@ class MainTransformer(object):
             param = block.params.get(m.symbol, None)
             if param and param.description:
                 m.doc = param.description
+                m.doc_position = param.position
 
     def _pass_read_annotations2(self, node, chain):
         if isinstance(node, ast.Function):
diff --git a/giscanner/message.py b/giscanner/message.py
index f20578f3..abbb3dc5 100644
--- a/giscanner/message.py
+++ b/giscanner/message.py
@@ -42,12 +42,13 @@ class Position(object):
     want to inform about.
     """
 
-    __slots__ = ('filename', 'line', 'column')
+    __slots__ = ('filename', 'line', 'column', 'is_typedef')
 
-    def __init__(self, filename=None, line=None, column=None):
+    def __init__(self, filename=None, line=None, column=None, is_typedef=False):
         self.filename = filename
         self.line = line
         self.column = column
+        self.is_typedef = is_typedef
 
     def _compare(self, other, op):
         return op((self.filename, self.line, self.column),
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
index ccb14e91..ceca66f4 100644
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
@@ -248,6 +248,11 @@ match the namespace prefix.""")
     parser.add_option("", "--include-last-in-src",
                       action="append", dest="include_last_src", default=[],
                       help="Header to include after the other headers in generated sources")
+    parser.add_option("", "--sources-top-dirs", default=[], action='append',
+                      help="Paths to the sources directories used to determine"
+                      " relative files locations to be used in the gir file."
+                      " This is especially useful when build dir and source dir are different"
+                      " and mirrored.")
 
     return parser
 
@@ -441,7 +446,7 @@ def create_source_scanner(options, args):
                        cflags=options.cflags)
     ss.parse_files(filenames)
     ss.parse_macros(filenames)
-    return ss
+    return ss, filenames
 
 
 def write_output(data, options):
@@ -535,7 +540,7 @@ def scanner_main(args):
         except pkgconfig.PkgConfigError as e:
             _error(str(e))
 
-    ss = create_source_scanner(options, args)
+    ss, filenames = create_source_scanner(options, args)
 
     cbp = GtkDocCommentBlockParser()
     blocks = cbp.parse_comment_blocks(ss.get_comments())
@@ -575,7 +580,9 @@ def scanner_main(args):
 
     transformer.namespace.c_includes = options.c_includes
     transformer.namespace.exported_packages = exported_packages
-    writer = Writer(transformer.namespace)
+    if not options.sources_top_dirs:
+        options.sources_top_dirs = [os.path.commonprefix(filenames).rpartition(os.path.sep)[0]]
+    writer = Writer(transformer.namespace, options.sources_top_dirs)
     data = writer.get_encoded_xml()
 
     write_output(data, options)
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 2c412339..bb0eb3e0 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -626,7 +626,8 @@ raise ValueError."""
             # https://bugzilla.gnome.org/show_bug.cgi?id=755882
             if name.endswith('_autoptr'):
                 return None
-            return ast.Alias(name, target, ctype=symbol.ident)
+            node = ast.Alias(name, target, ctype=symbol.ident)
+            node.add_symbol_reference(symbol)
         else:
             raise NotImplementedError(
                 "symbol '%s' of type %s" % (symbol.ident, ctype_name(ctype)))
diff --git a/tests/scanner/Bar-1.0-expected.gir b/tests/scanner/Bar-1.0-expected.gir
index 245adfff..cdd80951 100644
--- a/tests/scanner/Bar-1.0-expected.gir
+++ b/tests/scanner/Bar-1.0-expected.gir
@@ -20,6 +20,7 @@ and/or use gtk-doc annotations.  -->
            glib:type-name="BarBaz"
            glib:get-type="bar_baz_get_type"
            glib:type-struct="BazClass">
+      <source-position filename="barapp.h" line="21"/>
       <field name="parent_instance">
         <type name="GObject.Object" c:type="GObject"/>
       </field>
@@ -27,6 +28,7 @@ and/or use gtk-doc annotations.  -->
     <record name="BazClass"
             c:type="BarBazClass"
             glib:is-gtype-struct-for="Baz">
+      <source-position filename="barapp.h" line="21"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
@@ -38,7 +40,9 @@ and/or use gtk-doc annotations.  -->
            glib:type-name="MutterWindow"
            glib:get-type="mutter_window_get_type"
            glib:type-struct="MutterWindowClass">
+      <source-position filename="barapp.h" line="53"/>
       <method name="func" c:identifier="mutter_window_func">
+        <source-position filename="barapp.h" line="59"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -58,16 +62,19 @@ and/or use gtk-doc annotations.  -->
     <record name="MutterWindowClass"
             c:type="MutterWindowClass"
             glib:is-gtype-struct-for="MutterWindow">
+      <source-position filename="barapp.h" line="53"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
     </record>
     <function name="app_func" c:identifier="bar_app_func">
+      <source-position filename="barapp.h" line="28"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
     </function>
     <function name="app_func2" c:identifier="bar_app_func2">
+      <source-position filename="barapp.h" line="31"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/GetType-1.0-expected.gir b/tests/scanner/GetType-1.0-expected.gir
index ae17525d..b3908fcf 100644
--- a/tests/scanner/GetType-1.0-expected.gir
+++ b/tests/scanner/GetType-1.0-expected.gir
@@ -21,40 +21,51 @@ and/or use gtk-doc annotations.  -->
            glib:type-name="GetTypeObject"
            glib:get-type="gettype_object_get_type"
            glib:type-struct="ObjectClass">
+      <source-position filename="gettype.h" line="22"/>
       <constructor name="new" c:identifier="gettype_object_new">
+        <source-position filename="gettype.h" line="28"/>
         <return-value transfer-ownership="full">
           <type name="Object" c:type="GetTypeObject*"/>
         </return-value>
       </constructor>
       <function name="nonmeta2_get_type"
                 c:identifier="gettype_object_nonmeta2_get_type">
-        <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it doesn't 
return
+        <doc xml:space="preserve"
+             filename="gettype.c"
+             line="38">This shouldn't be scanned as a *_get_type function because it doesn't return
 a GType. It will generate a warning.</doc>
+        <source-position filename="gettype.h" line="35"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">true</doc>
+          <doc xml:space="preserve" filename="gettype.c" line="44">true</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
       </function>
       <function name="nonmeta_get_gtype"
                 c:identifier="gettype_object_nonmeta_get_gtype">
-        <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it doesn't 
return
+        <doc xml:space="preserve"
+             filename="gettype.c"
+             line="52">This shouldn't be scanned as a *_get_type function because it doesn't return
 a GType. It will generate a warning.</doc>
+        <source-position filename="gettype.h" line="38"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">true</doc>
+          <doc xml:space="preserve" filename="gettype.c" line="58">true</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
       </function>
       <method name="nonmeta1_get_type"
               c:identifier="gettype_object_nonmeta1_get_type">
-        <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it takes
+        <doc xml:space="preserve"
+             filename="gettype.c"
+             line="23">This shouldn't be scanned as a *_get_type function because it takes
 arguments.</doc>
+        <source-position filename="gettype.h" line="32"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">0</doc>
+          <doc xml:space="preserve" filename="gettype.c" line="30">0</doc>
           <type name="GType" c:type="GType"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">self</doc>
+            <doc xml:space="preserve" filename="gettype.c" line="25">self</doc>
             <type name="Object" c:type="GetTypeObject*"/>
           </instance-parameter>
         </parameters>
@@ -66,6 +77,7 @@ arguments.</doc>
     <record name="ObjectClass"
             c:type="GetTypeObjectClass"
             glib:is-gtype-struct-for="Object">
+      <source-position filename="gettype.h" line="22"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
diff --git a/tests/scanner/GtkFrob-1.0-expected.gir b/tests/scanner/GtkFrob-1.0-expected.gir
index a4e39ef1..3ed61297 100644
--- a/tests/scanner/GtkFrob-1.0-expected.gir
+++ b/tests/scanner/GtkFrob-1.0-expected.gir
@@ -15,6 +15,7 @@ and/or use gtk-doc annotations.  -->
              c:symbol-prefixes="gtk_frob">
     <function name="language_manager_get_default"
               c:identifier="gtk_frob_language_manager_get_default">
+      <source-position filename="gtkfrob.h" line="11"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/Headeronly-1.0-expected.gir b/tests/scanner/Headeronly-1.0-expected.gir
index 179d9816..4b2daf92 100644
--- a/tests/scanner/Headeronly-1.0-expected.gir
+++ b/tests/scanner/Headeronly-1.0-expected.gir
@@ -12,6 +12,7 @@ and/or use gtk-doc annotations.  -->
              c:identifier-prefixes="Headeronly"
              c:symbol-prefixes="headeronly">
     <enumeration name="ExampleEnum" c:type="HeaderonlyExampleEnum">
+      <source-position filename="headeronly.h" line="7"/>
       <member name="foo" value="0" c:identifier="HEADERONLY_FOO">
       </member>
       <member name="bar" value="1" c:identifier="HEADERONLY_BAR">
diff --git a/tests/scanner/Identfilter-1.0-expected.gir b/tests/scanner/Identfilter-1.0-expected.gir
index 5c4590e4..15cd408a 100644
--- a/tests/scanner/Identfilter-1.0-expected.gir
+++ b/tests/scanner/Identfilter-1.0-expected.gir
@@ -12,9 +12,12 @@ and/or use gtk-doc annotations.  -->
              c:identifier-prefixes="Identfilter"
              c:symbol-prefixes="identfilter">
     <record name="Context" c:type="identfilter_t" disguised="1">
+      <source-position filename="identfilter.h" line="4"/>
     </record>
     <record name="Object" c:type="identfilter_object_t" disguised="1">
+      <source-position filename="identfilter.h" line="5"/>
       <method name="foo_method" c:identifier="identfilter_object_foo_method">
+        <source-position filename="identfilter.h" line="8"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -25,6 +28,7 @@ and/or use gtk-doc annotations.  -->
         </parameters>
       </method>
       <method name="free" c:identifier="identfilter_object_free">
+        <source-position filename="identfilter.h" line="9"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -37,6 +41,7 @@ and/or use gtk-doc annotations.  -->
       <function name="new"
                 c:identifier="identfilter_object_new"
                 introspectable="0">
+        <source-position filename="identfilter.h" line="7"/>
         <return-value>
           <type name="Object" c:type="identfilter_object_t*"/>
         </return-value>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 64ed1177..9236f9ab 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -16,51 +16,74 @@ and/or use gtk-doc annotations.  -->
              c:identifier-prefixes="Regress"
              c:symbol-prefixes="regress">
     <alias name="AliasedTestBoxed" c:type="RegressAliasedTestBoxed">
-      <doc xml:space="preserve">Typedef TestBoxed to test caller-allocates correctness</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1374">Typedef TestBoxed to test caller-allocates correctness</doc>
+      <source-position filename="regress.h" line="1379"/>
       <type name="TestBoxed" c:type="RegressTestBoxed"/>
     </alias>
     <alias name="FooObjectCookie" c:type="RegressFooObjectCookie">
+      <source-position filename="foo.h" line="148"/>
       <type name="gpointer" c:type="gpointer"/>
     </alias>
     <alias name="FooXEvent" c:type="RegressFooXEvent">
+      <source-position filename="foo.h" line="383"/>
       <type name="none" c:type="void"/>
     </alias>
     <alias name="IntsetAlias" c:type="RegressIntsetAlias" introspectable="0">
-      <doc xml:space="preserve">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1344">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
+      <source-position filename="regress.h" line="1350"/>
       <type name="Intset" c:type="RegressIntset"/>
     </alias>
     <alias name="PtrArrayAlias" c:type="RegressPtrArrayAlias">
-      <doc xml:space="preserve">Typedef'd GPtrArray for some reason</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1352">Typedef'd GPtrArray for some reason</doc>
+      <source-position filename="regress.h" line="1357"/>
       <type name="GLib.PtrArray" c:type="GPtrArray"/>
     </alias>
     <alias name="TestTypeGUInt64" c:type="RegressTestTypeGUInt64">
+      <source-position filename="regress.h" line="528"/>
       <type name="guint64" c:type="guint64"/>
     </alias>
     <alias name="VaListAlias" c:type="RegressVaListAlias" introspectable="0">
-      <doc xml:space="preserve">Typedef'd va_list for additional reasons</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1363">Typedef'd va_list for additional reasons</doc>
+      <source-position filename="regress.h" line="1368"/>
       <type name="va_list" c:type="va_list"/>
     </alias>
     <constant name="ANNOTATION_CALCULATED_DEFINE"
               value="100"
               c:type="REGRESS_ANNOTATION_CALCULATED_DEFINE">
+      <source-position filename="annotation.h" line="282"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="ANNOTATION_CALCULATED_LARGE"
               value="10000000000UL"
               c:type="REGRESS_ANNOTATION_CALCULATED_LARGE"
               version="1.4">
-      <doc xml:space="preserve">Constant to define a calculated large value</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="284">Constant to define a calculated large value</doc>
+      <source-position filename="annotation.h" line="291"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="ANNOTATION_CALCULATED_LARGE_DIV"
               value="1000000UL"
               c:type="REGRESS_ANNOTATION_CALCULATED_LARGE_DIV">
-      <doc xml:space="preserve">Constant to define a calculated large value</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="293">Constant to define a calculated large value</doc>
+      <source-position filename="annotation.h" line="298"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <enumeration name="ATestError"
                  c:type="RegressATestError"
                  glib:error-domain="regress-atest-error">
+      <source-position filename="regress.h" line="511"/>
       <member name="code0" value="0" c:identifier="REGRESS_ATEST_ERROR_CODE0">
       </member>
       <member name="code1" value="1" c:identifier="REGRESS_ATEST_ERROR_CODE1">
@@ -69,10 +92,12 @@ and/or use gtk-doc annotations.  -->
       </member>
     </enumeration>
     <record name="AnAnonymousUnion" c:type="RegressAnAnonymousUnion">
+      <source-position filename="regress.h" line="1480"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <union>
+        <source-position filename="regress.h" line="1479"/>
         <field name="a" writable="1">
           <array zero-terminated="0"
                  c:type="RegressLikeGnomeKeyringPasswordSchema"
@@ -89,43 +114,61 @@ and/or use gtk-doc annotations.  -->
       </union>
     </record>
     <bitfield name="AnnotationBitfield" c:type="RegressAnnotationBitfield">
+      <source-position filename="annotation.h" line="12"/>
       <member name="foo" value="1" c:identifier="ANN_FLAG_FOO">
       </member>
       <member name="bar" value="2" c:identifier="ANN_FLAG_BAR">
       </member>
     </bitfield>
     <callback name="AnnotationCallback" c:type="RegressAnnotationCallback">
-      <doc xml:space="preserve">This is a callback.</doc>
-      <return-value transfer-ownership="none">
-        <doc xml:space="preserve">array of ints</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="14">This is a callback.</doc>
+      <source-position filename="annotation.h" line="21"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="annotation.h"
+             line="19">array of ints</doc>
         <type name="gint" c:type="const gint*"/>
       </return-value>
       <parameters>
         <parameter name="in" transfer-ownership="none">
-          <doc xml:space="preserve">array of ints</doc>
+          <doc xml:space="preserve"
+               filename="annotation.h"
+               line="16">array of ints</doc>
           <type name="gint" c:type="const gint*"/>
         </parameter>
       </parameters>
     </callback>
     <record name="AnnotationFields" c:type="RegressAnnotationFields">
-      <doc xml:space="preserve">This is a struct for testing field documentation and annotations</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="246">This is a struct for testing field documentation and annotations</doc>
+      <source-position filename="annotation.h" line="259"/>
       <field name="field1" writable="1">
-        <doc xml:space="preserve">Some documentation</doc>
+        <doc xml:space="preserve"
+             filename="annotation.h"
+             line="248">Some documentation</doc>
         <type name="gint" c:type="int"/>
       </field>
       <field name="arr" writable="1">
-        <doc xml:space="preserve">an array of length @len</doc>
+        <doc xml:space="preserve"
+             filename="annotation.h"
+             line="249">an array of length @len</doc>
         <array length="2" zero-terminated="0" c:type="guchar*">
           <type name="guint8" c:type="guchar"/>
         </array>
       </field>
       <field name="len" writable="1">
-        <doc xml:space="preserve">the length of array</doc>
+        <doc xml:space="preserve"
+             filename="annotation.h"
+             line="250">the length of array</doc>
         <type name="gulong" c:type="gulong"/>
       </field>
     </record>
     <callback name="AnnotationForeachFunc"
               c:type="RegressAnnotationForeachFunc">
+      <source-position filename="annotation.h" line="49"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -147,16 +190,23 @@ and/or use gtk-doc annotations.  -->
     </callback>
     <callback name="AnnotationListCallback"
               c:type="RegressAnnotationListCallback">
-      <doc xml:space="preserve">This is a callback taking a list.</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="23">This is a callback taking a list.</doc>
+      <source-position filename="annotation.h" line="30"/>
       <return-value transfer-ownership="container">
-        <doc xml:space="preserve">list of strings</doc>
+        <doc xml:space="preserve"
+             filename="annotation.h"
+             line="28">list of strings</doc>
         <type name="GLib.List" c:type="GList*">
           <type name="utf8"/>
         </type>
       </return-value>
       <parameters>
         <parameter name="in" transfer-ownership="none">
-          <doc xml:space="preserve">list of strings</doc>
+          <doc xml:space="preserve"
+               filename="annotation.h"
+               line="25">list of strings</doc>
           <type name="GLib.List" c:type="GList*">
             <type name="utf8"/>
           </type>
@@ -164,8 +214,11 @@ and/or use gtk-doc annotations.  -->
       </parameters>
     </callback>
     <callback name="AnnotationNotifyFunc" c:type="RegressAnnotationNotifyFunc">
-      <doc xml:space="preserve">This is a callback with a 'closure' argument that is not named
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="32">This is a callback with a 'closure' argument that is not named
 'user_data' and hence has to be annotated.</doc>
+      <source-position filename="annotation.h" line="39"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -175,7 +228,9 @@ and/or use gtk-doc annotations.  -->
                    nullable="1"
                    allow-none="1"
                    closure="0">
-          <doc xml:space="preserve">The user data</doc>
+          <doc xml:space="preserve"
+               filename="annotation.h"
+               line="34">The user data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
       </parameters>
@@ -188,16 +243,24 @@ and/or use gtk-doc annotations.  -->
            glib:get-type="regress_annotation_object_get_type"
            glib:type-struct="AnnotationObjectClass">
       <attribute name="org.example.Test" value="cows"/>
-      <doc xml:space="preserve">This is an object used to test annotations.</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="41">This is an object used to test annotations.</doc>
+      <source-position filename="annotation.h" line="61"/>
       <method name="allow_none"
               c:identifier="regress_annotation_object_allow_none">
+        <source-position filename="annotation.h" line="77"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%NULL always</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="568">%NULL always</doc>
           <type name="GObject.Object" c:type="GObject*"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="565">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="somearg"
@@ -210,66 +273,93 @@ and/or use gtk-doc annotations.  -->
       </method>
       <method name="calleeowns"
               c:identifier="regress_annotation_object_calleeowns">
-        <doc xml:space="preserve">This is a test for out arguments; GObject defaults to transfer</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="292">This is a test for out arguments; GObject defaults to transfer</doc>
+        <source-position filename="annotation.h" line="100"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="299">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="294">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="toown"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="295">a #GObject</doc>
             <type name="GObject.Object" c:type="GObject**"/>
           </parameter>
         </parameters>
       </method>
       <method name="calleesowns"
               c:identifier="regress_annotation_object_calleesowns">
-        <doc xml:space="preserve">This is a test for out arguments, one transferred, other not</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="308">This is a test for out arguments, one transferred, other not</doc>
+        <source-position filename="annotation.h" line="104"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="316">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="310">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="toown1"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="311">a #GObject</doc>
             <type name="GObject.Object" c:type="GObject**"/>
           </parameter>
           <parameter name="toown2"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="312">a #GObject</doc>
             <type name="GObject.Object" c:type="GObject**"/>
           </parameter>
         </parameters>
       </method>
       <method name="compute_sum"
               c:identifier="regress_annotation_object_compute_sum">
-        <doc xml:space="preserve">Test taking a zero-terminated array</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="418">Test taking a zero-terminated array</doc>
+        <source-position filename="annotation.h" line="128"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="420">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="nums" transfer-ownership="none">
-            <doc xml:space="preserve">Sequence of numbers</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="421">Sequence of numbers</doc>
             <array zero-terminated="0" c:type="int*">
               <type name="gint" c:type="int"/>
             </array>
@@ -278,62 +368,87 @@ and/or use gtk-doc annotations.  -->
       </method>
       <method name="compute_sum_n"
               c:identifier="regress_annotation_object_compute_sum_n">
-        <doc xml:space="preserve">Test taking an array with length parameter</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="432">Test taking an array with length parameter</doc>
+        <source-position filename="annotation.h" line="133"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="434">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="nums" transfer-ownership="none">
-            <doc xml:space="preserve">Sequence of
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="435">Sequence of
   numbers that are zero-terminated</doc>
             <array length="1" zero-terminated="0" c:type="int*">
               <type name="gint" c:type="int"/>
             </array>
           </parameter>
           <parameter name="n_nums" transfer-ownership="none">
-            <doc xml:space="preserve">Length of number array</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="437">Length of number array</doc>
             <type name="gint" c:type="int"/>
           </parameter>
         </parameters>
       </method>
       <method name="compute_sum_nz"
               c:identifier="regress_annotation_object_compute_sum_nz">
-        <doc xml:space="preserve">Test taking a zero-terminated array with length parameter</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="449">Test taking a zero-terminated array with length parameter</doc>
+        <source-position filename="annotation.h" line="138"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="451">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="nums" transfer-ownership="none">
-            <doc xml:space="preserve">Sequence of numbers that
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="452">Sequence of numbers that
 are zero-terminated</doc>
             <array length="1" zero-terminated="1" c:type="int*">
               <type name="gint" c:type="int"/>
             </array>
           </parameter>
           <parameter name="n_nums" transfer-ownership="none">
-            <doc xml:space="preserve">Length of number array</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="454">Length of number array</doc>
             <type name="gint" c:type="int"/>
           </parameter>
         </parameters>
       </method>
       <method name="create_object"
               c:identifier="regress_annotation_object_create_object">
-        <doc xml:space="preserve">Test returning a caller-owned object</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="392">Test returning a caller-owned object</doc>
+        <source-position filename="annotation.h" line="74"/>
         <return-value transfer-ownership="full">
-          <doc xml:space="preserve">The object</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="398">The object</doc>
           <type name="GObject.Object" c:type="GObject*"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="394">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
@@ -343,13 +458,18 @@ are zero-terminated</doc>
               deprecated="1"
               deprecated-version="0.12">
         <doc-deprecated xml:space="preserve">Use regress_annotation_object_create_object() 
instead.</doc-deprecated>
+        <source-position filename="annotation.h" line="174"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%NULL always</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="593">%NULL always</doc>
           <type name="GObject.Object" c:type="GObject*"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="591">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
@@ -357,6 +477,7 @@ are zero-terminated</doc>
       <method name="extra_annos"
               c:identifier="regress_annotation_object_extra_annos">
         <attribute name="org.foobar" value="testvalue"/>
+        <source-position filename="annotation.h" line="213"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -367,20 +488,27 @@ are zero-terminated</doc>
         </parameters>
       </method>
       <method name="foreach" c:identifier="regress_annotation_object_foreach">
-        <doc xml:space="preserve">Test taking a call-scoped callback</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="498">Test taking a call-scoped callback</doc>
+        <source-position filename="annotation.h" line="152"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="500">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="func"
                      transfer-ownership="none"
                      scope="call"
                      closure="1">
-            <doc xml:space="preserve">Callback to invoke</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="501">Callback to invoke</doc>
             <type name="AnnotationForeachFunc"
                   c:type="RegressAnnotationForeachFunc"/>
           </parameter>
@@ -388,17 +516,24 @@ are zero-terminated</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">Callback user data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="502">Callback user data</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
       </method>
       <method name="get_hash"
               c:identifier="regress_annotation_object_get_hash">
-        <doc xml:space="preserve">This is a test for returning a hash table mapping strings to
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="345">This is a test for returning a hash table mapping strings to
 objects.</doc>
+        <source-position filename="annotation.h" line="112"/>
         <return-value transfer-ownership="full">
-          <doc xml:space="preserve">hash table</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="352">hash table</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
             <type name="GObject.Object"/>
@@ -406,124 +541,177 @@ objects.</doc>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="347">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="get_objects"
               c:identifier="regress_annotation_object_get_objects">
-        <doc xml:space="preserve">This is a test for returning a list of objects.
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="374">This is a test for returning a list of objects.
 The list itself should be freed, but not the internal objects,
 intentionally similar example to gtk_container_get_children</doc>
+        <source-position filename="annotation.h" line="119"/>
         <return-value transfer-ownership="container">
-          <doc xml:space="preserve">list of objects</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="382">list of objects</doc>
           <type name="GLib.SList" c:type="GSList*">
             <type name="AnnotationObject"/>
           </type>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="376">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="get_strings"
               c:identifier="regress_annotation_object_get_strings">
-        <doc xml:space="preserve">This is a test for returning a list of strings, where
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="327">This is a test for returning a list of strings, where
 each string needs to be freed.</doc>
+        <source-position filename="annotation.h" line="109"/>
         <return-value transfer-ownership="full">
-          <doc xml:space="preserve">list of strings</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="334">list of strings</doc>
           <type name="GLib.List" c:type="GList*">
             <type name="utf8"/>
           </type>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="329">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="hidden_self"
               c:identifier="regress_annotation_object_hidden_self">
+        <source-position filename="annotation.h" line="188"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="637">A #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="gpointer"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="in" c:identifier="regress_annotation_object_in">
-        <doc xml:space="preserve">This is a test for in arguments</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="228">This is a test for in arguments</doc>
+        <source-position filename="annotation.h" line="96"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="235">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="230">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="inarg" transfer-ownership="none">
-            <doc xml:space="preserve">This is an argument test</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="231">This is an argument test</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout" c:identifier="regress_annotation_object_inout">
-        <doc xml:space="preserve">This is a test for out arguments</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="244">This is a test for out arguments</doc>
+        <source-position filename="annotation.h" line="84"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="251">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="246">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="inoutarg"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">This is an argument test</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="247">This is an argument test</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout2" c:identifier="regress_annotation_object_inout2">
-        <doc xml:space="preserve">This is a second test for out arguments</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="259">This is a second test for out arguments</doc>
+        <source-position filename="annotation.h" line="88"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="266">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="261">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="inoutarg"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">This is an argument test</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="262">This is an argument test</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="inout3" c:identifier="regress_annotation_object_inout3">
-        <doc xml:space="preserve">This is a 3th test for out arguments</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="275">This is a 3th test for out arguments</doc>
+        <source-position filename="annotation.h" line="92"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="282">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="277">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="inoutarg"
@@ -532,78 +720,108 @@ each string needs to be freed.</doc>
                      transfer-ownership="full"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">This is an argument test</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="278">This is an argument test</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="method" c:identifier="regress_annotation_object_method">
+        <source-position filename="annotation.h" line="67"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="204">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="202">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="notrans" c:identifier="regress_annotation_object_notrans">
+        <source-position filename="annotation.h" line="81"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">An object, not referenced</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="580">An object, not referenced</doc>
           <type name="GObject.Object" c:type="GObject*"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="578">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="out" c:identifier="regress_annotation_object_out">
-        <doc xml:space="preserve">This is a test for out arguments</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="212">This is a test for out arguments</doc>
+        <source-position filename="annotation.h" line="70"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="219">an int</doc>
           <type name="gint" c:type="gint"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="214">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="outarg"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">This is an argument test</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="215">This is an argument test</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
         </parameters>
       </method>
       <method name="parse_args"
               c:identifier="regress_annotation_object_parse_args">
-        <doc xml:space="preserve">Test taking a zero-terminated array with length parameter</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="466">Test taking a zero-terminated array with length parameter</doc>
+        <source-position filename="annotation.h" line="143"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="468">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="argc"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Length of the argument vector</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="469">Length of the argument vector</doc>
             <type name="gint" c:type="int*"/>
           </parameter>
           <parameter name="argv"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Argument vector</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="470">Argument vector</doc>
             <array length="0" zero-terminated="1" c:type="char***">
               <type name="utf8" c:type="char**"/>
             </array>
@@ -612,103 +830,142 @@ each string needs to be freed.</doc>
       </method>
       <method name="set_data"
               c:identifier="regress_annotation_object_set_data">
-        <doc xml:space="preserve">Test taking a guchar * with a length.</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="514">Test taking a guchar * with a length.</doc>
+        <source-position filename="annotation.h" line="158"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="516">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="data" transfer-ownership="none">
-            <doc xml:space="preserve">The data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="517">The data</doc>
             <array length="1" zero-terminated="0" c:type="const guchar*">
               <type name="guint8" c:type="guchar"/>
             </array>
           </parameter>
           <parameter name="length" transfer-ownership="none">
-            <doc xml:space="preserve">Length of the data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="518">Length of the data</doc>
             <type name="gsize" c:type="gsize"/>
           </parameter>
         </parameters>
       </method>
       <method name="set_data2"
               c:identifier="regress_annotation_object_set_data2">
-        <doc xml:space="preserve">Test taking a gchar * with a length.</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="530">Test taking a gchar * with a length.</doc>
+        <source-position filename="annotation.h" line="163"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="532">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="data" transfer-ownership="none">
-            <doc xml:space="preserve">The data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="533">The data</doc>
             <array length="1" zero-terminated="0" c:type="const gchar*">
               <type name="gint8"/>
             </array>
           </parameter>
           <parameter name="length" transfer-ownership="none">
-            <doc xml:space="preserve">Length of the data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="534">Length of the data</doc>
             <type name="gsize" c:type="gsize"/>
           </parameter>
         </parameters>
       </method>
       <method name="set_data3"
               c:identifier="regress_annotation_object_set_data3">
-        <doc xml:space="preserve">Test taking a gchar * with a length, overriding the array element
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="546">Test taking a gchar * with a length, overriding the array element
 type.</doc>
+        <source-position filename="annotation.h" line="168"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="548">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="data" transfer-ownership="none">
-            <doc xml:space="preserve">The data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="549">The data</doc>
             <array length="1" zero-terminated="0" c:type="gpointer">
               <type name="guint8"/>
             </array>
           </parameter>
           <parameter name="length" transfer-ownership="none">
-            <doc xml:space="preserve">Length of the data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="550">Length of the data</doc>
             <type name="gsize" c:type="gsize"/>
           </parameter>
         </parameters>
       </method>
       <method name="string_out"
               c:identifier="regress_annotation_object_string_out">
-        <doc xml:space="preserve">Test returning a string as an out parameter</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">some boolean</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="482">Test returning a string as an out parameter</doc>
+        <source-position filename="annotation.h" line="148"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="489">some boolean</doc>
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="484">a #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="str_out"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">string return value</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="485">string return value</doc>
             <type name="utf8" c:type="char**"/>
           </parameter>
         </parameters>
       </method>
       <method name="use_buffer"
               c:identifier="regress_annotation_object_use_buffer">
+        <source-position filename="annotation.h" line="123"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="408">a #GObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="bytes" transfer-ownership="none">
@@ -720,18 +977,25 @@ type.</doc>
               c:identifier="regress_annotation_object_watch"
               shadowed-by="watch_full"
               introspectable="0">
-        <doc xml:space="preserve">This is here just for the sake of being overriden by its
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="602">This is here just for the sake of being overriden by its
 regress_annotation_object_watch_full().</doc>
+        <source-position filename="annotation.h" line="177"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="604">A #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="func" transfer-ownership="none" closure="1">
-            <doc xml:space="preserve">The callback</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="605">The callback</doc>
             <type name="AnnotationForeachFunc"
                   c:type="RegressAnnotationForeachFunc"/>
           </parameter>
@@ -739,7 +1003,9 @@ regress_annotation_object_watch_full().</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">The callback data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="606">The callback data</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -747,13 +1013,18 @@ regress_annotation_object_watch_full().</doc>
       <method name="watch_full"
               c:identifier="regress_annotation_object_watch_full"
               shadows="watch">
-        <doc xml:space="preserve">Test overriding via the "Rename To" annotation.</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="618">Test overriding via the "Rename To" annotation.</doc>
+        <source-position filename="annotation.h" line="182"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="620">A #RegressAnnotationObject</doc>
             <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
           </instance-parameter>
           <parameter name="func"
@@ -761,7 +1032,9 @@ regress_annotation_object_watch_full().</doc>
                      scope="notified"
                      closure="1"
                      destroy="2">
-            <doc xml:space="preserve">The callback</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="621">The callback</doc>
             <type name="AnnotationForeachFunc"
                   c:type="RegressAnnotationForeachFunc"/>
           </parameter>
@@ -769,17 +1042,22 @@ regress_annotation_object_watch_full().</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">The callback data</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="622">The callback data</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
           <parameter name="destroy" transfer-ownership="none" scope="async">
-            <doc xml:space="preserve">Destroy notification</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="623">Destroy notification</doc>
             <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
           </parameter>
         </parameters>
       </method>
       <method name="with_voidp"
               c:identifier="regress_annotation_object_with_voidp">
+        <source-position filename="annotation.h" line="115"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -791,7 +1069,9 @@ regress_annotation_object_watch_full().</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">Opaque pointer handle</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="366">Opaque pointer handle</doc>
             <type name="gpointer" c:type="void*"/>
           </parameter>
         </parameters>
@@ -809,7 +1089,9 @@ regress_annotation_object_watch_full().</doc>
                 writable="1"
                 construct="1"
                 transfer-ownership="none">
-        <doc xml:space="preserve">This is a property which is a string</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="152">This is a property which is a string</doc>
         <doc-deprecated xml:space="preserve">Use better-string-property instead</doc-deprecated>
         <type name="utf8" c:type="gchar*"/>
       </property>
@@ -818,7 +1100,9 @@ regress_annotation_object_watch_full().</doc>
                 writable="1"
                 construct="1"
                 transfer-ownership="none">
-        <doc xml:space="preserve">This is a property annotation intentionally indented with a mix
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="177">This is a property annotation intentionally indented with a mix
 of tabs and strings to test the tab handling capabilities of the scanner.</doc>
         <type name="utf8" c:type="gchar*"/>
       </property>
@@ -826,27 +1110,37 @@ of tabs and strings to test the tab handling capabilities of the scanner.</doc>
         <type name="GObject.Object" c:type="GObject"/>
       </field>
       <glib:signal name="attribute-signal" when="last">
-        <doc xml:space="preserve">This signal tests a signal with attributes.</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="130">This signal tests a signal with attributes.</doc>
         <return-value transfer-ownership="full">
           <attribute name="some.annotation.foo3" value="val3"/>
-          <doc xml:space="preserve">the return value</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="138">the return value</doc>
           <type name="utf8" c:type="gchar*"/>
         </return-value>
         <parameters>
           <parameter name="arg1" transfer-ownership="none">
             <attribute name="some.annotation.foo1" value="val1"/>
-            <doc xml:space="preserve">a value</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="133">a value</doc>
             <type name="utf8" c:type="gchar*"/>
           </parameter>
           <parameter name="arg2" transfer-ownership="none">
             <attribute name="some.annotation.foo2" value="val2"/>
-            <doc xml:space="preserve">another value</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="134">another value</doc>
             <type name="utf8" c:type="gchar*"/>
           </parameter>
         </parameters>
       </glib:signal>
       <glib:signal name="doc-empty-arg-parsing" when="last">
-        <doc xml:space="preserve">This signal tests an empty document argument (@arg1)</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="114">This signal tests an empty document argument (@arg1)</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -860,14 +1154,18 @@ of tabs and strings to test the tab handling capabilities of the scanner.</doc>
         </parameters>
       </glib:signal>
       <glib:signal name="list-signal" when="last">
-        <doc xml:space="preserve">This is a signal which takes a list of strings, but it's not
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="97">This is a signal which takes a list of strings, but it's not
 known by GObject as it's only marked as G_TYPE_POINTER</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <parameter name="list" transfer-ownership="container">
-            <doc xml:space="preserve">a list of strings</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="100">a list of strings</doc>
             <type name="GLib.List" c:type="gpointer">
               <type name="utf8"/>
             </type>
@@ -879,7 +1177,9 @@ known by GObject as it's only marked as G_TYPE_POINTER</doc>
                    version="1.0"
                    deprecated="1"
                    deprecated-version="1.2">
-        <doc xml:space="preserve">This is a signal which has a broken signal handler,
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="77">This is a signal which has a broken signal handler,
 it says it's pointer but it's actually a string.</doc>
         <doc-deprecated xml:space="preserve">Use other-signal instead</doc-deprecated>
         <return-value transfer-ownership="none">
@@ -887,7 +1187,9 @@ it says it's pointer but it's actually a string.</doc>
         </return-value>
         <parameters>
           <parameter name="string" transfer-ownership="none">
-            <doc xml:space="preserve">a string</doc>
+            <doc xml:space="preserve"
+                 filename="annotation.c"
+                 line="80">a string</doc>
             <type name="utf8" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -896,12 +1198,16 @@ it says it's pointer but it's actually a string.</doc>
     <record name="AnnotationObjectClass"
             c:type="RegressAnnotationObjectClass"
             glib:is-gtype-struct-for="AnnotationObject">
+      <source-position filename="annotation.h" line="61"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
     </record>
     <record name="AnnotationStruct" c:type="RegressAnnotationStruct">
-      <doc xml:space="preserve">This is a test of an array of object in an field of a struct.</doc>
+      <doc xml:space="preserve"
+           filename="annotation.h"
+           line="236">This is a test of an array of object in an field of a struct.</doc>
+      <source-position filename="annotation.h" line="244"/>
       <field name="objects" writable="1">
         <array zero-terminated="0"
                c:type="RegressAnnotationObject"
@@ -912,11 +1218,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="1493"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <union>
+        <source-position filename="regress.h" line="1492"/>
         <record>
+          <source-position filename="regress.h" line="1489"/>
           <field name="a" writable="1">
             <type name="LikeGnomeKeyringPasswordSchema"
                   c:type="RegressLikeGnomeKeyringPasswordSchema*"/>
@@ -933,40 +1242,48 @@ it says it's pointer but it's actually a string.</doc>
       </union>
     </record>
     <constant name="BOOL_CONSTANT" value="true" c:type="REGRESS_BOOL_CONSTANT">
+      <source-position filename="regress.h" line="524"/>
       <type name="gboolean" c:type="gboolean"/>
     </constant>
     <constant name="DOUBLE_CONSTANT"
               value="44.220000"
               c:type="REGRESS_DOUBLE_CONSTANT">
+      <source-position filename="regress.h" line="521"/>
       <type name="gdouble" c:type="gdouble"/>
     </constant>
     <constant name="FOO_DEFINE_SHOULD_BE_EXPOSED"
               value="should be exposed"
               c:type="REGRESS_FOO_DEFINE_SHOULD_BE_EXPOSED">
+      <source-position filename="foo.h" line="12"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <constant name="FOO_FLAGS_SECOND_AND_THIRD"
               value="6"
               c:type="REGRESS_FOO_FLAGS_SECOND_AND_THIRD">
+      <source-position filename="foo.h" line="249"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="FOO_PIE_IS_TASTY"
               value="3.141590"
               c:type="REGRESS_FOO_PIE_IS_TASTY">
+      <source-position filename="foo.h" line="14"/>
       <type name="gdouble" c:type="gdouble"/>
     </constant>
     <constant name="FOO_SUCCESS_INT"
               value="4408"
               c:type="REGRESS_FOO_SUCCESS_INT">
+      <source-position filename="foo.h" line="10"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <enumeration name="FooASingle" c:type="RegressFooASingle">
+      <source-position filename="foo.h" line="534"/>
       <member name="foo_some_single_enum"
               value="0"
               c:identifier="REGRESS_FOO_SOME_SINGLE_ENUM">
       </member>
     </enumeration>
     <enumeration name="FooAddressType" c:type="RegressFooAddressType">
+      <source-position filename="foo.h" line="281"/>
       <member name="invalid"
               value="0"
               c:identifier="REGRESS_FOO_ADDRESS_INVALID">
@@ -981,6 +1298,7 @@ it says it's pointer but it's actually a string.</doc>
             glib:type-name="RegressFooBRect"
             glib:get-type="regress_foo_brect_get_type"
             c:symbol-prefix="foo_brect">
+      <source-position filename="foo.h" line="393"/>
       <field name="x" writable="1">
         <type name="gdouble" c:type="double"/>
       </field>
@@ -988,6 +1306,7 @@ it says it's pointer but it's actually a string.</doc>
         <type name="gdouble" c:type="double"/>
       </field>
       <constructor name="new" c:identifier="regress_foo_brect_new">
+        <source-position filename="foo.h" line="401"/>
         <return-value transfer-ownership="full">
           <type name="FooBRect" c:type="RegressFooBRect*"/>
         </return-value>
@@ -1001,6 +1320,7 @@ it says it's pointer but it's actually a string.</doc>
         </parameters>
       </constructor>
       <method name="add" c:identifier="regress_foo_brect_add">
+        <source-position filename="foo.h" line="405"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1019,6 +1339,7 @@ it says it's pointer but it's actually a string.</doc>
            glib:type-name="RegressFooBUnion"
            glib:get-type="regress_foo_bunion_get_type"
            c:symbol-prefix="foo_bunion">
+      <source-position filename="foo.h" line="414"/>
       <field name="type" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -1029,12 +1350,14 @@ it says it's pointer but it's actually a string.</doc>
         <type name="FooBRect" c:type="RegressFooBRect*"/>
       </field>
       <constructor name="new" c:identifier="regress_foo_bunion_new">
+        <source-position filename="foo.h" line="440"/>
         <return-value transfer-ownership="full">
           <type name="FooBUnion" c:type="RegressFooBUnion*"/>
         </return-value>
       </constructor>
       <method name="get_contained_type"
               c:identifier="regress_foo_bunion_get_contained_type">
+        <source-position filename="foo.h" line="448"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -1050,12 +1373,15 @@ it says it's pointer but it's actually a string.</doc>
             glib:type-name="RegressFooBoxed"
             glib:get-type="regress_foo_boxed_get_type"
             c:symbol-prefix="foo_boxed">
+      <source-position filename="foo.h" line="283"/>
       <constructor name="new" c:identifier="regress_foo_boxed_new">
+        <source-position filename="foo.h" line="290"/>
         <return-value transfer-ownership="full">
           <type name="FooBoxed" c:type="RegressFooBoxed*"/>
         </return-value>
       </constructor>
       <method name="method" c:identifier="regress_foo_boxed_method">
+        <source-position filename="foo.h" line="293"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1073,8 +1399,10 @@ it says it's pointer but it's actually a string.</doc>
            glib:type-name="RegressFooBuffer"
            glib:get-type="regress_foo_buffer_get_type"
            glib:type-struct="FooBufferClass">
+      <source-position filename="foo.h" line="52"/>
       <implements name="FooInterface"/>
       <method name="some_method" c:identifier="regress_foo_buffer_some_method">
+        <source-position filename="foo.h" line="213"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1089,8 +1417,10 @@ it says it's pointer but it's actually a string.</doc>
             c:type="RegressFooBufferClass"
             disguised="1"
             glib:is-gtype-struct-for="FooBuffer">
+      <source-position filename="foo.h" line="52"/>
     </record>
     <callback name="FooCallback" c:type="RegressFooCallback">
+      <source-position filename="foo.h" line="317"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -1114,7 +1444,9 @@ it says it's pointer but it's actually a string.</doc>
             glib:type-name="RegressFooDBusData"
             glib:get-type="regress_foo_dbus_data_get_type"
             c:symbol-prefix="foo_dbus_data">
+      <source-position filename="foo.h" line="296"/>
       <method name="method" c:identifier="regress_foo_dbus_data_method">
+        <source-position filename="foo.h" line="302"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1126,6 +1458,7 @@ it says it's pointer but it's actually a string.</doc>
       </method>
     </record>
     <enumeration name="FooEnumFullname" c:type="RegressFooEnumFullname">
+      <source-position filename="foo.h" line="274"/>
       <member name="one"
               value="1"
               c:identifier="REGRESS_FOO_ENUM_FULLNAME_ONE">
@@ -1140,6 +1473,7 @@ it says it's pointer but it's actually a string.</doc>
       </member>
     </enumeration>
     <enumeration name="FooEnumNoType" c:type="RegressFooEnumNoType">
+      <source-position filename="foo.h" line="260"/>
       <member name="un" value="1" c:identifier="REGRESS_FOO_ENUM_UN">
       </member>
       <member name="deux" value="2" c:identifier="REGRESS_FOO_ENUM_DEUX">
@@ -1169,6 +1503,7 @@ it says it's pointer but it's actually a string.</doc>
               glib:nick="delta">
       </member>
       <function name="method" c:identifier="regress_foo_enum_type_method">
+        <source-position filename="foo.h" line="236"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -1179,6 +1514,7 @@ it says it's pointer but it's actually a string.</doc>
         </parameters>
       </function>
       <function name="returnv" c:identifier="regress_foo_enum_type_returnv">
+        <source-position filename="foo.h" line="240"/>
         <return-value transfer-ownership="none">
           <type name="FooEnumType" c:type="RegressFooEnumType"/>
         </return-value>
@@ -1216,6 +1552,7 @@ it says it's pointer but it's actually a string.</doc>
       </function>
     </enumeration>
     <union name="FooEvent" c:type="RegressFooEvent">
+      <source-position filename="foo.h" line="381"/>
       <field name="type" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -1227,11 +1564,13 @@ it says it's pointer but it's actually a string.</doc>
       </field>
     </union>
     <record name="FooEventAny" c:type="RegressFooEventAny">
+      <source-position filename="foo.h" line="368"/>
       <field name="send_event" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
     </record>
     <record name="FooEventExpose" c:type="RegressFooEventExpose">
+      <source-position filename="foo.h" line="374"/>
       <field name="send_event" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
@@ -1240,6 +1579,7 @@ it says it's pointer but it's actually a string.</doc>
       </field>
     </record>
     <bitfield name="FooFlagsNoType" c:type="RegressFooFlagsNoType">
+      <source-position filename="foo.h" line="267"/>
       <member name="ett" value="1" c:identifier="REGRESS_FOO_FLAGS_ETT">
       </member>
       <member name="tva" value="2" c:identifier="REGRESS_FOO_FLAGS_TVA">
@@ -1270,15 +1610,18 @@ it says it's pointer but it's actually a string.</doc>
     <record name="FooForeignStruct"
             c:type="RegressFooForeignStruct"
             foreign="1">
+      <source-position filename="foo.h" line="563"/>
       <field name="regress_foo" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <constructor name="new" c:identifier="regress_foo_foreign_struct_new">
+        <source-position filename="foo.h" line="567"/>
         <return-value transfer-ownership="full">
           <type name="FooForeignStruct" c:type="RegressFooForeignStruct*"/>
         </return-value>
       </constructor>
       <method name="copy" c:identifier="regress_foo_foreign_struct_copy">
+        <source-position filename="foo.h" line="570"/>
         <return-value transfer-ownership="full">
           <type name="FooForeignStruct" c:type="RegressFooForeignStruct*"/>
         </return-value>
@@ -1295,8 +1638,10 @@ it says it's pointer but it's actually a string.</doc>
                glib:type-name="RegressFooInterface"
                glib:get-type="regress_foo_interface_get_type"
                glib:type-struct="FooInterfaceIface">
+      <source-position filename="foo.h" line="61"/>
       <function name="static_method"
                 c:identifier="regress_foo_interface_static_method">
+        <source-position filename="foo.h" line="73"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1307,6 +1652,7 @@ it says it's pointer but it's actually a string.</doc>
         </parameters>
       </function>
       <virtual-method name="do_regress_foo" invoker="do_regress_foo">
+        <source-position filename="foo.h" line="60"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1321,6 +1667,7 @@ it says it's pointer but it's actually a string.</doc>
       </virtual-method>
       <method name="do_regress_foo"
               c:identifier="regress_foo_interface_do_regress_foo">
+        <source-position filename="foo.h" line="69"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1337,11 +1684,13 @@ it says it's pointer but it's actually a string.</doc>
     <record name="FooInterfaceIface"
             c:type="RegressFooInterfaceIface"
             glib:is-gtype-struct-for="FooInterface">
+      <source-position filename="foo.h" line="61"/>
       <field name="parent_iface">
         <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
       </field>
       <field name="do_regress_foo">
         <callback name="do_regress_foo">
+          <source-position filename="foo.h" line="60"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -1363,20 +1712,24 @@ it says it's pointer but it's actually a string.</doc>
            glib:type-name="RegressFooObject"
            glib:get-type="regress_foo_object_get_type"
            glib:type-struct="FooObjectClass">
+      <source-position filename="foo.h" line="121"/>
       <implements name="FooInterface"/>
       <constructor name="new" c:identifier="regress_foo_object_new">
+        <source-position filename="foo.h" line="132"/>
         <return-value transfer-ownership="full">
           <type name="FooObject" c:type="RegressFooObject*"/>
         </return-value>
       </constructor>
       <constructor name="new_as_super"
                    c:identifier="regress_foo_object_new_as_super">
+        <source-position filename="foo.h" line="138"/>
         <return-value transfer-ownership="full">
           <type name="GObject.Object" c:type="GObject*"/>
         </return-value>
       </constructor>
       <function name="a_global_method"
                 c:identifier="regress_foo_object_a_global_method">
+        <source-position filename="foo.h" line="577"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1388,40 +1741,50 @@ it says it's pointer but it's actually a string.</doc>
       </function>
       <function name="get_default"
                 c:identifier="regress_foo_object_get_default">
-        <doc xml:space="preserve">This function is intended to match clutter_stage_get_default which
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="327">This function is intended to match clutter_stage_get_default which
 uses a C sugar return type.</doc>
+        <source-position filename="foo.h" line="205"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">The global #RegressFooSubobject</doc>
+          <doc xml:space="preserve"
+               filename="foo.c"
+               line="333">The global #RegressFooSubobject</doc>
           <type name="FooSubobject" c:type="RegressFooObject*"/>
         </return-value>
       </function>
       <function name="static_meth"
                 c:identifier="regress_foo_object_static_meth">
+        <source-position filename="foo.h" line="180"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
       </function>
       <virtual-method name="read_fn" invoker="read">
-        <doc xml:space="preserve">Read some stuff.</doc>
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="288">Read some stuff.</doc>
+        <source-position filename="foo.h" line="117"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">obj</doc>
+            <doc xml:space="preserve" filename="foo.c" line="290">obj</doc>
             <type name="FooObject" c:type="RegressFooObject*"/>
           </instance-parameter>
           <parameter name="offset" transfer-ownership="none">
-            <doc xml:space="preserve">offset</doc>
+            <doc xml:space="preserve" filename="foo.c" line="291">offset</doc>
             <type name="gint" c:type="int"/>
           </parameter>
           <parameter name="length" transfer-ownership="none">
-            <doc xml:space="preserve">length</doc>
+            <doc xml:space="preserve" filename="foo.c" line="292">length</doc>
             <type name="gint" c:type="int"/>
           </parameter>
         </parameters>
       </virtual-method>
       <virtual-method name="virtual_method" invoker="virtual_method">
+        <source-position filename="foo.h" line="114"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -1436,7 +1799,10 @@ uses a C sugar return type.</doc>
       </virtual-method>
       <method name="append_new_stack_layer"
               c:identifier="regress_foo_object_append_new_stack_layer">
-        <doc xml:space="preserve">This shouldn't be scanned as a constructor.</doc>
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="776">This shouldn't be scanned as a constructor.</doc>
+        <source-position filename="foo.h" line="581"/>
         <return-value transfer-ownership="none">
           <type name="FooOtherObject" c:type="RegressFooOtherObject*"/>
         </return-value>
@@ -1450,6 +1816,7 @@ uses a C sugar return type.</doc>
         </parameters>
       </method>
       <method name="dup_name" c:identifier="regress_foo_object_dup_name">
+        <source-position filename="foo.h" line="164"/>
         <return-value transfer-ownership="full">
           <type name="utf8" c:type="char*"/>
         </return-value>
@@ -1461,18 +1828,24 @@ uses a C sugar return type.</doc>
       </method>
       <method name="external_type"
               c:identifier="regress_foo_object_external_type">
+        <source-position filename="foo.h" line="135"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%NULL always</doc>
+          <doc xml:space="preserve"
+               filename="foo.c"
+               line="237">%NULL always</doc>
           <type name="Utility.Object" c:type="UtilityObject*"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">a #RegressFooObject</doc>
+            <doc xml:space="preserve"
+                 filename="foo.c"
+                 line="235">a #RegressFooObject</doc>
             <type name="FooObject" c:type="RegressFooObject*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="get_name" c:identifier="regress_foo_object_get_name">
+        <source-position filename="foo.h" line="160"/>
         <return-value transfer-ownership="none">
           <type name="utf8" c:type="const char*"/>
         </return-value>
@@ -1484,6 +1857,7 @@ uses a C sugar return type.</doc>
       </method>
       <method name="handle_glyph"
               c:identifier="regress_foo_object_handle_glyph">
+        <source-position filename="foo.h" line="168"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1498,6 +1872,7 @@ uses a C sugar return type.</doc>
       </method>
       <method name="is_it_time_yet"
               c:identifier="regress_foo_object_is_it_time_yet">
+        <source-position filename="foo.h" line="156"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1513,7 +1888,10 @@ uses a C sugar return type.</doc>
       <method name="new_cookie"
               c:identifier="regress_foo_object_new_cookie"
               introspectable="0">
-        <doc xml:space="preserve">Not sure why this test is here...</doc>
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="263">Not sure why this test is here...</doc>
+        <source-position filename="foo.h" line="152"/>
         <return-value transfer-ownership="none">
           <type name="FooObjectCookie" c:type="RegressFooObjectCookie"/>
         </return-value>
@@ -1527,21 +1905,24 @@ uses a C sugar return type.</doc>
         </parameters>
       </method>
       <method name="read" c:identifier="regress_foo_object_read">
-        <doc xml:space="preserve">Read some stuff.</doc>
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="288">Read some stuff.</doc>
+        <source-position filename="foo.h" line="176"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">obj</doc>
+            <doc xml:space="preserve" filename="foo.c" line="290">obj</doc>
             <type name="FooObject" c:type="RegressFooObject*"/>
           </instance-parameter>
           <parameter name="offset" transfer-ownership="none">
-            <doc xml:space="preserve">offset</doc>
+            <doc xml:space="preserve" filename="foo.c" line="291">offset</doc>
             <type name="gint" c:type="int"/>
           </parameter>
           <parameter name="length" transfer-ownership="none">
-            <doc xml:space="preserve">length</doc>
+            <doc xml:space="preserve" filename="foo.c" line="292">length</doc>
             <type name="gint" c:type="int"/>
           </parameter>
         </parameters>
@@ -1549,13 +1930,16 @@ uses a C sugar return type.</doc>
       <method name="skipped_method"
               c:identifier="regress_foo_object_skipped_method"
               introspectable="0">
-        <doc xml:space="preserve">This is only useful from C.</doc>
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="302">This is only useful from C.</doc>
+        <source-position filename="foo.h" line="184"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="object" transfer-ownership="none">
-            <doc xml:space="preserve">obj</doc>
+            <doc xml:space="preserve" filename="foo.c" line="304">obj</doc>
             <type name="FooObject" c:type="RegressFooObject*"/>
           </instance-parameter>
         </parameters>
@@ -1563,6 +1947,7 @@ uses a C sugar return type.</doc>
       <method name="take_all"
               c:identifier="regress_foo_object_take_all"
               introspectable="0">
+        <source-position filename="foo.h" line="146"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1579,6 +1964,7 @@ uses a C sugar return type.</doc>
         </parameters>
       </method>
       <method name="various" c:identifier="regress_foo_object_various">
+        <source-position filename="foo.h" line="142"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1599,6 +1985,7 @@ uses a C sugar return type.</doc>
       </method>
       <method name="virtual_method"
               c:identifier="regress_foo_object_virtual_method">
+        <source-position filename="foo.h" line="172"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -1650,11 +2037,13 @@ uses a C sugar return type.</doc>
     <record name="FooObjectClass"
             c:type="RegressFooObjectClass"
             glib:is-gtype-struct-for="FooObject">
+      <source-position filename="foo.h" line="121"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
       <field name="virtual_method">
         <callback name="virtual_method">
+          <source-position filename="foo.h" line="114"/>
           <return-value transfer-ownership="none">
             <type name="gboolean" c:type="gboolean"/>
           </return-value>
@@ -1670,20 +2059,25 @@ uses a C sugar return type.</doc>
       </field>
       <field name="read_fn">
         <callback name="read_fn">
+          <source-position filename="foo.h" line="117"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
           <parameters>
             <parameter name="object" transfer-ownership="none">
-              <doc xml:space="preserve">obj</doc>
+              <doc xml:space="preserve" filename="foo.c" line="290">obj</doc>
               <type name="FooObject" c:type="RegressFooObject*"/>
             </parameter>
             <parameter name="offset" transfer-ownership="none">
-              <doc xml:space="preserve">offset</doc>
+              <doc xml:space="preserve"
+                   filename="foo.c"
+                   line="291">offset</doc>
               <type name="gint" c:type="int"/>
             </parameter>
             <parameter name="length" transfer-ownership="none">
-              <doc xml:space="preserve">length</doc>
+              <doc xml:space="preserve"
+                   filename="foo.c"
+                   line="292">length</doc>
               <type name="gint" c:type="int"/>
             </parameter>
           </parameters>
@@ -1702,13 +2096,16 @@ uses a C sugar return type.</doc>
            glib:type-name="RegressFooOtherObject"
            glib:get-type="regress_foo_other_object_get_type"
            glib:type-struct="FooOtherObjectClass">
+      <source-position filename="foo.h" line="54"/>
     </class>
     <record name="FooOtherObjectClass"
             c:type="RegressFooOtherObjectClass"
             disguised="1"
             glib:is-gtype-struct-for="FooOtherObject">
+      <source-position filename="foo.h" line="54"/>
     </record>
     <record name="FooRectangle" c:type="RegressFooRectangle">
+      <source-position filename="foo.h" line="341"/>
       <field name="x" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -1722,6 +2119,7 @@ uses a C sugar return type.</doc>
         <type name="gint" c:type="gint"/>
       </field>
       <method name="add" c:identifier="regress_foo_rectangle_add">
+        <source-position filename="foo.h" line="353"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1730,11 +2128,15 @@ uses a C sugar return type.</doc>
                               direction="inout"
                               caller-allocates="0"
                               transfer-ownership="full">
-            <doc xml:space="preserve">add to this rect</doc>
+            <doc xml:space="preserve"
+                 filename="foo.c"
+                 line="556">add to this rect</doc>
             <type name="FooRectangle" c:type="RegressFooRectangle*"/>
           </instance-parameter>
           <parameter name="r2" transfer-ownership="none">
-            <doc xml:space="preserve">source rectangle</doc>
+            <doc xml:space="preserve"
+                 filename="foo.c"
+                 line="557">source rectangle</doc>
             <type name="FooRectangle" c:type="const RegressFooRectangle*"/>
           </parameter>
         </parameters>
@@ -1742,8 +2144,11 @@ uses a C sugar return type.</doc>
       <function name="new"
                 c:identifier="regress_foo_rectangle_new"
                 introspectable="0">
-        <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
+        <doc xml:space="preserve"
+             filename="foo.c"
+             line="537">This is a C convenience constructor; we have to (skip)
 it because it's not a boxed type.</doc>
+        <source-position filename="foo.h" line="357"/>
         <return-value>
           <type name="FooRectangle" c:type="RegressFooRectangle*"/>
         </return-value>
@@ -1766,16 +2171,24 @@ it because it's not a boxed type.</doc>
     <enumeration name="FooSkippable"
                  introspectable="0"
                  c:type="RegressFooSkippable">
-      <doc xml:space="preserve">Some type that is only interesting from C and should not be
+      <doc xml:space="preserve"
+           filename="foo.h"
+           line="544">Some type that is only interesting from C and should not be
 exposed to language bindings.</doc>
+      <source-position filename="foo.h" line="555"/>
       <member name="one" value="0" c:identifier="REGRESS_FOO_SKIPPABLE_ONE">
-        <doc xml:space="preserve">a skippable enum value</doc>
+        <doc xml:space="preserve"
+             filename="foo.h"
+             line="546">a skippable enum value</doc>
       </member>
       <member name="two" value="1" c:identifier="REGRESS_FOO_SKIPPABLE_TWO">
-        <doc xml:space="preserve">another skippable enum value</doc>
+        <doc xml:space="preserve"
+             filename="foo.h"
+             line="547">another skippable enum value</doc>
       </member>
     </enumeration>
     <enumeration name="FooStackLayer" c:type="RegressFooStackLayer">
+      <source-position filename="foo.h" line="529"/>
       <member name="desktop"
               value="0"
               c:identifier="REGRESS_FOO_LAYER_DESKTOP">
@@ -1804,6 +2217,7 @@ exposed to language bindings.</doc>
       </member>
     </enumeration>
     <record name="FooStruct" c:type="RegressFooStruct">
+      <source-position filename="foo.h" line="331"/>
       <field name="priv" writable="1">
         <type name="FooStructPrivate" c:type="RegressFooStructPrivate*"/>
       </field>
@@ -1814,6 +2228,7 @@ exposed to language bindings.</doc>
     <record name="FooStructPrivate"
             c:type="RegressFooStructPrivate"
             disguised="1">
+      <source-position filename="foo.h" line="325"/>
     </record>
     <interface name="FooSubInterface"
                c:symbol-prefix="foo_sub_interface"
@@ -1821,8 +2236,10 @@ exposed to language bindings.</doc>
                glib:type-name="RegressFooSubInterface"
                glib:get-type="regress_foo_sub_interface_get_type"
                glib:type-struct="FooSubInterfaceIface">
+      <source-position filename="foo.h" line="88"/>
       <prerequisite name="FooInterface"/>
       <virtual-method name="destroy_event">
+        <source-position filename="foo.h" line="81"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1833,6 +2250,7 @@ exposed to language bindings.</doc>
         </parameters>
       </virtual-method>
       <virtual-method name="do_bar" invoker="do_bar">
+        <source-position filename="foo.h" line="85"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1843,6 +2261,7 @@ exposed to language bindings.</doc>
         </parameters>
       </virtual-method>
       <virtual-method name="do_baz" invoker="do_baz">
+        <source-position filename="foo.h" line="87"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1866,6 +2285,7 @@ exposed to language bindings.</doc>
         </parameters>
       </virtual-method>
       <method name="do_bar" c:identifier="regress_foo_sub_interface_do_bar">
+        <source-position filename="foo.h" line="96"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1876,6 +2296,7 @@ exposed to language bindings.</doc>
         </parameters>
       </method>
       <method name="do_baz" c:identifier="regress_foo_sub_interface_do_baz">
+        <source-position filename="foo.h" line="99"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -1906,11 +2327,13 @@ exposed to language bindings.</doc>
     <record name="FooSubInterfaceIface"
             c:type="RegressFooSubInterfaceIface"
             glib:is-gtype-struct-for="FooSubInterface">
+      <source-position filename="foo.h" line="88"/>
       <field name="parent_iface">
         <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
       </field>
       <field name="destroy_event">
         <callback name="destroy_event">
+          <source-position filename="foo.h" line="81"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -1923,6 +2346,7 @@ exposed to language bindings.</doc>
       </field>
       <field name="do_bar">
         <callback name="do_bar">
+          <source-position filename="foo.h" line="85"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -1935,6 +2359,7 @@ exposed to language bindings.</doc>
       </field>
       <field name="do_baz">
         <callback name="do_baz">
+          <source-position filename="foo.h" line="87"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -1967,8 +2392,10 @@ exposed to language bindings.</doc>
            glib:type-name="RegressFooSubobject"
            glib:get-type="regress_foo_subobject_get_type"
            glib:type-struct="FooSubobjectClass">
+      <source-position filename="foo.h" line="194"/>
       <implements name="FooInterface"/>
       <constructor name="new" c:identifier="regress_foo_subobject_new">
+        <source-position filename="foo.h" line="201"/>
         <return-value transfer-ownership="full">
           <type name="FooSubobject" c:type="RegressFooSubobject*"/>
         </return-value>
@@ -1980,11 +2407,13 @@ exposed to language bindings.</doc>
     <record name="FooSubobjectClass"
             c:type="RegressFooSubobjectClass"
             glib:is-gtype-struct-for="FooSubobject">
+      <source-position filename="foo.h" line="194"/>
       <field name="parent_class">
         <type name="FooObjectClass" c:type="RegressFooObjectClass"/>
       </field>
     </record>
     <record name="FooThingWithArray" c:type="RegressFooThingWithArray">
+      <source-position filename="foo.h" line="436"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -2001,11 +2430,13 @@ exposed to language bindings.</doc>
       </field>
     </record>
     <union name="FooUnion" c:type="RegressFooUnion">
+      <source-position filename="foo.h" line="421"/>
       <field name="regress_foo" writable="1">
         <type name="gint" c:type="int"/>
       </field>
     </union>
     <record name="FooUtilityStruct" c:type="RegressFooUtilityStruct">
+      <source-position filename="foo.h" line="427"/>
       <field name="bar" writable="1">
         <type name="Utility.Struct" c:type="UtilityStruct"/>
       </field>
@@ -2013,6 +2444,7 @@ exposed to language bindings.</doc>
     <callback name="FooVarargsCallback"
               c:type="RegressFooVarargsCallback"
               introspectable="0">
+      <source-position filename="foo.h" line="482"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2028,41 +2460,52 @@ exposed to language bindings.</doc>
     <constant name="GI_SCANNER_ELSE"
               value="3"
               c:type="REGRESS_GI_SCANNER_ELSE">
+      <source-position filename="regress.h" line="1457"/>
       <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="1461"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="GUINT64_CONSTANT"
               value="18446744073709551615"
               c:type="REGRESS_GUINT64_CONSTANT">
+      <source-position filename="regress.h" line="526"/>
       <type name="guint64" c:type="guint64"/>
     </constant>
     <constant name="GUINT64_CONSTANTA"
               value="18446744073709551615"
               c:type="REGRESS_GUINT64_CONSTANTA">
+      <source-position filename="regress.h" line="529"/>
       <type name="TestTypeGUInt64" c:type="RegressTestTypeGUInt64"/>
     </constant>
     <constant name="G_GINT64_CONSTANT"
               value="1000"
               c:type="REGRESS_G_GINT64_CONSTANT">
+      <source-position filename="regress.h" line="525"/>
       <type name="gint64" c:type="gint64"/>
     </constant>
     <constant name="INT_CONSTANT" value="4422" c:type="REGRESS_INT_CONSTANT">
+      <source-position filename="regress.h" line="520"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <record name="Intset" c:type="RegressIntset" disguised="1">
-      <doc xml:space="preserve">Like telepathy-glib's TpIntset.</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1336">Like telepathy-glib's TpIntset.</doc>
+      <source-position filename="regress.h" line="1342"/>
     </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="1428"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <record name="LikeGnomeKeyringPasswordSchema"
             c:type="RegressLikeGnomeKeyringPasswordSchema">
+      <source-position filename="regress.h" line="1447"/>
       <field name="dummy" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -2076,6 +2519,7 @@ exposed to language bindings.</doc>
       </field>
     </record>
     <record name="LikeXklConfigItem" c:type="RegressLikeXklConfigItem">
+      <source-position filename="regress.h" line="1414"/>
       <field name="name" writable="1">
         <array zero-terminated="0" c:type="gchar" fixed-size="32">
           <type name="gchar" c:type="gchar"/>
@@ -2083,6 +2527,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="1418"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2099,33 +2544,41 @@ exposed to language bindings.</doc>
     <constant name="MAXUINT64"
               value="18446744073709551615"
               c:type="REGRESS_MAXUINT64">
+      <source-position filename="regress.h" line="1451"/>
       <type name="guint64" c:type="guint64"/>
     </constant>
     <constant name="MININT64"
               value="-9223372036854775808"
               c:type="REGRESS_MININT64">
+      <source-position filename="regress.h" line="1450"/>
       <type name="gint64" c:type="gint64"/>
     </constant>
     <constant name="Mixed_Case_Constant"
               value="4423"
               c:type="REGRESS_Mixed_Case_Constant">
+      <source-position filename="regress.h" line="523"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="NEGATIVE_INT_CONSTANT"
               value="-42"
               c:type="REGRESS_NEGATIVE_INT_CONSTANT">
+      <source-position filename="regress.h" line="519"/>
       <type name="gint" c:type="gint"/>
     </constant>
     <constant name="STRING_CONSTANT"
               value="Some String"
               c:type="REGRESS_STRING_CONSTANT">
+      <source-position filename="regress.h" line="522"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <record name="SkippedStructure"
             c:type="RegressSkippedStructure"
             introspectable="0">
-      <doc xml:space="preserve">This should be skipped, and moreover, all function which
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="1318">This should be skipped, and moreover, all function which
 use it should be.</doc>
+      <source-position filename="regress.h" line="1328"/>
       <field name="x" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -2164,6 +2617,7 @@ use it should be.</doc>
             glib:type-name="RegressTestBoxed"
             glib:get-type="regress_test_boxed_get_type"
             c:symbol-prefix="test_boxed">
+      <source-position filename="regress.h" line="673"/>
       <field name="some_int8" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
@@ -2174,12 +2628,14 @@ use it should be.</doc>
         <type name="TestBoxedPrivate" c:type="RegressTestBoxedPrivate*"/>
       </field>
       <constructor name="new" c:identifier="regress_test_boxed_new">
+        <source-position filename="regress.h" line="679"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxed" c:type="RegressTestBoxed*"/>
         </return-value>
       </constructor>
       <constructor name="new_alternative_constructor1"
                    c:identifier="regress_test_boxed_new_alternative_constructor1">
+        <source-position filename="regress.h" line="682"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxed" c:type="RegressTestBoxed*"/>
         </return-value>
@@ -2191,6 +2647,7 @@ use it should be.</doc>
       </constructor>
       <constructor name="new_alternative_constructor2"
                    c:identifier="regress_test_boxed_new_alternative_constructor2">
+        <source-position filename="regress.h" line="685"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxed" c:type="RegressTestBoxed*"/>
         </return-value>
@@ -2205,6 +2662,7 @@ use it should be.</doc>
       </constructor>
       <constructor name="new_alternative_constructor3"
                    c:identifier="regress_test_boxed_new_alternative_constructor3">
+        <source-position filename="regress.h" line="688"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxed" c:type="RegressTestBoxed*"/>
         </return-value>
@@ -2217,6 +2675,7 @@ use it should be.</doc>
       <method name="_not_a_method"
               c:identifier="regress_test_boxeds_not_a_method"
               moved-to="test_boxeds_not_a_method">
+        <source-position filename="regress.h" line="700"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2227,6 +2686,7 @@ use it should be.</doc>
         </parameters>
       </method>
       <method name="copy" c:identifier="regress_test_boxed_copy">
+        <source-position filename="regress.h" line="692"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxed" c:type="RegressTestBoxed*"/>
         </return-value>
@@ -2237,6 +2697,7 @@ use it should be.</doc>
         </parameters>
       </method>
       <method name="equals" c:identifier="regress_test_boxed_equals">
+        <source-position filename="regress.h" line="695"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -2255,6 +2716,7 @@ use it should be.</doc>
             glib:type-name="RegressTestBoxedB"
             glib:get-type="regress_test_boxed_b_get_type"
             c:symbol-prefix="test_boxed_b">
+      <source-position filename="regress.h" line="711"/>
       <field name="some_int8" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
@@ -2262,6 +2724,7 @@ use it should be.</doc>
         <type name="glong" c:type="glong"/>
       </field>
       <constructor name="new" c:identifier="regress_test_boxed_b_new">
+        <source-position filename="regress.h" line="718"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxedB" c:type="RegressTestBoxedB*"/>
         </return-value>
@@ -2275,6 +2738,7 @@ use it should be.</doc>
         </parameters>
       </constructor>
       <method name="copy" c:identifier="regress_test_boxed_b_copy">
+        <source-position filename="regress.h" line="721"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxedB" c:type="RegressTestBoxedB*"/>
         </return-value>
@@ -2290,6 +2754,7 @@ use it should be.</doc>
             glib:type-name="RegressTestBoxedC"
             glib:get-type="regress_test_boxed_c_get_type"
             c:symbol-prefix="test_boxed_c">
+      <source-position filename="regress.h" line="729"/>
       <field name="refcount" writable="1">
         <type name="guint" c:type="guint"/>
       </field>
@@ -2297,6 +2762,7 @@ use it should be.</doc>
         <type name="guint" c:type="guint"/>
       </field>
       <constructor name="new" c:identifier="regress_test_boxed_c_new">
+        <source-position filename="regress.h" line="735"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxedC" c:type="RegressTestBoxedC*"/>
         </return-value>
@@ -2307,7 +2773,9 @@ use it should be.</doc>
             glib:type-name="RegressTestBoxedD"
             glib:get-type="regress_test_boxed_d_get_type"
             c:symbol-prefix="test_boxed_d">
+      <source-position filename="regress.h" line="737"/>
       <constructor name="new" c:identifier="regress_test_boxed_d_new">
+        <source-position filename="regress.h" line="745"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
         </return-value>
@@ -2321,6 +2789,7 @@ use it should be.</doc>
         </parameters>
       </constructor>
       <method name="copy" c:identifier="regress_test_boxed_d_copy">
+        <source-position filename="regress.h" line="748"/>
         <return-value transfer-ownership="full">
           <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
         </return-value>
@@ -2331,6 +2800,7 @@ use it should be.</doc>
         </parameters>
       </method>
       <method name="free" c:identifier="regress_test_boxed_d_free">
+        <source-position filename="regress.h" line="751"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2341,6 +2811,7 @@ use it should be.</doc>
         </parameters>
       </method>
       <method name="get_magic" c:identifier="regress_test_boxed_d_get_magic">
+        <source-position filename="regress.h" line="755"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -2354,13 +2825,16 @@ use it should be.</doc>
     <record name="TestBoxedPrivate"
             c:type="RegressTestBoxedPrivate"
             disguised="1">
+      <source-position filename="regress.h" line="665"/>
     </record>
     <callback name="TestCallback" c:type="RegressTestCallback">
+      <source-position filename="regress.h" line="1074"/>
       <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="1106"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -2385,6 +2859,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackArrayInOut"
               c:type="RegressTestCallbackArrayInOut">
+      <source-position filename="regress.h" line="1112"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2406,25 +2881,33 @@ use it should be.</doc>
       </parameters>
     </callback>
     <callback name="TestCallbackFull" c:type="RegressTestCallbackFull">
+      <source-position filename="regress.h" line="1093"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
       <parameters>
         <parameter name="foo" transfer-ownership="none">
-          <doc xml:space="preserve">the investment rate</doc>
+          <doc xml:space="preserve"
+               filename="regress.h"
+               line="1089">the investment rate</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="bar" transfer-ownership="none">
-          <doc xml:space="preserve">how much money</doc>
+          <doc xml:space="preserve"
+               filename="regress.h"
+               line="1090">how much money</doc>
           <type name="gdouble" c:type="double"/>
         </parameter>
         <parameter name="path" transfer-ownership="none">
-          <doc xml:space="preserve">Path to file</doc>
+          <doc xml:space="preserve"
+               filename="regress.h"
+               line="1091">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="1081"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2436,12 +2919,15 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackHashtable"
               c:type="RegressTestCallbackHashtable">
+      <source-position filename="regress.h" line="1080"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="data" transfer-ownership="none">
-          <doc xml:space="preserve">a hash table; will be modified</doc>
+          <doc xml:space="preserve"
+               filename="regress.h"
+               line="1078">a hash table; will be modified</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
             <type name="gint"/>
@@ -2451,23 +2937,28 @@ use it should be.</doc>
     </callback>
     <callback name="TestCallbackOwnedGError"
               c:type="RegressTestCallbackOwnedGError">
+      <source-position filename="regress.h" line="1086"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="error" transfer-ownership="full">
-          <doc xml:space="preserve">GError instance; must be freed by the callback</doc>
+          <doc xml:space="preserve"
+               filename="regress.h"
+               line="1084">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="1098"/>
       <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="1075"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -2484,6 +2975,7 @@ use it should be.</doc>
     <enumeration name="TestDEFError"
                  c:type="RegressTestDEFError"
                  glib:error-domain="regress-test-def-error">
+      <source-position filename="regress.h" line="497"/>
       <member name="code0"
               value="0"
               c:identifier="REGRESS_TEST_DEF_ERROR_CODE0">
@@ -2501,18 +2993,20 @@ use it should be.</doc>
                  glib:type-name="RegressTestEnum"
                  glib:get-type="regress_test_enum_get_type"
                  c:type="RegressTestEnum">
-      <doc xml:space="preserve">By purpose, not all members have documentation</doc>
+      <doc xml:space="preserve"
+           filename="regress.h"
+           line="368">By purpose, not all members have documentation</doc>
       <member name="value1"
               value="0"
               c:identifier="REGRESS_TEST_VALUE1"
               glib:nick="value1">
-        <doc xml:space="preserve">value 1</doc>
+        <doc xml:space="preserve" filename="regress.h" line="370">value 1</doc>
       </member>
       <member name="value2"
               value="1"
               c:identifier="REGRESS_TEST_VALUE2"
               glib:nick="value2">
-        <doc xml:space="preserve">value 2</doc>
+        <doc xml:space="preserve" filename="regress.h" line="371">value 2</doc>
       </member>
       <member name="value3"
               value="-1"
@@ -2530,6 +3024,7 @@ use it should be.</doc>
               glib:nick="value5">
       </member>
       <function name="param" c:identifier="regress_test_enum_param">
+        <source-position filename="regress.h" line="435"/>
         <return-value transfer-ownership="none">
           <type name="utf8" c:type="const gchar*"/>
         </return-value>
@@ -2541,6 +3036,7 @@ use it should be.</doc>
       </function>
     </enumeration>
     <enumeration name="TestEnumNoGEnum" c:type="RegressTestEnumNoGEnum">
+      <source-position filename="regress.h" line="425"/>
       <member name="evalue1" value="0" c:identifier="REGRESS_TEST_EVALUE1">
       </member>
       <member name="evalue2" value="42" c:identifier="REGRESS_TEST_EVALUE2">
@@ -2591,6 +3087,7 @@ use it should be.</doc>
     </enumeration>
     <callback name="TestExternallyDefinedCallback"
               c:type="RegressTestExternallyDefinedCallback">
+      <source-position filename="regress.h" line="790"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2630,9 +3127,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="1258"/>
       <constructor name="new" c:identifier="regress_test_floating_new">
+        <source-position filename="regress.h" line="1265"/>
         <return-value transfer-ownership="none">
-          <doc xml:space="preserve">A new floating #RegressTestFloating</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="4211">A new floating #RegressTestFloating</doc>
           <type name="TestFloating" c:type="RegressTestFloating*"/>
         </return-value>
       </constructor>
@@ -2643,6 +3144,7 @@ use it should be.</doc>
     <record name="TestFloatingClass"
             c:type="RegressTestFloatingClass"
             glib:is-gtype-struct-for="TestFloating">
+      <source-position filename="regress.h" line="1258"/>
       <field name="parent_class">
         <type name="GObject.InitiallyUnownedClass"
               c:type="GInitiallyUnownedClass"/>
@@ -2660,7 +3162,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="1026"/>
       <virtual-method name="copy">
+        <source-position filename="regress.h" line="1011"/>
         <return-value transfer-ownership="full">
           <type name="TestFundamentalObject"
                 c:type="RegressTestFundamentalObject*"/>
@@ -2673,6 +3177,7 @@ use it should be.</doc>
         </parameters>
       </virtual-method>
       <virtual-method name="finalize">
+        <source-position filename="regress.h" line="1012"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2684,8 +3189,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="1032"/>
         <return-value transfer-ownership="full">
-          <doc xml:space="preserve">A new #RegressTestFundamentalObject</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3337">A new #RegressTestFundamentalObject</doc>
           <type name="TestFundamentalObject"
                 c:type="RegressTestFundamentalObject*"/>
         </return-value>
@@ -2699,6 +3207,7 @@ use it should be.</doc>
       </method>
       <method name="unref"
               c:identifier="regress_test_fundamental_object_unref">
+        <source-position filename="regress.h" line="1035"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2723,6 +3232,7 @@ use it should be.</doc>
     <record name="TestFundamentalObjectClass"
             c:type="RegressTestFundamentalObjectClass"
             glib:is-gtype-struct-for="TestFundamentalObject">
+      <source-position filename="regress.h" line="1026"/>
       <field name="type_class">
         <type name="GObject.TypeClass" c:type="GTypeClass"/>
       </field>
@@ -2737,6 +3247,7 @@ use it should be.</doc>
     </record>
     <callback name="TestFundamentalObjectCopyFunction"
               c:type="RegressTestFundamentalObjectCopyFunction">
+      <source-position filename="regress.h" line="1011"/>
       <return-value transfer-ownership="full">
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -2750,6 +3261,7 @@ use it should be.</doc>
     </callback>
     <callback name="TestFundamentalObjectFinalizeFunction"
               c:type="RegressTestFundamentalObjectFinalizeFunction">
+      <source-position filename="regress.h" line="1012"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2768,8 +3280,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="1056"/>
       <constructor name="new"
                    c:identifier="regress_test_fundamental_sub_object_new">
+        <source-position filename="regress.h" line="1065"/>
         <return-value transfer-ownership="full">
           <type name="TestFundamentalSubObject"
                 c:type="RegressTestFundamentalSubObject*"/>
@@ -2791,6 +3305,7 @@ use it should be.</doc>
     <record name="TestFundamentalSubObjectClass"
             c:type="RegressTestFundamentalSubObjectClass"
             glib:is-gtype-struct-for="TestFundamentalSubObject">
+      <source-position filename="regress.h" line="1056"/>
       <field name="fundamental_object_class">
         <type name="TestFundamentalObjectClass"
               c:type="RegressTestFundamentalObjectClass"/>
@@ -2804,8 +3319,10 @@ use it should be.</doc>
            glib:type-name="RegressTestInheritDrawable"
            glib:get-type="regress_test_inherit_drawable_get_type"
            glib:type-struct="TestInheritDrawableClass">
+      <source-position filename="drawable.h" line="19"/>
       <method name="do_foo"
               c:identifier="regress_test_inherit_drawable_do_foo">
+        <source-position filename="drawable.h" line="26"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2822,6 +3339,7 @@ use it should be.</doc>
       <method name="do_foo_maybe_throw"
               c:identifier="regress_test_inherit_drawable_do_foo_maybe_throw"
               throws="1">
+        <source-position filename="drawable.h" line="35"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2837,6 +3355,7 @@ use it should be.</doc>
       </method>
       <method name="get_origin"
               c:identifier="regress_test_inherit_drawable_get_origin">
+        <source-position filename="drawable.h" line="29"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2861,6 +3380,7 @@ use it should be.</doc>
       </method>
       <method name="get_size"
               c:identifier="regress_test_inherit_drawable_get_size">
+        <source-position filename="drawable.h" line="32"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -2890,12 +3410,14 @@ use it should be.</doc>
     <record name="TestInheritDrawableClass"
             c:type="RegressTestInheritDrawableClass"
             glib:is-gtype-struct-for="TestInheritDrawable">
+      <source-position filename="drawable.h" line="19"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
     </record>
     <record name="TestInheritPixmapObjectClass"
             c:type="RegressTestInheritPixmapObjectClass">
+      <source-position filename="drawable.h" line="42"/>
       <field name="parent_class" writable="1">
         <type name="TestInheritDrawableClass"
               c:type="RegressTestInheritDrawableClass"/>
@@ -2907,14 +3429,18 @@ 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="1202"/>
       <method name="emit_signal"
               c:identifier="regress_test_interface_emit_signal">
+        <source-position filename="regress.h" line="1208"/>
         <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">the object to emit the signal</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="4070">the object to emit the signal</doc>
             <type name="TestInterface" c:type="RegressTestInterface*"/>
           </instance-parameter>
         </parameters>
@@ -2931,7 +3457,9 @@ use it should be.</doc>
         </return-value>
         <parameters>
           <parameter name="ptr" transfer-ownership="none">
-            <doc xml:space="preserve">the code must look up the signal with
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="4051">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>
@@ -2941,11 +3469,13 @@ use it should be.</doc>
     <record name="TestInterfaceIface"
             c:type="RegressTestInterfaceIface"
             glib:is-gtype-struct-for="TestInterface">
+      <source-position filename="regress.h" line="1202"/>
       <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="1073"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -2957,24 +3487,30 @@ use it should be.</doc>
            glib:type-name="RegressTestObj"
            glib:get-type="regress_test_obj_get_type"
            glib:type-struct="TestObjClass">
+      <source-position filename="regress.h" line="812"/>
       <constructor name="constructor" c:identifier="regress_constructor">
+        <source-position filename="regress.h" line="821"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
       </constructor>
       <constructor name="new" c:identifier="regress_test_obj_new">
+        <source-position filename="regress.h" line="818"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
         <parameters>
           <parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2768">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="1170"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
@@ -3001,6 +3537,7 @@ use it should be.</doc>
       <constructor name="new_from_file"
                    c:identifier="regress_test_obj_new_from_file"
                    throws="1">
+        <source-position filename="regress.h" line="824"/>
         <return-value transfer-ownership="full">
           <type name="TestObj" c:type="RegressTestObj*"/>
         </return-value>
@@ -3011,6 +3548,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="946"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3021,13 +3559,16 @@ use it should be.</doc>
                      transfer-ownership="full"
                      optional="1"
                      allow-none="1">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3156">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="854"/>
         <return-value transfer-ownership="none">
           <type name="gdouble" c:type="double"/>
         </return-value>
@@ -3039,6 +3580,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="1167"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3053,6 +3595,7 @@ use it should be.</doc>
         </parameters>
       </function>
       <virtual-method name="allow_none_vfunc">
+        <source-position filename="regress.h" line="802"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3064,12 +3607,15 @@ use it should be.</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">Another object</doc>
+            <doc xml:space="preserve"
+                 filename="regress.h"
+                 line="800">Another object</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </parameter>
         </parameters>
       </virtual-method>
       <virtual-method name="complex_vfunc">
+        <source-position filename="regress.h" line="790"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3083,43 +3629,58 @@ use it should be.</doc>
         </parameters>
       </virtual-method>
       <virtual-method name="matrix" invoker="do_matrix">
-        <doc xml:space="preserve">This method is virtual.  Notably its name differs from the virtual
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3130">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="796"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3132">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="somestr" transfer-ownership="none">
-            <doc xml:space="preserve">Meaningless string</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3133">Meaningless string</doc>
             <type name="utf8" c:type="const char*"/>
           </parameter>
         </parameters>
       </virtual-method>
       <method name="do_matrix" c:identifier="regress_test_obj_do_matrix">
-        <doc xml:space="preserve">This method is virtual.  Notably its name differs from the virtual
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3130">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="939"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3132">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="somestr" transfer-ownership="none">
-            <doc xml:space="preserve">Meaningless string</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3133">Meaningless string</doc>
             <type name="utf8" c:type="const char*"/>
           </parameter>
         </parameters>
       </method>
       <method name="emit_sig_with_array_len_prop"
               c:identifier="regress_test_obj_emit_sig_with_array_len_prop">
+        <source-position filename="regress.h" line="842"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3131,6 +3692,7 @@ case.</doc>
       </method>
       <method name="emit_sig_with_foreign_struct"
               c:identifier="regress_test_obj_emit_sig_with_foreign_struct">
+        <source-position filename="regress.h" line="833"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3142,19 +3704,25 @@ case.</doc>
       </method>
       <method name="emit_sig_with_inout_int"
               c:identifier="regress_test_obj_emit_sig_with_inout_int">
-        <doc xml:space="preserve">The signal handler must increment the inout parameter by 1.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2858">The signal handler must increment the inout parameter by 1.</doc>
+        <source-position filename="regress.h" line="845"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">The object to emit the signal.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2860">The object to emit the signal.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
         </parameters>
       </method>
       <method name="emit_sig_with_int64"
               c:identifier="regress_test_obj_emit_sig_with_int64">
+        <source-position filename="regress.h" line="836"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3166,6 +3734,7 @@ case.</doc>
       </method>
       <method name="emit_sig_with_obj"
               c:identifier="regress_test_obj_emit_sig_with_obj">
+        <source-position filename="regress.h" line="830"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3177,6 +3746,7 @@ case.</doc>
       </method>
       <method name="emit_sig_with_uint64"
               c:identifier="regress_test_obj_emit_sig_with_uint64">
+        <source-position filename="regress.h" line="839"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3187,18 +3757,22 @@ case.</doc>
         </parameters>
       </method>
       <method name="forced_method" c:identifier="regress_forced_method">
+        <source-position filename="regress.h" line="857"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2897">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="848"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -3210,6 +3784,7 @@ case.</doc>
       </method>
       <method name="instance_method_callback"
               c:identifier="regress_test_obj_instance_method_callback">
+        <source-position filename="regress.h" line="1164"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3228,6 +3803,7 @@ case.</doc>
       </method>
       <method name="instance_method_full"
               c:identifier="regress_test_obj_instance_method_full">
+        <source-position filename="regress.h" line="851"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3239,55 +3815,71 @@ case.</doc>
       </method>
       <method name="name_conflict"
               c:identifier="regress_test_obj_name_conflict">
+        <source-position filename="regress.h" line="958"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3200">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="953"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3187">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="input" transfer-ownership="none">
-            <doc xml:space="preserve">some uint8 array</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3188">some uint8 array</doc>
             <array length="1" zero-terminated="0" c:type="gpointer">
               <type name="guint8"/>
             </array>
           </parameter>
           <parameter name="count" transfer-ownership="none">
-            <doc xml:space="preserve">length of @input</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3189">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="950"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3176">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="input" transfer-ownership="none">
-            <doc xml:space="preserve">some #GObject</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3177">some #GObject</doc>
             <type name="GObject.Object" c:type="gpointer"/>
           </parameter>
         </parameters>
       </method>
       <method name="set_bare" c:identifier="regress_test_obj_set_bare">
+        <source-position filename="regress.h" line="827"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3306,29 +3898,42 @@ case.</doc>
       <method name="skip_inout_param"
               c:identifier="regress_test_obj_skip_inout_param"
               throws="1">
-        <doc xml:space="preserve">Check that the out value is skipped</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3094">Check that the out value is skipped</doc>
+        <source-position filename="regress.h" line="927"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3108">%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">A #RegressTestObj.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3096">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">Parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3097">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3098">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
-            <doc xml:space="preserve">Other parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3099">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
@@ -3336,22 +3941,30 @@ case.</doc>
                      caller-allocates="0"
                      transfer-ownership="full"
                      skip="1">
-            <doc xml:space="preserve">Will be incremented.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3100">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3101">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3102">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3103">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -3359,18 +3972,27 @@ case.</doc>
       <method name="skip_out_param"
               c:identifier="regress_test_obj_skip_out_param"
               throws="1">
-        <doc xml:space="preserve">Check that the out value is skipped</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3058">Check that the out value is skipped</doc>
+        <source-position filename="regress.h" line="915"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3072">%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">A #RegressTestObj.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3060">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">Parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3061">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
@@ -3378,33 +4000,45 @@ case.</doc>
                      caller-allocates="0"
                      transfer-ownership="full"
                      skip="1">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3062">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
-            <doc xml:space="preserve">Other parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3063">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Will be incremented.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3064">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3065">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3066">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3067">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -3412,51 +4046,72 @@ case.</doc>
       <method name="skip_param"
               c:identifier="regress_test_obj_skip_param"
               throws="1">
-        <doc xml:space="preserve">Check that a parameter is skipped</doc>
-        <return-value transfer-ownership="none">
-          <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3022">Check that a parameter is skipped</doc>
+        <source-position filename="regress.h" line="903"/>
+        <return-value transfer-ownership="none">
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3036">%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">A #RegressTestObj.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3024">A #RegressTestObj.</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">Parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3025">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3026">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none" skip="1">
-            <doc xml:space="preserve">Other parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3027">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Will be incremented.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3028">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3029">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3030">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3031">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -3464,51 +4119,72 @@ case.</doc>
       <method name="skip_return_val"
               c:identifier="regress_test_obj_skip_return_val"
               throws="1">
-        <doc xml:space="preserve">Check that the return value is skipped</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2962">Check that the return value is skipped</doc>
+        <source-position filename="regress.h" line="885"/>
         <return-value transfer-ownership="none" skip="1">
-          <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="2976">%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">a #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2964">a #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">Parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2965">Parameter.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="out_b"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">A return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2966">A return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="c" transfer-ownership="none">
-            <doc xml:space="preserve">Other parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2967">Other parameter.</doc>
             <type name="gdouble" c:type="gdouble"/>
           </parameter>
           <parameter name="inout_d"
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Will be incremented.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2968">Will be incremented.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="out_sum"
                      direction="out"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">Return value.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2969">Return value.</doc>
             <type name="gint" c:type="gint*"/>
           </parameter>
           <parameter name="num1" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2970">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
           <parameter name="num2" transfer-ownership="none">
-            <doc xml:space="preserve">Number.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2971">Number.</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
@@ -3516,31 +4192,43 @@ case.</doc>
       <method name="skip_return_val_no_out"
               c:identifier="regress_test_obj_skip_return_val_no_out"
               throws="1">
-        <doc xml:space="preserve">Check that the return value is skipped. Succeed if a is nonzero, otherwise
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2998">Check that the return value is skipped. Succeed if a is nonzero, otherwise
 raise an error.</doc>
+        <source-position filename="regress.h" line="897"/>
         <return-value transfer-ownership="none" skip="1">
-          <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3007">%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">a #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3000">a #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">Parameter.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="3001">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="865"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2907">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="x" transfer-ownership="none">
@@ -3575,13 +4263,18 @@ raise an error.</doc>
       <method name="torture_signature_1"
               c:identifier="regress_test_obj_torture_signature_1"
               throws="1">
-        <doc xml:space="preserve">This function throws an error if m is odd.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2930">This function throws an error if m is odd.</doc>
+        <source-position filename="regress.h" line="874"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
           <instance-parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A #RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2932">A #RegressTestObj</doc>
             <type name="TestObj" c:type="RegressTestObj*"/>
           </instance-parameter>
           <parameter name="x" transfer-ownership="none">
@@ -3728,6 +4421,7 @@ raise an error.</doc>
       </field>
       <field name="function_ptr">
         <callback name="function_ptr">
+          <source-position filename="regress.h" line="787"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -3754,7 +4448,9 @@ raise an error.</doc>
         </return-value>
       </glib:signal>
       <glib:signal name="sig-with-array-len-prop" when="last">
-        <doc xml:space="preserve">This test signal similar to GSettings::change-event.
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2358">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">
@@ -3765,26 +4461,34 @@ raise from the introspection client language.</doc>
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">numbers, or %NULL</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2361">numbers, or %NULL</doc>
             <array length="1" zero-terminated="0" c:type="gpointer">
               <type name="guint"/>
             </array>
           </parameter>
           <parameter name="len" transfer-ownership="none">
-            <doc xml:space="preserve">length of @arr, or 0</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2362">length of @arr, or 0</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-array-prop" when="last">
-        <doc xml:space="preserve">This test signal is like TelepathyGlib's
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2338">This test signal is like TelepathyGlib's
  TpChannel:: group-members-changed-detailed:</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <parameter name="arr" transfer-ownership="none">
-            <doc xml:space="preserve">numbers</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2341">numbers</doc>
             <array name="GLib.Array">
               <type name="guint"/>
             </array>
@@ -3797,13 +4501,17 @@ raise from the introspection client language.</doc>
         </return-value>
         <parameters>
           <parameter name="cr" transfer-ownership="none">
-            <doc xml:space="preserve">A cairo context.</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2444">A cairo context.</doc>
             <type name="cairo.Context"/>
           </parameter>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-hash-prop" when="last">
-        <doc xml:space="preserve">This test signal is like TelepathyGlib's
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2381">This test signal is like TelepathyGlib's
  TpAccount::status-changed</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -3818,7 +4526,9 @@ raise from the introspection client language.</doc>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-inout-int" when="last">
-        <doc xml:space="preserve">This signal is modeled after GtkEditable::insert-text.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2551">This signal is modeled after GtkEditable::insert-text.</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -3827,7 +4537,9 @@ raise from the introspection client language.</doc>
                      direction="inout"
                      caller-allocates="0"
                      transfer-ownership="full">
-            <doc xml:space="preserve">The position, in characters, at which to
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2554">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"/>
@@ -3835,14 +4547,18 @@ raise from the introspection client language.</doc>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-int64-prop" when="last">
-        <doc xml:space="preserve">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2492">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"/>
         </return-value>
         <parameters>
           <parameter name="i" transfer-ownership="none">
-            <doc xml:space="preserve">an integer</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2495">an integer</doc>
             <type name="gint64" c:type="gint64"/>
           </parameter>
         </parameters>
@@ -3855,32 +4571,42 @@ the introspection client langage.</doc>
         </return-value>
         <parameters>
           <parameter name="i" transfer-ownership="none">
-            <doc xml:space="preserve">an integer</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2535">an integer</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-obj" when="last">
-        <doc xml:space="preserve">Test transfer none GObject as a param (tests refcounting).
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2420">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"/>
         </return-value>
         <parameters>
           <parameter name="obj" transfer-ownership="none">
-            <doc xml:space="preserve">A newly created RegressTestObj</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2423">A newly created RegressTestObj</doc>
             <type name="GObject.Object"/>
           </parameter>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-strv" when="last">
-        <doc xml:space="preserve">Test GStrv as a param.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2401">Test GStrv as a param.</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <parameter name="strs" transfer-ownership="none">
-            <doc xml:space="preserve">strings</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2404">strings</doc>
             <array>
               <type name="utf8"/>
             </array>
@@ -3888,14 +4614,18 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
         </parameters>
       </glib:signal>
       <glib:signal name="sig-with-uint64-prop" when="last">
-        <doc xml:space="preserve">You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="2512">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"/>
         </return-value>
         <parameters>
           <parameter name="i" transfer-ownership="none">
-            <doc xml:space="preserve">an integer</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="2515">an integer</doc>
             <type name="guint64" c:type="guint64"/>
           </parameter>
         </parameters>
@@ -3922,21 +4652,27 @@ the introspection client langage.</doc>
     <record name="TestObjClass"
             c:type="RegressTestObjClass"
             glib:is-gtype-struct-for="TestObj">
+      <source-position filename="regress.h" line="812"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
       <field name="matrix">
         <callback name="matrix">
+          <source-position filename="regress.h" line="796"/>
           <return-value transfer-ownership="none">
             <type name="gint" c:type="int"/>
           </return-value>
           <parameters>
             <parameter name="obj" transfer-ownership="none">
-              <doc xml:space="preserve">A #RegressTestObj</doc>
+              <doc xml:space="preserve"
+                   filename="regress.c"
+                   line="3132">A #RegressTestObj</doc>
               <type name="TestObj" c:type="RegressTestObj*"/>
             </parameter>
             <parameter name="somestr" transfer-ownership="none">
-              <doc xml:space="preserve">Meaningless string</doc>
+              <doc xml:space="preserve"
+                   filename="regress.c"
+                   line="3133">Meaningless string</doc>
               <type name="utf8" c:type="const char*"/>
             </parameter>
           </parameters>
@@ -3944,6 +4680,7 @@ the introspection client langage.</doc>
       </field>
       <field name="allow_none_vfunc">
         <callback name="allow_none_vfunc">
+          <source-position filename="regress.h" line="802"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -3955,7 +4692,9 @@ the introspection client langage.</doc>
                        transfer-ownership="none"
                        nullable="1"
                        allow-none="1">
-              <doc xml:space="preserve">Another object</doc>
+              <doc xml:space="preserve"
+                   filename="regress.h"
+                   line="800">Another object</doc>
               <type name="TestObj" c:type="RegressTestObj*"/>
             </parameter>
           </parameters>
@@ -3973,6 +4712,7 @@ the introspection client langage.</doc>
       </field>
       <field name="_regress_reserved1" introspectable="0">
         <callback name="_regress_reserved1">
+          <source-position filename="regress.h" line="810"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -3980,6 +4720,7 @@ the introspection client langage.</doc>
       </field>
       <field name="_regress_reserved2" introspectable="0">
         <callback name="_regress_reserved2">
+          <source-position filename="regress.h" line="811"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -4014,6 +4755,7 @@ the introspection client langage.</doc>
       </function>
     </enumeration>
     <bitfield name="TestPrivateEnum" c:type="RegressTestPrivateEnum">
+      <source-position filename="regress.h" line="1401"/>
       <member name="public_enum_before"
               value="1"
               c:identifier="REGRESS_TEST_PUBLIC_ENUM_BEFORE">
@@ -4024,6 +4766,7 @@ the introspection client langage.</doc>
       </member>
     </bitfield>
     <record name="TestPrivateStruct" c:type="RegressTestPrivateStruct">
+      <source-position filename="regress.h" line="1393"/>
       <field name="this_is_public_before" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -4035,6 +4778,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestReferenceCounters" c:type="RegressTestReferenceCounters">
+      <source-position filename="regress.h" line="1503"/>
       <field name="refcount" writable="1">
         <type name="gint" c:type="grefcount"/>
       </field>
@@ -4043,6 +4787,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <enumeration name="TestReferenceEnum" c:type="RegressTestReferenceEnum">
+      <source-position filename="regress.h" line="417"/>
       <member name="0" value="4" c:identifier="REGRESS_TEST_REFERENCE_0">
       </member>
       <member name="1" value="2" c:identifier="REGRESS_TEST_REFERENCE_1">
@@ -4061,6 +4806,7 @@ the introspection client langage.</doc>
             glib:type-name="RegressTestSimpleBoxedA"
             glib:get-type="regress_test_simple_boxed_a_get_gtype"
             c:symbol-prefix="test_simple_boxed_a">
+      <source-position filename="regress.h" line="631"/>
       <field name="some_int" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -4074,6 +4820,7 @@ the introspection client langage.</doc>
         <type name="TestEnum" c:type="RegressTestEnum"/>
       </field>
       <method name="copy" c:identifier="regress_test_simple_boxed_a_copy">
+        <source-position filename="regress.h" line="638"/>
         <return-value transfer-ownership="full">
           <type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA*"/>
         </return-value>
@@ -4084,6 +4831,7 @@ the introspection client langage.</doc>
         </parameters>
       </method>
       <method name="equals" c:identifier="regress_test_simple_boxed_a_equals">
+        <source-position filename="regress.h" line="641"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -4098,6 +4846,7 @@ the introspection client langage.</doc>
       </method>
       <function name="const_return"
                 c:identifier="regress_test_simple_boxed_a_const_return">
+        <source-position filename="regress.h" line="645"/>
         <return-value transfer-ownership="none">
           <type name="TestSimpleBoxedA"
                 c:type="const RegressTestSimpleBoxedA*"/>
@@ -4109,6 +4858,7 @@ the introspection client langage.</doc>
             glib:type-name="RegressTestSimpleBoxedB"
             glib:get-type="regress_test_simple_boxed_b_get_type"
             c:symbol-prefix="test_simple_boxed_b">
+      <source-position filename="regress.h" line="652"/>
       <field name="some_int8" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
@@ -4116,6 +4866,7 @@ the introspection client langage.</doc>
         <type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA"/>
       </field>
       <method name="copy" c:identifier="regress_test_simple_boxed_b_copy">
+        <source-position filename="regress.h" line="659"/>
         <return-value transfer-ownership="full">
           <type name="TestSimpleBoxedB" c:type="RegressTestSimpleBoxedB*"/>
         </return-value>
@@ -4127,11 +4878,13 @@ the introspection client langage.</doc>
       </method>
     </record>
     <callback name="TestSimpleCallback" c:type="RegressTestSimpleCallback">
+      <source-position filename="regress.h" line="1072"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
     </callback>
     <record name="TestStructA" c:type="RegressTestStructA">
+      <source-position filename="regress.h" line="544"/>
       <field name="some_int" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -4145,25 +4898,33 @@ the introspection client langage.</doc>
         <type name="TestEnum" c:type="RegressTestEnum"/>
       </field>
       <method name="clone" c:identifier="regress_test_struct_a_clone">
-        <doc xml:space="preserve">Make a copy of a RegressTestStructA</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="1719">Make a copy of a RegressTestStructA</doc>
+        <source-position filename="regress.h" line="547"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="a" transfer-ownership="none">
-            <doc xml:space="preserve">the structure</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1721">the structure</doc>
             <type name="TestStructA" c:type="RegressTestStructA*"/>
           </instance-parameter>
           <parameter name="a_out"
                      direction="out"
                      caller-allocates="1"
                      transfer-ownership="none">
-            <doc xml:space="preserve">the cloned structure</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1722">the cloned structure</doc>
             <type name="TestStructA" c:type="RegressTestStructA*"/>
           </parameter>
         </parameters>
       </method>
       <function name="parse" c:identifier="regress_test_struct_a_parse">
+        <source-position filename="regress.h" line="551"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4172,17 +4933,22 @@ the introspection client langage.</doc>
                      direction="out"
                      caller-allocates="1"
                      transfer-ownership="none">
-            <doc xml:space="preserve">the structure that is to be filled</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1735">the structure that is to be filled</doc>
             <type name="TestStructA" c:type="RegressTestStructA*"/>
           </parameter>
           <parameter name="string" transfer-ownership="none">
-            <doc xml:space="preserve">ignored</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1736">ignored</doc>
             <type name="utf8" c:type="const gchar*"/>
           </parameter>
         </parameters>
       </function>
     </record>
     <record name="TestStructB" c:type="RegressTestStructB">
+      <source-position filename="regress.h" line="560"/>
       <field name="some_int8" writable="1">
         <type name="gint8" c:type="gint8"/>
       </field>
@@ -4190,26 +4956,34 @@ the introspection client langage.</doc>
         <type name="TestStructA" c:type="RegressTestStructA"/>
       </field>
       <method name="clone" c:identifier="regress_test_struct_b_clone">
-        <doc xml:space="preserve">Make a copy of a RegressTestStructB</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="1762">Make a copy of a RegressTestStructB</doc>
+        <source-position filename="regress.h" line="563"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
           <instance-parameter name="b" transfer-ownership="none">
-            <doc xml:space="preserve">the structure</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1764">the structure</doc>
             <type name="TestStructB" c:type="RegressTestStructB*"/>
           </instance-parameter>
           <parameter name="b_out"
                      direction="out"
                      caller-allocates="1"
                      transfer-ownership="none">
-            <doc xml:space="preserve">the cloned structure</doc>
+            <doc xml:space="preserve"
+                 filename="regress.c"
+                 line="1765">the cloned structure</doc>
             <type name="TestStructB" c:type="RegressTestStructB*"/>
           </parameter>
         </parameters>
       </method>
     </record>
     <record name="TestStructC" c:type="RegressTestStructC">
+      <source-position filename="regress.h" line="571"/>
       <field name="another_int" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -4218,6 +4992,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestStructD" c:type="RegressTestStructD">
+      <source-position filename="regress.h" line="590"/>
       <field name="array1" writable="1">
         <array c:type="RegressTestStructA**">
           <type name="TestStructA" c:type="RegressTestStructA*"/>
@@ -4243,6 +5018,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestStructE" c:type="RegressTestStructE">
+      <source-position filename="regress.h" line="607"/>
       <field name="some_type" writable="1">
         <type name="GType" c:type="GType"/>
       </field>
@@ -4282,6 +5058,7 @@ the introspection client langage.</doc>
       </field>
     </union>
     <record name="TestStructF" c:type="RegressTestStructF">
+      <source-position filename="regress.h" line="619"/>
       <field name="ref_count" writable="1">
         <type name="gint" c:type="volatile gint"/>
       </field>
@@ -4305,6 +5082,7 @@ the introspection client langage.</doc>
       </field>
     </record>
     <record name="TestStructFixedArray" c:type="RegressTestStructFixedArray">
+      <source-position filename="regress.h" line="1406"/>
       <field name="just_int" writable="1">
         <type name="gint" c:type="gint"/>
       </field>
@@ -4314,6 +5092,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="1410"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4332,14 +5111,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="980"/>
       <implements name="TestInterface"/>
       <constructor name="new" c:identifier="regress_test_sub_obj_new">
+        <source-position filename="regress.h" line="987"/>
         <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="993"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -4350,6 +5132,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="990"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4378,6 +5161,7 @@ the introspection client langage.</doc>
     <record name="TestSubObjClass"
             c:type="RegressTestSubObjClass"
             glib:is-gtype-struct-for="TestSubObj">
+      <source-position filename="regress.h" line="980"/>
       <field name="parent_class">
         <type name="TestObjClass" c:type="RegressTestObjClass"/>
       </field>
@@ -4389,13 +5173,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="1226"/>
       <constructor name="new" c:identifier="regress_test_wi_802_1x_new">
+        <source-position filename="regress.h" line="1233"/>
         <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="1242"/>
         <return-value transfer-ownership="none">
           <type name="gint" c:type="int"/>
         </return-value>
@@ -4407,6 +5194,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="1236"/>
         <return-value transfer-ownership="none">
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
@@ -4418,6 +5206,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="1239"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -4443,6 +5232,7 @@ the introspection client langage.</doc>
     <record name="TestWi8021xClass"
             c:type="RegressTestWi8021xClass"
             glib:is-gtype-struct-for="TestWi8021x">
+      <source-position filename="regress.h" line="1226"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
@@ -4450,10 +5240,12 @@ the introspection client langage.</doc>
     <constant name="UTF8_CONSTANT"
               value="const ♥ utf8"
               c:type="REGRESS_UTF8_CONSTANT">
+      <source-position filename="regress.h" line="1421"/>
       <type name="utf8" c:type="gchar*"/>
     </constant>
     <function name="aliased_caller_alloc"
               c:identifier="regress_aliased_caller_alloc">
+      <source-position filename="regress.h" line="1383"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4468,29 +5260,39 @@ the introspection client langage.</doc>
     </function>
     <function name="annotation_attribute_func"
               c:identifier="regress_annotation_attribute_func">
+      <source-position filename="annotation.h" line="229"/>
       <return-value transfer-ownership="none">
         <attribute name="some.other.annotation" value="value2"/>
         <attribute name="yet.another.annotation" value="another_value"/>
-        <doc xml:space="preserve">The return value.</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="764">The return value.</doc>
         <type name="gint" c:type="gint"/>
       </return-value>
       <parameters>
         <parameter name="object" transfer-ownership="none">
-          <doc xml:space="preserve">A #RegressAnnotationObject.</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="761">A #RegressAnnotationObject.</doc>
           <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
         </parameter>
         <parameter name="data" transfer-ownership="none">
           <attribute name="some.annotation" value="value"/>
           <attribute name="another.annotation" value="blahvalue"/>
-          <doc xml:space="preserve">Some data.</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="762">Some data.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
       </parameters>
     </function>
     <function name="annotation_custom_destroy"
               c:identifier="regress_annotation_custom_destroy">
-      <doc xml:space="preserve">Test messing up the heuristic of closure/destroy-notification
+      <doc xml:space="preserve"
+           filename="annotation.c"
+           line="715">Test messing up the heuristic of closure/destroy-notification
 detection, and fixing it via annotations.</doc>
+      <source-position filename="annotation.h" line="217"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4500,7 +5302,9 @@ detection, and fixing it via annotations.</doc>
                    scope="notified"
                    closure="2"
                    destroy="1">
-          <doc xml:space="preserve">Destroy notification</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="717">Destroy notification</doc>
           <type name="AnnotationCallback" c:type="RegressAnnotationCallback"/>
         </parameter>
         <parameter name="destroy"
@@ -4520,12 +5324,16 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_get_source_file"
               c:identifier="regress_annotation_get_source_file">
+      <source-position filename="annotation.h" line="222"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">Source file</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="732">Source file</doc>
         <type name="filename" c:type="char*"/>
       </return-value>
     </function>
     <function name="annotation_init" c:identifier="regress_annotation_init">
+      <source-position filename="annotation.h" line="192"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4534,14 +5342,18 @@ detection, and fixing it via annotations.</doc>
                    direction="inout"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">The number of args.</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="646">The number of args.</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
         <parameter name="argv"
                    direction="inout"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">The arguments.</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="647">The arguments.</doc>
           <array length="0" zero-terminated="0" c:type="char***">
             <type name="utf8" c:type="char**"/>
           </array>
@@ -4550,24 +5362,30 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_invalid_regress_annotation"
               c:identifier="regress_annotation_invalid_regress_annotation">
+      <source-position filename="annotation.h" line="234"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="foo" transfer-ownership="none">
-          <doc xml:space="preserve">some text (e.g. example) or else</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="775">some text (e.g. example) or else</doc>
           <type name="gint" c:type="int"/>
         </parameter>
       </parameters>
     </function>
     <function name="annotation_ptr_array"
               c:identifier="regress_annotation_ptr_array">
+      <source-position filename="annotation.h" line="263"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="array" transfer-ownership="none">
-          <doc xml:space="preserve">the array</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="752">the array</doc>
           <array name="GLib.PtrArray" c:type="GPtrArray*">
             <type name="GObject.Value"/>
           </array>
@@ -4576,8 +5394,11 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_return_array"
               c:identifier="regress_annotation_return_array">
+      <source-position filename="annotation.h" line="196"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">The return value</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="659">The return value</doc>
         <array length="0" zero-terminated="0" c:type="char**">
           <type name="utf8"/>
         </array>
@@ -4587,39 +5408,51 @@ detection, and fixing it via annotations.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">Number of return values</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="657">Number of return values</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
       </parameters>
     </function>
     <function name="annotation_return_filename"
               c:identifier="regress_annotation_return_filename">
+      <source-position filename="annotation.h" line="275"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">An annotated filename</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="814">An annotated filename</doc>
         <type name="filename" c:type="gchar*"/>
       </return-value>
     </function>
     <function name="annotation_set_source_file"
               c:identifier="regress_annotation_set_source_file">
+      <source-position filename="annotation.h" line="225"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="fname" transfer-ownership="none">
-          <doc xml:space="preserve">Source file</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="742">Source file</doc>
           <type name="filename" c:type="const char*"/>
         </parameter>
       </parameters>
     </function>
     <function name="annotation_space_after_comment_bug631690"
               c:identifier="regress_annotation_space_after_comment_bug631690">
-      <doc xml:space="preserve">Explicitly test having a space after the ** here.</doc>
+      <doc xml:space="preserve"
+           filename="annotation.c"
+           line="801">Explicitly test having a space after the ** here.</doc>
+      <source-position filename="annotation.h" line="271"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
     </function>
     <function name="annotation_string_array_length"
               c:identifier="regress_annotation_string_array_length">
+      <source-position filename="annotation.h" line="209"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4636,8 +5469,11 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_string_zero_terminated"
               c:identifier="regress_annotation_string_zero_terminated">
+      <source-position filename="annotation.h" line="202"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">The return value</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="670">The return value</doc>
         <array c:type="char**">
           <type name="utf8"/>
         </array>
@@ -4645,6 +5481,7 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_string_zero_terminated_out"
               c:identifier="regress_annotation_string_zero_terminated_out">
+      <source-position filename="annotation.h" line="205"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4661,21 +5498,31 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="annotation_test_parsing_bug630862"
               c:identifier="regress_annotation_test_parsing_bug630862">
-      <doc xml:space="preserve">See https://bugzilla.gnome.org/show_bug.cgi?id=630862</doc>
-      <return-value transfer-ownership="none">
-        <doc xml:space="preserve">An object, note the colon:in here</doc>
+      <doc xml:space="preserve"
+           filename="annotation.c"
+           line="787">See https://bugzilla.gnome.org/show_bug.cgi?id=630862</doc>
+      <source-position filename="annotation.h" line="267"/>
+      <return-value transfer-ownership="none">
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="792">An object, note the colon:in here</doc>
         <type name="GObject.Object" c:type="GObject*"/>
       </return-value>
     </function>
     <function name="annotation_transfer_floating"
               c:identifier="regress_annotation_transfer_floating">
+      <source-position filename="annotation.h" line="279"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">A floating object</doc>
+        <doc xml:space="preserve"
+             filename="annotation.c"
+             line="826">A floating object</doc>
         <type name="GObject.Object" c:type="GObject*"/>
       </return-value>
       <parameters>
         <parameter name="object" transfer-ownership="none">
-          <doc xml:space="preserve">an object</doc>
+          <doc xml:space="preserve"
+               filename="annotation.c"
+               line="824">an object</doc>
           <type name="GObject.Object" c:type="GObject*"/>
         </parameter>
       </parameters>
@@ -4683,6 +5530,7 @@ detection, and fixing it via annotations.</doc>
     <function name="annotation_versioned"
               c:identifier="regress_annotation_versioned"
               version="0.6">
+      <source-position filename="annotation.h" line="199"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4695,6 +5543,7 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="foo_async_ready_callback"
               c:identifier="regress_foo_async_ready_callback">
+      <source-position filename="foo.h" line="496"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4723,6 +5572,7 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="foo_destroy_notify_callback"
               c:identifier="regress_foo_destroy_notify_callback">
+      <source-position filename="foo.h" line="501"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4748,6 +5598,7 @@ detection, and fixing it via annotations.</doc>
     <function name="foo_enum_type_method"
               c:identifier="regress_foo_enum_type_method"
               moved-to="FooEnumType.method">
+      <source-position filename="foo.h" line="236"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -4760,6 +5611,7 @@ detection, and fixing it via annotations.</doc>
     <function name="foo_enum_type_returnv"
               c:identifier="regress_foo_enum_type_returnv"
               moved-to="FooEnumType.returnv">
+      <source-position filename="foo.h" line="240"/>
       <return-value transfer-ownership="none">
         <type name="FooEnumType" c:type="RegressFooEnumType"/>
       </return-value>
@@ -4777,6 +5629,7 @@ detection, and fixing it via annotations.</doc>
       </return-value>
     </function>
     <function name="foo_init" c:identifier="regress_foo_init">
+      <source-position filename="foo.h" line="125"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="gint"/>
       </return-value>
@@ -4784,6 +5637,7 @@ detection, and fixing it via annotations.</doc>
     <function name="foo_interface_static_method"
               c:identifier="regress_foo_interface_static_method"
               moved-to="FooInterface.static_method">
+      <source-position filename="foo.h" line="73"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4795,6 +5649,7 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="foo_method_external_references"
               c:identifier="regress_foo_method_external_references">
+      <source-position filename="foo.h" line="346"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4815,8 +5670,11 @@ detection, and fixing it via annotations.</doc>
     </function>
     <function name="foo_not_a_constructor_new"
               c:identifier="regress_foo_not_a_constructor_new">
-      <doc xml:space="preserve">This should be scanned as a top-level function, and shouldn't cause
+      <doc xml:space="preserve"
+           filename="foo.c"
+           line="789">This should be scanned as a top-level function, and shouldn't cause
 a "Can't find matching type for constructor" warning.</doc>
+      <source-position filename="foo.h" line="221"/>
       <return-value transfer-ownership="none">
         <type name="FooObject" c:type="RegressFooObject*"/>
       </return-value>
@@ -4825,8 +5683,11 @@ a "Can't find matching type for constructor" warning.</doc>
               c:identifier="regress_foo_rectangle_new"
               moved-to="FooRectangle.new"
               introspectable="0">
-      <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
+      <doc xml:space="preserve"
+           filename="foo.c"
+           line="537">This is a C convenience constructor; we have to (skip)
 it because it's not a boxed type.</doc>
+      <source-position filename="foo.h" line="357"/>
       <return-value>
         <type name="FooRectangle" c:type="RegressFooRectangle*"/>
       </return-value>
@@ -4848,14 +5709,19 @@ it because it's not a boxed type.</doc>
     <function name="foo_skip_me"
               c:identifier="regress_foo_skip_me"
               introspectable="0">
-      <doc xml:space="preserve">Does something that's only interesting from C and should not be
+      <doc xml:space="preserve"
+           filename="foo.c"
+           line="716">Does something that's only interesting from C and should not be
 exposed to language bindings.</doc>
+      <source-position filename="foo.h" line="556"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="fs" transfer-ownership="none">
-          <doc xml:space="preserve">a #RegressFooSkippable</doc>
+          <doc xml:space="preserve"
+               filename="foo.c"
+               line="718">a #RegressFooSkippable</doc>
           <type name="FooSkippable" c:type="RegressFooSkippable"/>
         </parameter>
       </parameters>
@@ -4863,6 +5729,7 @@ exposed to language bindings.</doc>
     <function name="foo_some_variant"
               c:identifier="regress_foo_some_variant"
               introspectable="0">
+      <source-position filename="foo.h" line="539"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4878,6 +5745,7 @@ exposed to language bindings.</doc>
     <function name="foo_some_variant_ptr"
               c:identifier="regress_foo_some_variant_ptr"
               introspectable="0">
+      <source-position filename="foo.h" line="542"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4891,6 +5759,7 @@ exposed to language bindings.</doc>
       </parameters>
     </function>
     <function name="foo_test_array" c:identifier="regress_foo_test_array">
+      <source-position filename="foo.h" line="467"/>
       <return-value transfer-ownership="container">
         <array name="GLib.Array" c:type="GArray*">
           <type name="utf8"/>
@@ -4899,6 +5768,7 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_const_char_param"
               c:identifier="regress_foo_test_const_char_param">
+      <source-position filename="foo.h" line="477"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4910,12 +5780,14 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_const_char_retval"
               c:identifier="regress_foo_test_const_char_retval">
+      <source-position filename="foo.h" line="471"/>
       <return-value transfer-ownership="none">
         <type name="utf8" c:type="const char*"/>
       </return-value>
     </function>
     <function name="foo_test_const_struct_param"
               c:identifier="regress_foo_test_const_struct_param">
+      <source-position filename="foo.h" line="480"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4927,12 +5799,14 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_const_struct_retval"
               c:identifier="regress_foo_test_const_struct_retval">
+      <source-position filename="foo.h" line="474"/>
       <return-value transfer-ownership="none">
         <type name="FooStruct" c:type="const RegressFooStruct*"/>
       </return-value>
     </function>
     <function name="foo_test_string_array"
               c:identifier="regress_foo_test_string_array">
+      <source-position filename="foo.h" line="459"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4946,6 +5820,7 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_string_array_with_g"
               c:identifier="regress_foo_test_string_array_with_g">
+      <source-position filename="foo.h" line="463"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4959,6 +5834,7 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_unsigned_qualifier"
               c:identifier="regress_foo_test_unsigned_qualifier">
+      <source-position filename="foo.h" line="452"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4970,6 +5846,7 @@ exposed to language bindings.</doc>
     </function>
     <function name="foo_test_unsigned_type"
               c:identifier="regress_foo_test_unsigned_type">
+      <source-position filename="foo.h" line="455"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4982,6 +5859,7 @@ exposed to language bindings.</doc>
     <function name="foo_test_varargs_callback"
               c:identifier="regress_foo_test_varargs_callback"
               introspectable="0">
+      <source-position filename="foo.h" line="485"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -4997,6 +5875,7 @@ exposed to language bindings.</doc>
     <function name="foo_test_varargs_callback2"
               c:identifier="regress_foo_test_varargs_callback2"
               introspectable="0">
+      <source-position filename="foo.h" line="488"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5009,6 +5888,7 @@ exposed to language bindings.</doc>
     <function name="foo_test_varargs_callback3"
               c:identifier="regress_foo_test_varargs_callback3"
               introspectable="0">
+      <source-position filename="foo.h" line="491"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5022,6 +5902,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="943"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5030,13 +5911,16 @@ exposed to language bindings.</doc>
                    transfer-ownership="none"
                    nullable="1"
                    allow-none="1">
-          <doc xml:space="preserve">A #RegressTestObj</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3147">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="948"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5045,19 +5929,25 @@ exposed to language bindings.</doc>
                    transfer-ownership="none"
                    nullable="1"
                    allow-none="1">
-          <doc xml:space="preserve">A #RegressTestObj</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3167">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="1496"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">A new variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="4487">A new variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="global_get_flags_out"
               c:identifier="regress_global_get_flags_out">
+      <source-position filename="regress.h" line="442"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5066,25 +5956,34 @@ exposed to language bindings.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">A flags value</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="1624">A flags value</doc>
           <type name="TestFlags" c:type="RegressTestFlags*"/>
         </parameter>
       </parameters>
     </function>
     <function name="has_parameter_named_attrs"
               c:identifier="regress_has_parameter_named_attrs">
-      <doc xml:space="preserve">This test case mirrors GnomeKeyringPasswordSchema from
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="4447">This test case mirrors GnomeKeyringPasswordSchema from
 libgnome-keyring.</doc>
+      <source-position filename="regress.h" line="1436"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="foo" transfer-ownership="none">
-          <doc xml:space="preserve">some int</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="4449">some int</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="attributes" transfer-ownership="none">
-          <doc xml:space="preserve">list of attributes</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="4450">list of attributes</doc>
           <array zero-terminated="0" c:type="gpointer" fixed-size="32">
             <type name="guint32" c:type="gpointer"/>
           </array>
@@ -5093,6 +5992,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="introspectable_via_alias"
               c:identifier="regress_introspectable_via_alias">
+      <source-position filename="regress.h" line="1361"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5105,6 +6005,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="1372"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5117,6 +6018,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="1332"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5134,6 +6036,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="set_abort_on_error"
               c:identifier="regress_set_abort_on_error">
+      <source-position filename="regress.h" line="17"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5152,6 +6055,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_callback"
               c:identifier="regress_test_array_callback">
+      <source-position filename="regress.h" line="1127"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5163,6 +6067,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="861"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5171,7 +6076,9 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">An array of #RegressTestObj</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3209">An array of #RegressTestObj</doc>
           <array zero-terminated="0" c:type="RegressTestObj***" fixed-size="2">
             <type name="TestObj" c:type="RegressTestObj**"/>
           </array>
@@ -5180,13 +6087,18 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_fixed_size_int_in"
               c:identifier="regress_test_array_fixed_size_int_in">
+      <source-position filename="regress.h" line="181"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">the sum of the items in @ints</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="828">the sum of the items in @ints</doc>
         <type name="gint" c:type="int"/>
       </return-value>
       <parameters>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">a list of 5 integers</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="826">a list of 5 integers</doc>
           <array zero-terminated="0" c:type="int*" fixed-size="5">
             <type name="gint" c:type="int"/>
           </array>
@@ -5195,6 +6107,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_fixed_size_int_out"
               c:identifier="regress_test_array_fixed_size_int_out">
+      <source-position filename="regress.h" line="184"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5203,7 +6116,9 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a list of 5 integers ranging from 0 to 4</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="841">a list of 5 integers ranging from 0 to 4</doc>
           <array zero-terminated="0" c:type="int**" fixed-size="5">
             <type name="gint" c:type="int*"/>
           </array>
@@ -5212,8 +6127,11 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_fixed_size_int_return"
               c:identifier="regress_test_array_fixed_size_int_return">
+      <source-position filename="regress.h" line="187"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">a list of 5 integers ranging from 0 to 4</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="855">a list of 5 integers ranging from 0 to 4</doc>
         <array zero-terminated="0" c:type="int*" fixed-size="5">
           <type name="gint" c:type="int"/>
         </array>
@@ -5221,6 +6139,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_gint16_in"
               c:identifier="regress_test_array_gint16_in">
+      <source-position filename="regress.h" line="157"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5229,7 +6148,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">List of ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="690">List of ints</doc>
           <array length="0" zero-terminated="0" c:type="gint16*">
             <type name="gint16" c:type="gint16"/>
           </array>
@@ -5238,6 +6159,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_gint32_in"
               c:identifier="regress_test_array_gint32_in">
+      <source-position filename="regress.h" line="160"/>
       <return-value transfer-ownership="none">
         <type name="gint32" c:type="gint32"/>
       </return-value>
@@ -5246,7 +6168,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">List of ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="704">List of ints</doc>
           <array length="0" zero-terminated="0" c:type="gint32*">
             <type name="gint32" c:type="gint32"/>
           </array>
@@ -5255,6 +6179,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_gint64_in"
               c:identifier="regress_test_array_gint64_in">
+      <source-position filename="regress.h" line="163"/>
       <return-value transfer-ownership="none">
         <type name="gint64" c:type="gint64"/>
       </return-value>
@@ -5263,7 +6188,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">List of ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="719">List of ints</doc>
           <array length="0" zero-terminated="0" c:type="gint64*">
             <type name="gint64" c:type="gint64"/>
           </array>
@@ -5272,6 +6199,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_gint8_in"
               c:identifier="regress_test_array_gint8_in">
+      <source-position filename="regress.h" line="154"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5280,7 +6208,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">List of ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="676">List of ints</doc>
           <array length="0" zero-terminated="0" c:type="gint8*">
             <type name="gint8" c:type="gint8"/>
           </array>
@@ -5289,8 +6219,11 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_gtype_in"
               c:identifier="regress_test_array_gtype_in">
+      <source-position filename="regress.h" line="166"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">string representation of provided types</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="754">string representation of provided types</doc>
         <type name="utf8" c:type="char*"/>
       </return-value>
       <parameters>
@@ -5298,7 +6231,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="types" transfer-ownership="none">
-          <doc xml:space="preserve">List of types</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="752">List of types</doc>
           <array length="0" zero-terminated="0" c:type="GType*">
             <type name="GType" c:type="GType"/>
           </array>
@@ -5307,6 +6242,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_inout_callback"
               c:identifier="regress_test_array_inout_callback">
+      <source-position filename="regress.h" line="1130"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5319,8 +6255,11 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_int_full_out"
               c:identifier="regress_test_array_int_full_out">
+      <source-position filename="regress.h" line="191"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">a new array of integers.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="887">a new array of integers.</doc>
         <array length="0" zero-terminated="0" c:type="int*">
           <type name="gint" c:type="int"/>
         </array>
@@ -5330,13 +6269,16 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">length of the returned array.</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="885">length of the returned array.</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_array_int_in"
               c:identifier="regress_test_array_int_in">
+      <source-position filename="regress.h" line="145"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5345,7 +6287,9 @@ libgnome-keyring.</doc>
           <type name="gint" c:type="int"/>
         </parameter>
         <parameter name="ints" transfer-ownership="none">
-          <doc xml:space="preserve">List of ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="624">List of ints</doc>
           <array length="0" zero-terminated="0" c:type="int*">
             <type name="gint" c:type="int"/>
           </array>
@@ -5354,6 +6298,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_int_inout"
               c:identifier="regress_test_array_int_inout">
+      <source-position filename="regress.h" line="151"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5362,14 +6307,18 @@ libgnome-keyring.</doc>
                    direction="inout"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">the length of @ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="652">the length of @ints</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
         <parameter name="ints"
                    direction="inout"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a list of integers whose items will be increased by 1, except the first 
that will be dropped</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="653">a list of integers whose items will be increased by 1, except the first that will 
be dropped</doc>
           <array length="0" zero-terminated="0" c:type="int**">
             <type name="gint" c:type="int*"/>
           </array>
@@ -5378,8 +6327,11 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_int_none_out"
               c:identifier="regress_test_array_int_none_out">
+      <source-position filename="regress.h" line="194"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">a static array of integers.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="904">a static array of integers.</doc>
         <array length="0" zero-terminated="0" c:type="int*">
           <type name="gint" c:type="int"/>
         </array>
@@ -5389,13 +6341,16 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">length of the returned array.</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="902">length of the returned array.</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_array_int_null_in"
               c:identifier="regress_test_array_int_null_in">
+      <source-position filename="regress.h" line="197"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5409,13 +6364,16 @@ libgnome-keyring.</doc>
           </array>
         </parameter>
         <parameter name="len" transfer-ownership="none">
-          <doc xml:space="preserve">length</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="917">length</doc>
           <type name="gint" c:type="int"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_array_int_null_out"
               c:identifier="regress_test_array_int_null_out">
+      <source-position filename="regress.h" line="200"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5434,13 +6392,16 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">length</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="928">length</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_array_int_out"
               c:identifier="regress_test_array_int_out">
+      <source-position filename="regress.h" line="148"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5449,14 +6410,18 @@ libgnome-keyring.</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">the length of @ints</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="637">the length of @ints</doc>
           <type name="gint" c:type="int*"/>
         </parameter>
         <parameter name="ints"
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a list of 5 integers, from 0 to 4 in consecutive order</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="638">a list of 5 integers, from 0 to 4 in consecutive order</doc>
           <array length="0" zero-terminated="0" c:type="int**">
             <type name="gint" c:type="int*"/>
           </array>
@@ -5465,7 +6430,10 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_array_struct_out"
               c:identifier="regress_test_array_struct_out">
-      <doc xml:space="preserve">This is similar to gdk_keymap_get_entries_for_keyval().</doc>
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="1745">This is similar to gdk_keymap_get_entries_for_keyval().</doc>
+      <source-position filename="regress.h" line="554"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5488,6 +6456,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_async_ready_callback"
               c:identifier="regress_test_async_ready_callback">
+      <source-position filename="regress.h" line="1160"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5502,6 +6471,7 @@ libgnome-keyring.</doc>
       </parameters>
     </function>
     <function name="test_boolean" c:identifier="regress_test_boolean">
+      <source-position filename="regress.h" line="28"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -5513,6 +6483,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_boolean_false"
               c:identifier="regress_test_boolean_false">
+      <source-position filename="regress.h" line="34"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -5524,6 +6495,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_boolean_true"
               c:identifier="regress_test_boolean_true">
+      <source-position filename="regress.h" line="31"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -5535,6 +6507,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_boxeds_not_a_method"
               c:identifier="regress_test_boxeds_not_a_method">
+      <source-position filename="regress.h" line="700"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5546,18 +6519,21 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_boxeds_not_a_static"
               c:identifier="regress_test_boxeds_not_a_static">
+      <source-position filename="regress.h" line="703"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
     </function>
     <function name="test_cairo_context_full_return"
               c:identifier="regress_test_cairo_context_full_return">
+      <source-position filename="regress.h" line="325"/>
       <return-value transfer-ownership="full">
         <type name="cairo.Context" c:type="cairo_t*"/>
       </return-value>
     </function>
     <function name="test_cairo_context_none_in"
               c:identifier="regress_test_cairo_context_none_in">
+      <source-position filename="regress.h" line="328"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5569,6 +6545,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_cairo_surface_full_out"
               c:identifier="regress_test_cairo_surface_full_out">
+      <source-position filename="regress.h" line="341"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5583,12 +6560,14 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_cairo_surface_full_return"
               c:identifier="regress_test_cairo_surface_full_return">
+      <source-position filename="regress.h" line="335"/>
       <return-value transfer-ownership="full">
         <type name="cairo.Surface" c:type="cairo_surface_t*"/>
       </return-value>
     </function>
     <function name="test_cairo_surface_none_in"
               c:identifier="regress_test_cairo_surface_none_in">
+      <source-position filename="regress.h" line="338"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5600,11 +6579,13 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_cairo_surface_none_return"
               c:identifier="regress_test_cairo_surface_none_return">
+      <source-position filename="regress.h" line="332"/>
       <return-value transfer-ownership="none">
         <type name="cairo.Surface" c:type="cairo_surface_t*"/>
       </return-value>
     </function>
     <function name="test_callback" c:identifier="regress_test_callback">
+      <source-position filename="regress.h" line="1121"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5620,6 +6601,7 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_callback_async"
               c:identifier="regress_test_callback_async">
+      <source-position filename="regress.h" line="1153"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5641,8 +6623,11 @@ libgnome-keyring.</doc>
     </function>
     <function name="test_callback_destroy_notify"
               c:identifier="regress_test_callback_destroy_notify">
-      <doc xml:space="preserve">Notified - callback persists until a DestroyNotify delegate
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="3802">Notified - callback persists until a DestroyNotify delegate
 is invoked.</doc>
+      <source-position filename="regress.h" line="1140"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5668,8 +6653,11 @@ is invoked.</doc>
     </function>
     <function name="test_callback_destroy_notify_no_user_data"
               c:identifier="regress_test_callback_destroy_notify_no_user_data">
-      <doc xml:space="preserve">Adds a scope notified callback with no user data. This can invoke an error
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="3829">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="1145"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5688,6 +6676,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="1137"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5700,24 +6689,33 @@ 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="1156"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
     </function>
     <function name="test_callback_thaw_notifications"
               c:identifier="regress_test_callback_thaw_notifications">
-      <doc xml:space="preserve">Invokes all callbacks installed by #test_callback_destroy_notify(),
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="3843">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="1149"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">Sum of the return values of the invoked callbacks.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="3850">Sum of the return values of the invoked callbacks.</doc>
         <type name="gint" c:type="int"/>
       </return-value>
     </function>
     <function name="test_callback_user_data"
               c:identifier="regress_test_callback_user_data">
-      <doc xml:space="preserve">Call - callback parameter persists for the duration of the method
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="3771">Call - callback parameter persists for the duration of the method
 call and can be released on return.</doc>
+      <source-position filename="regress.h" line="1133"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5735,6 +6733,7 @@ call and can be released on return.</doc>
       </parameters>
     </function>
     <function name="test_closure" c:identifier="regress_test_closure">
+      <source-position filename="regress.h" line="307"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5746,6 +6745,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_closure_one_arg"
               c:identifier="regress_test_closure_one_arg">
+      <source-position filename="regress.h" line="310"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -5760,26 +6760,34 @@ call and can be released on return.</doc>
     </function>
     <function name="test_closure_variant"
               c:identifier="regress_test_closure_variant">
+      <source-position filename="regress.h" line="313"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">the return value of @closure</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="250">the return value of @closure</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
       <parameters>
         <parameter name="closure" transfer-ownership="none">
-          <doc xml:space="preserve">GClosure which takes one GVariant and returns a GVariant</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="247">GClosure which takes one GVariant and returns a GVariant</doc>
           <type name="GObject.Closure" c:type="GClosure*"/>
         </parameter>
         <parameter name="arg"
                    transfer-ownership="none"
                    nullable="1"
                    allow-none="1">
-          <doc xml:space="preserve">a GVariant passed as argument to @closure</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="248">a GVariant passed as argument to @closure</doc>
           <type name="GLib.Variant" c:type="GVariant*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_create_fundamental_hidden_class_instance"
               c:identifier="regress_test_create_fundamental_hidden_class_instance">
+      <source-position filename="regress.h" line="1069"/>
       <return-value transfer-ownership="full">
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -5787,6 +6795,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="1299"/>
       <return-value transfer-ownership="full">
         <type name="GObject.Value" c:type="GValue*"/>
       </return-value>
@@ -5798,6 +6807,7 @@ call and can be released on return.</doc>
       </return-value>
     </function>
     <function name="test_double" c:identifier="regress_test_double">
+      <source-position filename="regress.h" line="88"/>
       <return-value transfer-ownership="none">
         <type name="gdouble" c:type="gdouble"/>
       </return-value>
@@ -5810,6 +6820,7 @@ call and can be released on return.</doc>
     <function name="test_enum_param"
               c:identifier="regress_test_enum_param"
               moved-to="TestEnum.param">
+      <source-position filename="regress.h" line="435"/>
       <return-value transfer-ownership="none">
         <type name="utf8" c:type="const gchar*"/>
       </return-value>
@@ -5828,14 +6839,18 @@ call and can be released on return.</doc>
     </function>
     <function name="test_filename_return"
               c:identifier="regress_test_filename_return">
+      <source-position filename="regress.h" line="116"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">list of strings</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="530">list of strings</doc>
         <type name="GLib.SList" c:type="GSList*">
           <type name="filename"/>
         </type>
       </return-value>
     </function>
     <function name="test_float" c:identifier="regress_test_float">
+      <source-position filename="regress.h" line="85"/>
       <return-value transfer-ownership="none">
         <type name="gfloat" c:type="gfloat"/>
       </return-value>
@@ -5847,6 +6862,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_garray_container_return"
               c:identifier="regress_test_garray_container_return">
+      <source-position filename="regress.h" line="298"/>
       <return-value transfer-ownership="container">
         <array name="GLib.PtrArray" c:type="GPtrArray*">
           <type name="utf8"/>
@@ -5855,6 +6871,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_garray_full_return"
               c:identifier="regress_test_garray_full_return">
+      <source-position filename="regress.h" line="301"/>
       <return-value transfer-ownership="full">
         <array name="GLib.PtrArray" c:type="GPtrArray*">
           <type name="utf8"/>
@@ -5863,6 +6880,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="1178"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5874,6 +6892,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_ghash_container_return"
               c:identifier="regress_test_ghash_container_return">
+      <source-position filename="regress.h" line="273"/>
       <return-value transfer-ownership="container">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5883,6 +6902,7 @@ call and can be released on return.</doc>
     </function>
     <function name="test_ghash_everything_return"
               c:identifier="regress_test_ghash_everything_return">
+      <source-position filename="regress.h" line="276"/>
       <return-value transfer-ownership="full">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5892,12 +6912,15 @@ call and can be released on return.</doc>
     </function>
     <function name="test_ghash_gvalue_in"
               c:identifier="regress_test_ghash_gvalue_in">
+      <source-position filename="regress.h" line="270"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="hash" transfer-ownership="none">
-          <doc xml:space="preserve">the hash table returned by
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="1342">the hash table returned by
 regress_test_ghash_gvalue_return().</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
@@ -5908,6 +6931,7 @@ regress_test_ghash_gvalue_return().</doc>
     </function>
     <function name="test_ghash_gvalue_return"
               c:identifier="regress_test_ghash_gvalue_return">
+      <source-position filename="regress.h" line="267"/>
       <return-value transfer-ownership="none">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5917,7 +6941,10 @@ regress_test_ghash_gvalue_return().</doc>
     </function>
     <function name="test_ghash_nested_everything_return"
               c:identifier="regress_test_ghash_nested_everything_return">
-      <doc xml:space="preserve">Specify nested parameterized types directly with the (type ) 
annotation.</doc>
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="1467">Specify nested parameterized types directly with the (type ) annotation.</doc>
+      <source-position filename="regress.h" line="291"/>
       <return-value transfer-ownership="full">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5930,8 +6957,11 @@ regress_test_ghash_gvalue_return().</doc>
     </function>
     <function name="test_ghash_nested_everything_return2"
               c:identifier="regress_test_ghash_nested_everything_return2">
-      <doc xml:space="preserve">Another way of specifying nested parameterized types: using the
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="1484">Another way of specifying nested parameterized types: using the
 element-type annotation.</doc>
+      <source-position filename="regress.h" line="294"/>
       <return-value transfer-ownership="full">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5944,6 +6974,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_nothing_in"
               c:identifier="regress_test_ghash_nothing_in">
+      <source-position filename="regress.h" line="285"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5958,6 +6989,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_nothing_in2"
               c:identifier="regress_test_ghash_nothing_in2">
+      <source-position filename="regress.h" line="288"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -5972,6 +7004,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_nothing_return"
               c:identifier="regress_test_ghash_nothing_return">
+      <source-position filename="regress.h" line="261"/>
       <return-value transfer-ownership="none">
         <type name="GLib.HashTable" c:type="const GHashTable*">
           <type name="utf8"/>
@@ -5981,6 +7014,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_nothing_return2"
               c:identifier="regress_test_ghash_nothing_return2">
+      <source-position filename="regress.h" line="264"/>
       <return-value transfer-ownership="none">
         <type name="GLib.HashTable" c:type="GHashTable*">
           <type name="utf8"/>
@@ -5990,6 +7024,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_null_in"
               c:identifier="regress_test_ghash_null_in">
+      <source-position filename="regress.h" line="279"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6007,6 +7042,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_null_out"
               c:identifier="regress_test_ghash_null_out">
+      <source-position filename="regress.h" line="282"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6026,6 +7062,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_ghash_null_return"
               c:identifier="regress_test_ghash_null_return">
+      <source-position filename="regress.h" line="258"/>
       <return-value transfer-ownership="none" nullable="1">
         <type name="GLib.HashTable" c:type="const GHashTable*">
           <type name="utf8"/>
@@ -6035,6 +7072,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_container_return"
               c:identifier="regress_test_glist_container_return">
+      <source-position filename="regress.h" line="211"/>
       <return-value transfer-ownership="container">
         <type name="GLib.List" c:type="GList*">
           <type name="utf8"/>
@@ -6043,6 +7081,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_everything_return"
               c:identifier="regress_test_glist_everything_return">
+      <source-position filename="regress.h" line="214"/>
       <return-value transfer-ownership="full">
         <type name="GLib.List" c:type="GList*">
           <type name="utf8"/>
@@ -6051,6 +7090,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_gtype_container_in"
               c:identifier="regress_test_glist_gtype_container_in">
+      <source-position filename="regress.h" line="217"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6064,6 +7104,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_nothing_in"
               c:identifier="regress_test_glist_nothing_in">
+      <source-position filename="regress.h" line="220"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6077,6 +7118,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_nothing_in2"
               c:identifier="regress_test_glist_nothing_in2">
+      <source-position filename="regress.h" line="223"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6090,6 +7132,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_nothing_return"
               c:identifier="regress_test_glist_nothing_return">
+      <source-position filename="regress.h" line="205"/>
       <return-value transfer-ownership="none">
         <type name="GLib.List" c:type="const GList*">
           <type name="utf8"/>
@@ -6098,6 +7141,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_nothing_return2"
               c:identifier="regress_test_glist_nothing_return2">
+      <source-position filename="regress.h" line="208"/>
       <return-value transfer-ownership="none">
         <type name="GLib.List" c:type="GList*">
           <type name="utf8"/>
@@ -6106,6 +7150,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_null_in"
               c:identifier="regress_test_glist_null_in">
+      <source-position filename="regress.h" line="226"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6122,6 +7167,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_glist_null_out"
               c:identifier="regress_test_glist_null_out">
+      <source-position filename="regress.h" line="229"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6140,6 +7186,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_container_return"
               c:identifier="regress_test_gslist_container_return">
+      <source-position filename="regress.h" line="239"/>
       <return-value transfer-ownership="container">
         <type name="GLib.SList" c:type="GSList*">
           <type name="utf8"/>
@@ -6148,6 +7195,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_everything_return"
               c:identifier="regress_test_gslist_everything_return">
+      <source-position filename="regress.h" line="242"/>
       <return-value transfer-ownership="full">
         <type name="GLib.SList" c:type="GSList*">
           <type name="utf8"/>
@@ -6156,6 +7204,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_nothing_in"
               c:identifier="regress_test_gslist_nothing_in">
+      <source-position filename="regress.h" line="245"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6169,6 +7218,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_nothing_in2"
               c:identifier="regress_test_gslist_nothing_in2">
+      <source-position filename="regress.h" line="248"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6182,6 +7232,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_nothing_return"
               c:identifier="regress_test_gslist_nothing_return">
+      <source-position filename="regress.h" line="233"/>
       <return-value transfer-ownership="none">
         <type name="GLib.SList" c:type="const GSList*">
           <type name="utf8"/>
@@ -6190,6 +7241,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_nothing_return2"
               c:identifier="regress_test_gslist_nothing_return2">
+      <source-position filename="regress.h" line="236"/>
       <return-value transfer-ownership="none">
         <type name="GLib.SList" c:type="GSList*">
           <type name="utf8"/>
@@ -6198,6 +7250,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_null_in"
               c:identifier="regress_test_gslist_null_in">
+      <source-position filename="regress.h" line="251"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6214,6 +7267,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_gslist_null_out"
               c:identifier="regress_test_gslist_null_out">
+      <source-position filename="regress.h" line="254"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6231,6 +7285,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_gtype" c:identifier="regress_test_gtype">
+      <source-position filename="regress.h" line="97"/>
       <return-value transfer-ownership="none">
         <type name="GType" c:type="GType"/>
       </return-value>
@@ -6241,44 +7296,62 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_gvariant_as" c:identifier="regress_test_gvariant_as">
+      <source-position filename="regress.h" line="362"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">New variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="453">New variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="test_gvariant_asv"
               c:identifier="regress_test_gvariant_asv">
+      <source-position filename="regress.h" line="356"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">New variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="424">New variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="test_gvariant_i" c:identifier="regress_test_gvariant_i">
+      <source-position filename="regress.h" line="350"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">New variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="402">New variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="test_gvariant_s" c:identifier="regress_test_gvariant_s">
+      <source-position filename="regress.h" line="353"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">New variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="413">New variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="test_gvariant_v" c:identifier="regress_test_gvariant_v">
+      <source-position filename="regress.h" line="359"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">New variant</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="442">New variant</doc>
         <type name="GLib.Variant" c:type="GVariant*"/>
       </return-value>
     </function>
     <function name="test_hash_table_callback"
               c:identifier="regress_test_hash_table_callback">
+      <source-position filename="regress.h" line="1175"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="data" transfer-ownership="none">
-          <doc xml:space="preserve">GHashTable that gets passed to callback</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="3973">GHashTable that gets passed to callback</doc>
           <type name="GLib.HashTable" c:type="GHashTable*">
             <type name="utf8"/>
             <type name="gint"/>
@@ -6291,6 +7364,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_int" c:identifier="regress_test_int">
+      <source-position filename="regress.h" line="67"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="gint"/>
       </return-value>
@@ -6301,6 +7375,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_int16" c:identifier="regress_test_int16">
+      <source-position filename="regress.h" line="43"/>
       <return-value transfer-ownership="none">
         <type name="gint16" c:type="gint16"/>
       </return-value>
@@ -6311,6 +7386,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_int32" c:identifier="regress_test_int32">
+      <source-position filename="regress.h" line="49"/>
       <return-value transfer-ownership="none">
         <type name="gint32" c:type="gint32"/>
       </return-value>
@@ -6321,6 +7397,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_int64" c:identifier="regress_test_int64">
+      <source-position filename="regress.h" line="55"/>
       <return-value transfer-ownership="none">
         <type name="gint64" c:type="gint64"/>
       </return-value>
@@ -6331,6 +7408,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_int8" c:identifier="regress_test_int8">
+      <source-position filename="regress.h" line="37"/>
       <return-value transfer-ownership="none">
         <type name="gint8" c:type="gint8"/>
       </return-value>
@@ -6342,6 +7420,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_int_out_utf8"
               c:identifier="regress_test_int_out_utf8">
+      <source-position filename="regress.h" line="126"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6359,6 +7438,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_int_value_arg"
               c:identifier="regress_test_int_value_arg">
+      <source-position filename="regress.h" line="317"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -6369,6 +7449,7 @@ element-type annotation.</doc>
       </parameters>
     </function>
     <function name="test_long" c:identifier="regress_test_long">
+      <source-position filename="regress.h" line="73"/>
       <return-value transfer-ownership="none">
         <type name="glong" c:type="glong"/>
       </return-value>
@@ -6380,6 +7461,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_multi_callback"
               c:identifier="regress_test_multi_callback">
+      <source-position filename="regress.h" line="1124"/>
       <return-value transfer-ownership="none">
         <type name="gint" c:type="int"/>
       </return-value>
@@ -6395,6 +7477,7 @@ element-type annotation.</doc>
     </function>
     <function name="test_multi_double_args"
               c:identifier="regress_test_multi_double_args">
+      <source-position filename="regress.h" line="131"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6418,20 +7501,25 @@ element-type annotation.</doc>
     </function>
     <function name="test_multiline_doc_comments"
               c:identifier="regress_test_multiline_doc_comments">
-      <doc xml:space="preserve">This is a function.
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="4355">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="1313"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
     </function>
     <function name="test_nested_parameter"
               c:identifier="regress_test_nested_parameter">
-      <doc xml:space="preserve">&lt;informaltable&gt;
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="4371">&lt;informaltable&gt;
   &lt;tgroup cols="3"&gt;
     &lt;thead&gt;
       &lt;row&gt;
@@ -6459,18 +7547,22 @@ 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="1316"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="a" transfer-ownership="none">
-          <doc xml:space="preserve">An integer</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="4373">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="1118"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6486,6 +7578,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="1181"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6497,12 +7590,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="1305"/>
       <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="1184"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6515,17 +7610,20 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     </function>
     <function name="test_return_allow_none"
               c:identifier="regress_test_return_allow_none">
+      <source-position filename="regress.h" line="21"/>
       <return-value transfer-ownership="full" nullable="1">
         <type name="utf8" c:type="char*"/>
       </return-value>
     </function>
     <function name="test_return_nullable"
               c:identifier="regress_test_return_nullable">
+      <source-position filename="regress.h" line="24"/>
       <return-value transfer-ownership="full" nullable="1">
         <type name="utf8" c:type="char*"/>
       </return-value>
     </function>
     <function name="test_short" c:identifier="regress_test_short">
+      <source-position filename="regress.h" line="61"/>
       <return-value transfer-ownership="none">
         <type name="gshort" c:type="gshort"/>
       </return-value>
@@ -6538,12 +7636,14 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     <function name="test_simple_boxed_a_const_return"
               c:identifier="regress_test_simple_boxed_a_const_return"
               moved-to="TestSimpleBoxedA.const_return">
+      <source-position filename="regress.h" line="645"/>
       <return-value transfer-ownership="none">
         <type name="TestSimpleBoxedA" c:type="const RegressTestSimpleBoxedA*"/>
       </return-value>
     </function>
     <function name="test_simple_callback"
               c:identifier="regress_test_simple_callback">
+      <source-position filename="regress.h" line="1115"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6558,6 +7658,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
       </parameters>
     </function>
     <function name="test_size" c:identifier="regress_test_size">
+      <source-position filename="regress.h" line="82"/>
       <return-value transfer-ownership="none">
         <type name="gsize" c:type="gsize"/>
       </return-value>
@@ -6570,19 +7671,25 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
     <function name="test_skip_unannotated_callback"
               c:identifier="regress_test_skip_unannotated_callback"
               introspectable="0">
-      <doc xml:space="preserve">Should not emit a warning:
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="4023">Should not emit a warning:
 https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
+      <source-position filename="regress.h" line="1188"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
         <parameter name="callback" transfer-ownership="none">
-          <doc xml:space="preserve">No annotation here</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="4025">No annotation here</doc>
           <type name="TestCallback" c:type="RegressTestCallback"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_ssize" c:identifier="regress_test_ssize">
+      <source-position filename="regress.h" line="79"/>
       <return-value transfer-ownership="none">
         <type name="gssize" c:type="gssize"/>
       </return-value>
@@ -6595,6 +7702,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     <function name="test_struct_a_parse"
               c:identifier="regress_test_struct_a_parse"
               moved-to="TestStructA.parse">
+      <source-position filename="regress.h" line="551"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6603,16 +7711,21 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
                    direction="out"
                    caller-allocates="1"
                    transfer-ownership="none">
-          <doc xml:space="preserve">the structure that is to be filled</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="1735">the structure that is to be filled</doc>
           <type name="TestStructA" c:type="RegressTestStructA*"/>
         </parameter>
         <parameter name="string" transfer-ownership="none">
-          <doc xml:space="preserve">ignored</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="1736">ignored</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_strv_in" c:identifier="regress_test_strv_in">
+      <source-position filename="regress.h" line="142"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -6626,11 +7739,13 @@ 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="1302"/>
       <return-value transfer-ownership="full">
         <type name="GObject.Value" c:type="GValue*"/>
       </return-value>
     </function>
     <function name="test_strv_out" c:identifier="regress_test_strv_out">
+      <source-position filename="regress.h" line="172"/>
       <return-value transfer-ownership="full">
         <array c:type="char**">
           <type name="utf8"/>
@@ -6638,6 +7753,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </return-value>
     </function>
     <function name="test_strv_out_c" c:identifier="regress_test_strv_out_c">
+      <source-position filename="regress.h" line="175"/>
       <return-value transfer-ownership="none">
         <array c:type="const char* const*">
           <type name="utf8"/>
@@ -6646,6 +7762,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_strv_out_container"
               c:identifier="regress_test_strv_out_container">
+      <source-position filename="regress.h" line="169"/>
       <return-value transfer-ownership="container">
         <array c:type="const char**">
           <type name="utf8"/>
@@ -6653,6 +7770,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </return-value>
     </function>
     <function name="test_strv_outarg" c:identifier="regress_test_strv_outarg">
+      <source-position filename="regress.h" line="178"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6668,6 +7786,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_timet" c:identifier="regress_test_timet">
+      <source-position filename="regress.h" line="94"/>
       <return-value transfer-ownership="none">
         <type name="glong" c:type="time_t"/>
       </return-value>
@@ -6679,6 +7798,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="1270"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6715,7 +7835,10 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     <function name="test_torture_signature_1"
               c:identifier="regress_test_torture_signature_1"
               throws="1">
-      <doc xml:space="preserve">This function throws an error if m is odd.</doc>
+      <doc xml:space="preserve"
+           filename="regress.c"
+           line="4243">This function throws an error if m is odd.</doc>
+      <source-position filename="regress.h" line="1278"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
@@ -6751,6 +7874,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="1287"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6802,6 +7926,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_uint" c:identifier="regress_test_uint">
+      <source-position filename="regress.h" line="70"/>
       <return-value transfer-ownership="none">
         <type name="guint" c:type="guint"/>
       </return-value>
@@ -6812,6 +7937,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_uint16" c:identifier="regress_test_uint16">
+      <source-position filename="regress.h" line="46"/>
       <return-value transfer-ownership="none">
         <type name="guint16" c:type="guint16"/>
       </return-value>
@@ -6822,6 +7948,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_uint32" c:identifier="regress_test_uint32">
+      <source-position filename="regress.h" line="52"/>
       <return-value transfer-ownership="none">
         <type name="guint32" c:type="guint32"/>
       </return-value>
@@ -6832,6 +7959,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_uint64" c:identifier="regress_test_uint64">
+      <source-position filename="regress.h" line="58"/>
       <return-value transfer-ownership="none">
         <type name="guint64" c:type="guint64"/>
       </return-value>
@@ -6842,6 +7970,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_uint8" c:identifier="regress_test_uint8">
+      <source-position filename="regress.h" line="40"/>
       <return-value transfer-ownership="none">
         <type name="guint8" c:type="guint8"/>
       </return-value>
@@ -6852,6 +7981,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_ulong" c:identifier="regress_test_ulong">
+      <source-position filename="regress.h" line="76"/>
       <return-value transfer-ownership="none">
         <type name="gulong" c:type="gulong"/>
       </return-value>
@@ -6869,6 +7999,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </return-value>
     </function>
     <function name="test_unichar" c:identifier="regress_test_unichar">
+      <source-position filename="regress.h" line="91"/>
       <return-value transfer-ownership="none">
         <type name="gunichar" c:type="gunichar"/>
       </return-value>
@@ -6880,6 +8011,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_unsigned_enum_param"
               c:identifier="regress_test_unsigned_enum_param">
+      <source-position filename="regress.h" line="438"/>
       <return-value transfer-ownership="none">
         <type name="utf8" c:type="const gchar*"/>
       </return-value>
@@ -6890,6 +8022,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_ushort" c:identifier="regress_test_ushort">
+      <source-position filename="regress.h" line="64"/>
       <return-value transfer-ownership="none">
         <type name="gushort" c:type="gushort"/>
       </return-value>
@@ -6901,6 +8034,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_utf8_const_in"
               c:identifier="regress_test_utf8_const_in">
+      <source-position filename="regress.h" line="107"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6912,12 +8046,16 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_utf8_const_return"
               c:identifier="regress_test_utf8_const_return">
+      <source-position filename="regress.h" line="101"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">UTF-8 string</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="472">UTF-8 string</doc>
         <type name="utf8" c:type="const char*"/>
       </return-value>
     </function>
     <function name="test_utf8_inout" c:identifier="regress_test_utf8_inout">
+      <source-position filename="regress.h" line="113"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6932,13 +8070,17 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_utf8_nonconst_return"
               c:identifier="regress_test_utf8_nonconst_return">
+      <source-position filename="regress.h" line="104"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">UTF-8 string</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="484">UTF-8 string</doc>
         <type name="utf8" c:type="char*"/>
       </return-value>
     </function>
     <function name="test_utf8_null_in"
               c:identifier="regress_test_utf8_null_in">
+      <source-position filename="regress.h" line="119"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6953,6 +8095,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_utf8_null_out"
               c:identifier="regress_test_utf8_null_out">
+      <source-position filename="regress.h" line="122"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6968,6 +8111,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
       </parameters>
     </function>
     <function name="test_utf8_out" c:identifier="regress_test_utf8_out">
+      <source-position filename="regress.h" line="110"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -6982,8 +8126,11 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_utf8_out_nonconst_return"
               c:identifier="regress_test_utf8_out_nonconst_return">
+      <source-position filename="regress.h" line="137"/>
       <return-value transfer-ownership="full">
-        <doc xml:space="preserve">a copy of "first"</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="586">a copy of "first"</doc>
         <type name="utf8" c:type="char*"/>
       </return-value>
       <parameters>
@@ -6991,13 +8138,16 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a copy of "second"</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="584">a copy of "second"</doc>
           <type name="utf8" c:type="char**"/>
         </parameter>
       </parameters>
     </function>
     <function name="test_utf8_out_out"
               c:identifier="regress_test_utf8_out_out">
+      <source-position filename="regress.h" line="134"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7006,14 +8156,18 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a copy of "first"</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="572">a copy of "first"</doc>
           <type name="utf8" c:type="char**"/>
         </parameter>
         <parameter name="out1"
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full">
-          <doc xml:space="preserve">a copy of "second"</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="573">a copy of "second"</doc>
           <type name="utf8" c:type="char**"/>
         </parameter>
       </parameters>
@@ -7021,6 +8175,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="1043"/>
       <return-value>
         <type name="TestFundamentalObject"
               c:type="RegressTestFundamentalObject*"/>
@@ -7033,13 +8188,18 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
     </function>
     <function name="test_value_return"
               c:identifier="regress_test_value_return">
+      <source-position filename="regress.h" line="320"/>
       <return-value transfer-ownership="none">
-        <doc xml:space="preserve">the int wrapped in a GValue.</doc>
+        <doc xml:space="preserve"
+             filename="regress.c"
+             line="300">the int wrapped in a GValue.</doc>
         <type name="GObject.Value" c:type="const GValue*"/>
       </return-value>
       <parameters>
         <parameter name="i" transfer-ownership="none">
-          <doc xml:space="preserve">an int</doc>
+          <doc xml:space="preserve"
+               filename="regress.c"
+               line="298">an int</doc>
           <type name="gint" c:type="int"/>
         </parameter>
       </parameters>
@@ -7047,6 +8207,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="1040"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -7072,6 +8233,7 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
   because it sucks. Use foobar instead.</doc-deprecated>
       <doc-stability xml:space="preserve">Maybe someday we will find the time
   to stabilize this function. Who knows?</doc-stability>
+      <source-position filename="regress.h" line="346"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/SLetter-1.0-expected.gir b/tests/scanner/SLetter-1.0-expected.gir
index a98ebb27..3223b0c0 100644
--- a/tests/scanner/SLetter-1.0-expected.gir
+++ b/tests/scanner/SLetter-1.0-expected.gir
@@ -16,6 +16,7 @@ and/or use gtk-doc annotations.  -->
     <enumeration name="DBusError"
                  c:type="SDBusError"
                  glib:error-domain="s-dbus-error">
+      <source-position filename="sletter.h" line="33"/>
       <member name="code1" value="1" c:identifier="S_DBUS_ERROR_CODE1">
       </member>
       <member name="code2" value="2" c:identifier="S_DBUS_ERROR_CODE2">
@@ -24,6 +25,7 @@ and/or use gtk-doc annotations.  -->
       </member>
     </enumeration>
     <record name="Point" c:type="SPoint">
+      <source-position filename="sletter.h" line="11"/>
       <field name="x" writable="1">
         <type name="gdouble" c:type="double"/>
       </field>
@@ -34,6 +36,7 @@ and/or use gtk-doc annotations.  -->
     <enumeration name="SpawnError"
                  c:type="SSpawnError"
                  glib:error-domain="s-spawn-error">
+      <source-position filename="sletter.h" line="22"/>
       <member name="code1" value="1" c:identifier="S_SPAWN_ERROR_CODE1">
       </member>
       <member name="code2" value="2" c:identifier="S_SPAWN_ERROR_CODE2">
@@ -47,6 +50,7 @@ and/or use gtk-doc annotations.  -->
       </return-value>
     </function>
     <function name="hello" c:identifier="s_hello">
+      <source-position filename="sletter.h" line="14"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/Symbolfilter-1.0-expected.gir b/tests/scanner/Symbolfilter-1.0-expected.gir
index db063d19..80fe0d4b 100644
--- a/tests/scanner/Symbolfilter-1.0-expected.gir
+++ b/tests/scanner/Symbolfilter-1.0-expected.gir
@@ -12,8 +12,10 @@ and/or use gtk-doc annotations.  -->
              c:identifier-prefixes="Symbolfilter"
              c:symbol-prefixes="symbolfilter">
     <record name="Object" c:type="SymbolfilterObject" disguised="1">
+      <source-position filename="symbolfilter.h" line="4"/>
       <method name="filterObjectFooMethod"
               c:identifier="SymbolfilterObjectFooMethod">
+        <source-position filename="symbolfilter.h" line="7"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -24,6 +26,7 @@ and/or use gtk-doc annotations.  -->
         </parameters>
       </method>
       <method name="filterObjectFree" c:identifier="SymbolfilterObjectFree">
+        <source-position filename="symbolfilter.h" line="8"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -36,6 +39,7 @@ and/or use gtk-doc annotations.  -->
       <function name="new"
                 c:identifier="SymbolfilterObjectNew"
                 introspectable="0">
+        <source-position filename="symbolfilter.h" line="6"/>
         <return-value>
           <type name="Object" c:type="SymbolfilterObject*"/>
         </return-value>
diff --git a/tests/scanner/Typedefs-1.0-expected.gir b/tests/scanner/Typedefs-1.0-expected.gir
index 9bfd0d08..05df44b9 100644
--- a/tests/scanner/Typedefs-1.0-expected.gir
+++ b/tests/scanner/Typedefs-1.0-expected.gir
@@ -19,6 +19,7 @@ and/or use gtk-doc annotations.  -->
             glib:type-name="TypedefsBoxedWithAnonymousTypedef"
             glib:get-type="typedefs_boxed_with_anonymous_typedef_get_type"
             c:symbol-prefix="boxed_with_anonymous_typedef">
+      <source-position filename="typedefs.h" line="72"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -28,12 +29,14 @@ and/or use gtk-doc annotations.  -->
             glib:type-name="TypedefsBoxedWithHiddenStruct"
             glib:get-type="typedefs_boxed_with_hidden_struct_get_type"
             c:symbol-prefix="boxed_with_hidden_struct">
+      <source-position filename="typedefs.h" line="79"/>
     </record>
     <record name="BoxedWithTagAndTypedef"
             c:type="TypedefsBoxedWithTagAndTypedef"
             glib:type-name="TypedefsBoxedWithTagAndTypedef"
             glib:get-type="typedefs_boxed_with_tag_and_typedef_get_type"
             c:symbol-prefix="boxed_with_tag_and_typedef">
+      <source-position filename="typedefs.h" line="63"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -43,6 +46,7 @@ and/or use gtk-doc annotations.  -->
             glib:type-name="TypedefsBoxedWithTypedefAfter"
             glib:get-type="typedefs_boxed_with_typedef_after_get_type"
             c:symbol-prefix="boxed_with_typedef_after">
+      <source-position filename="typedefs.h" line="53"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -52,30 +56,35 @@ and/or use gtk-doc annotations.  -->
             glib:type-name="TypedefsBoxedWithTypedefBefore"
             glib:get-type="typedefs_boxed_with_typedef_before_get_type"
             c:symbol-prefix="boxed_with_typedef_before">
+      <source-position filename="typedefs.h" line="44"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
     </record>
     <record name="StructWithAnonymousTypedef"
             c:type="TypedefsStructWithAnonymousTypedef">
+      <source-position filename="typedefs.h" line="15"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
     </record>
     <record name="StructWithTagAndTypedef"
             c:type="TypedefsStructWithTagAndTypedef">
+      <source-position filename="typedefs.h" line="34"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
     </record>
     <record name="StructWithTypedefAfter"
             c:type="TypedefsStructWithTypedefAfter">
+      <source-position filename="typedefs.h" line="27"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
     </record>
     <record name="StructWithTypedefBefore"
             c:type="TypedefsStructWithTypedefBefore">
+      <source-position filename="typedefs.h" line="21"/>
       <field name="value" writable="1">
         <type name="gint" c:type="int"/>
       </field>
diff --git a/tests/scanner/Utility-1.0-expected.gir b/tests/scanner/Utility-1.0-expected.gir
index 7eea9f77..2521efbb 100644
--- a/tests/scanner/Utility-1.0-expected.gir
+++ b/tests/scanner/Utility-1.0-expected.gir
@@ -15,11 +15,13 @@ and/or use gtk-doc annotations.  -->
              c:identifier-prefixes="Utility"
              c:symbol-prefixes="utility">
     <alias name="Glyph" c:type="UtilityGlyph">
+      <source-position filename="utility.h" line="26"/>
       <type name="guint32" c:type="guint32"/>
     </alias>
     <record name="Buffer" c:type="UtilityBuffer">
+      <source-position filename="utility.h" line="54"/>
       <field name="data" writable="1">
-        <doc xml:space="preserve">the data</doc>
+        <doc xml:space="preserve" filename="utility.c" line="10">the data</doc>
         <type name="gpointer"/>
       </field>
       <field name="length" writable="1">
@@ -27,10 +29,12 @@ and/or use gtk-doc annotations.  -->
       </field>
     </record>
     <union name="Byte" c:type="UtilityByte">
+      <source-position filename="utility.h" line="47"/>
       <field name="value" writable="1">
         <type name="guint8" c:type="guint8"/>
       </field>
       <record name="parts" c:type="parts">
+        <source-position filename="utility.h" line="46"/>
         <field name="first_nibble" writable="1" bits="4">
           <type name="guint8" c:type="guint8"/>
         </field>
@@ -40,6 +44,7 @@ and/or use gtk-doc annotations.  -->
       </record>
     </union>
     <enumeration name="EnumType" c:type="UtilityEnumType">
+      <source-position filename="utility.h" line="74"/>
       <member name="a" value="0" c:identifier="UTILITY_ENUM_A">
       </member>
       <member name="b" value="1" c:identifier="UTILITY_ENUM_B">
@@ -48,6 +53,7 @@ and/or use gtk-doc annotations.  -->
       </member>
     </enumeration>
     <callback name="FileFunc" c:type="UtilityFileFunc">
+      <source-position filename="utility.h" line="56"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -65,6 +71,7 @@ and/or use gtk-doc annotations.  -->
       </parameters>
     </callback>
     <bitfield name="FlagType" c:type="UtilityFlagType">
+      <source-position filename="utility.h" line="82"/>
       <member name="a" value="1" c:identifier="UTILITY_FLAG_A">
       </member>
       <member name="b" value="2" c:identifier="UTILITY_FLAG_B">
@@ -79,7 +86,9 @@ and/or use gtk-doc annotations.  -->
            glib:type-name="UtilityObject"
            glib:get-type="utility_object_get_type"
            glib:type-struct="ObjectClass">
+      <source-position filename="utility.h" line="23"/>
       <method name="watch_dir" c:identifier="utility_object_watch_dir">
+        <source-position filename="utility.h" line="63"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -115,11 +124,13 @@ and/or use gtk-doc annotations.  -->
     <record name="ObjectClass"
             c:type="UtilityObjectClass"
             glib:is-gtype-struct-for="Object">
+      <source-position filename="utility.h" line="23"/>
       <field name="parent_class">
         <type name="GObject.ObjectClass" c:type="GObjectClass"/>
       </field>
     </record>
     <record name="Struct" c:type="UtilityStruct">
+      <source-position filename="utility.h" line="90"/>
       <field name="field" writable="1">
         <type name="gint" c:type="int"/>
       </field>
@@ -136,10 +147,12 @@ and/or use gtk-doc annotations.  -->
       </field>
     </record>
     <record name="TaggedValue" c:type="UtilityTaggedValue">
+      <source-position filename="utility.h" line="37"/>
       <field name="tag" writable="1">
         <type name="gint" c:type="int"/>
       </field>
       <union name="value" c:type="value">
+        <source-position filename="utility.h" line="36"/>
         <field name="v_pointer" writable="1">
           <type name="gpointer" c:type="gpointer"/>
         </field>
@@ -152,6 +165,7 @@ and/or use gtk-doc annotations.  -->
       </union>
     </record>
     <union name="Union" c:type="UtilityUnion">
+      <source-position filename="utility.h" line="97"/>
       <field name="pointer" writable="1">
         <type name="utf8" c:type="char*"/>
       </field>
@@ -163,6 +177,7 @@ and/or use gtk-doc annotations.  -->
       </field>
     </union>
     <function name="dir_foreach" c:identifier="utility_dir_foreach">
+      <source-position filename="utility.h" line="100"/>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
diff --git a/tests/scanner/WarnLib-1.0-expected.gir b/tests/scanner/WarnLib-1.0-expected.gir
index 007ec864..3ceb088e 100644
--- a/tests/scanner/WarnLib-1.0-expected.gir
+++ b/tests/scanner/WarnLib-1.0-expected.gir
@@ -19,30 +19,41 @@ and/or use gtk-doc annotations.  -->
                glib:type-name="WarnLibWhatever"
                glib:get-type="warnlib_whatever_get_type"
                glib:type-struct="WhateverIface">
+      <source-position filename="warnlib.h" line="36"/>
       <virtual-method name="do_boo" invoker="do_boo">
-        <doc xml:space="preserve">Does boo.</doc>
+        <doc xml:space="preserve"
+             filename="warnlib.c"
+             line="35">Does boo.</doc>
+        <source-position filename="warnlib.h" line="35"/>
         <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">a WarnLibWhatever</doc>
+            <doc xml:space="preserve"
+                 filename="warnlib.c"
+                 line="37">a WarnLibWhatever</doc>
             <type name="Whatever" c:type="WarnLibWhatever*"/>
           </instance-parameter>
           <parameter name="x" transfer-ownership="none">
-            <doc xml:space="preserve">x parameter</doc>
+            <doc xml:space="preserve"
+                 filename="warnlib.c"
+                 line="38">x parameter</doc>
             <type name="gint" c:type="int"/>
           </parameter>
           <parameter name="y"
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">y parameter</doc>
+            <doc xml:space="preserve"
+                 filename="warnlib.c"
+                 line="39">y parameter</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
       </virtual-method>
       <virtual-method name="do_moo" invoker="do_moo">
+        <source-position filename="warnlib.h" line="33"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -62,13 +73,18 @@ and/or use gtk-doc annotations.  -->
         </parameters>
       </virtual-method>
       <method name="do_boo" c:identifier="warnlib_whatever_do_boo">
-        <doc xml:space="preserve">Does boo.</doc>
+        <doc xml:space="preserve"
+             filename="warnlib.c"
+             line="35">Does boo.</doc>
+        <source-position filename="warnlib.h" line="41"/>
         <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">a WarnLibWhatever</doc>
+            <doc xml:space="preserve"
+                 filename="warnlib.c"
+                 line="37">a WarnLibWhatever</doc>
             <type name="Whatever" c:type="WarnLibWhatever*"/>
           </instance-parameter>
           <parameter name="arg1" transfer-ownership="none">
@@ -83,6 +99,7 @@ and/or use gtk-doc annotations.  -->
         </parameters>
       </method>
       <method name="do_moo" c:identifier="warnlib_whatever_do_moo">
+        <source-position filename="warnlib.h" line="39"/>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
@@ -105,11 +122,13 @@ and/or use gtk-doc annotations.  -->
     <record name="WhateverIface"
             c:type="WarnLibWhateverIface"
             glib:is-gtype-struct-for="Whatever">
+      <source-position filename="warnlib.h" line="36"/>
       <field name="parent_iface">
         <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
       </field>
       <field name="do_moo">
         <callback name="do_moo">
+          <source-position filename="warnlib.h" line="33"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
@@ -131,23 +150,30 @@ and/or use gtk-doc annotations.  -->
       </field>
       <field name="do_boo">
         <callback name="do_boo">
+          <source-position filename="warnlib.h" line="35"/>
           <return-value transfer-ownership="none">
             <type name="none" c:type="void"/>
           </return-value>
           <parameters>
             <parameter name="self" transfer-ownership="none">
-              <doc xml:space="preserve">a WarnLibWhatever</doc>
+              <doc xml:space="preserve"
+                   filename="warnlib.c"
+                   line="37">a WarnLibWhatever</doc>
               <type name="Whatever" c:type="WarnLibWhatever*"/>
             </parameter>
             <parameter name="x" transfer-ownership="none">
-              <doc xml:space="preserve">x parameter</doc>
+              <doc xml:space="preserve"
+                   filename="warnlib.c"
+                   line="38">x parameter</doc>
               <type name="gint" c:type="int"/>
             </parameter>
             <parameter name="y"
                        transfer-ownership="none"
                        nullable="1"
                        allow-none="1">
-              <doc xml:space="preserve">y parameter</doc>
+              <doc xml:space="preserve"
+                   filename="warnlib.c"
+                   line="39">y parameter</doc>
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -157,6 +183,7 @@ and/or use gtk-doc annotations.  -->
     <function name="throw_unpaired"
               c:identifier="warnlib_throw_unpaired"
               throws="1">
+      <source-position filename="warnlib.h" line="15"/>
       <return-value transfer-ownership="none">
         <type name="gboolean" c:type="gboolean"/>
       </return-value>



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