diff options
Diffstat (limited to 'giscanner/maintransformer.py')
-rw-r--r-- | giscanner/maintransformer.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 89f7ff65..9053abf4 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -219,8 +219,9 @@ usage is void (*_gtk_reserved1)(void);""" self._apply_annotations_function(node, chain) if isinstance(node, ast.Callback): self._apply_annotations_callable(node, chain, block = self._get_block(node)) - if isinstance(node, (ast.Class, ast.Interface, ast.Union, ast.Enum, - ast.Bitfield, ast.Callback)): + if isinstance(node, (ast.Enum, ast.Bitfield)): + self._apply_annotations_enum(node, self._get_block(node)) + if isinstance(node, (ast.Class, ast.Interface, ast.Union, ast.Callback)): self._apply_annotations_annotated(node, self._get_block(node)) if isinstance(node, (ast.Class, ast.Interface, ast.Record, ast.Union)): block = self._get_block(node) @@ -409,6 +410,12 @@ usage is void (*_gtk_reserved1)(void);""" message.warn_node(parent, "Unknown container %r for element-type annotation" % (node.type, )) + def _apply_annotations_enum(self, node, block): + enum_type = block.options.get(OPT_TYPE) + if enum_type and enum_type.one() == 'bitfield': + node.__class__ = ast.Bitfield + self._apply_annotations_annotated(node, block) + def _get_transfer_default_param(self, parent, node): if node.direction in [ast.PARAM_DIRECTION_INOUT, ast.PARAM_DIRECTION_OUT]: |