diff options
Diffstat (limited to 'giscanner/maintransformer.py')
-rw-r--r-- | giscanner/maintransformer.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 3c4ef695..9077a1d0 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -69,6 +69,10 @@ class MainTransformer(object): # Read in most annotations now. self._namespace.walk(self._pass_read_annotations) + # Now that we have associated doc SECTIONs to classes, + # add the unused section blocks as standalone nodes. + self._add_standalone_doc_sections() + # Now that we've possibly seen more types from annotations, # do another type resolution pass. self._namespace.walk(self._pass_type_resolution) @@ -101,6 +105,14 @@ class MainTransformer(object): # Private + def _add_standalone_doc_sections(self): + for block_name, block in self._blocks.items(): + if block_name.startswith("SECTION:") and block.description: + node = ast.DocSection(block_name[8:]) + node.doc = block.description + node.doc_position = block.position + self._namespace.append(node) + def _pass_fixup_hidden_fields(self, node, chain): """Hide all callbacks starting with _; the typical usage is void (*_gtk_reserved1)(void);""" @@ -240,7 +252,9 @@ class MainTransformer(object): self._apply_annotations_field(node, block, field) name = self._get_annotation_name(node) section_name = 'SECTION:%s' % (name.lower(), ) - block = self._blocks.get(section_name) + # We pop it from our blocks so that we can serialize leftover + # SECTIONs as standalone nodes + block = self._blocks.pop(section_name, None) self._apply_annotations_annotated(node, block) if isinstance(node, (ast.Class, ast.Interface)): for prop in node.properties: |