diff options
Diffstat (limited to 'giscanner/maintransformer.py')
-rw-r--r-- | giscanner/maintransformer.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py index 33f58485..dc8bd3c2 100644 --- a/giscanner/maintransformer.py +++ b/giscanner/maintransformer.py @@ -92,6 +92,7 @@ class MainTransformer(object): self._pair_function(node) if isinstance(node, (ast.Class, ast.Interface)): self._pair_class_virtuals(node) + self._pair_property_accessors(node) # Some annotations need to be post function pairing self._namespace.walk(self._pass_read_annotations2) @@ -1462,6 +1463,26 @@ method or constructor of some type.""" self._apply_annotations_callable(vfunc, [], block) break + def _pair_property_accessors(self, node): + """Look for accessor methods for class properties""" + for prop in node.properties: + normalized_name = prop.name.replace('-', '_') + if prop.writable and not prop.construct_only: + setter = 'set_' + normalized_name + else: + setter = None + if prop.readable: + getter = 'get_' + normalized_name + else: + getter = None + for method in node.methods: + if setter is not None and method.name == setter: + prop.setter = method.name + continue + if getter is not None and method.name == getter: + prop.getter = method.name + continue + def _pass3(self, node, chain): """Pass 3 is after we've loaded GType data and performed type closure.""" |