diff options
author | mattip <matti.picus@gmail.com> | 2019-01-05 23:27:31 +0200 |
---|---|---|
committer | mattip <matti.picus@gmail.com> | 2019-01-05 23:27:31 +0200 |
commit | 64c45122c3bf11ace275923f0decac95f9e7caa2 (patch) | |
tree | 85cc796c1bf93203b5d973c3a8cef2fa651eb368 | |
parent | 53eb14dec2e73a111a7c2316aa426710db0fdabc (diff) | |
download | cython-64c45122c3bf11ace275923f0decac95f9e7caa2.tar.gz |
MAINT: refactor from review
-rw-r--r-- | Cython/Compiler/ParseTreeTransforms.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/Cython/Compiler/ParseTreeTransforms.py b/Cython/Compiler/ParseTreeTransforms.py index ed28ddfed..c2dc326c9 100644 --- a/Cython/Compiler/ParseTreeTransforms.py +++ b/Cython/Compiler/ParseTreeTransforms.py @@ -2245,18 +2245,23 @@ class ReplacePropertyNode(CythonTransform): return node # transform @property decorators on ctypedef class functions for decorator_node in node.decorators[::-1]: - decorator = decorator_node.decorator - if decorator.is_name and decorator.name == 'property': - if len(node.decorators) > 1: - return self._reject_decorated_property(node, decorator_node) - # Mark the node as a cgetter - node.type.is_cgetter = True - # Add a func_cname to be output instead of the attribute - node.entry.func_cname = node.body.stats[0].value.function.name - # done - remove the decorator node + _node = self.analyse_decorator(node, decorator_node.decorator) + if _node: node.decorators.remove(decorator_node) - return [node] - return [node] + node = _node + break + return node + + def analyse_decorator(self, node, decorator): + if decorator.is_name and decorator.name == 'property': + if len(node.decorators) > 1: + return self._reject_decorated_property(node, decorator_node) + # Mark the node as a cgetter + node.type.is_cgetter = True + # Add a func_cname to be output instead of the attribute + node.entry.func_cname = node.body.stats[0].value.function.name + return node + return None class FindInvalidUseOfFusedTypes(CythonTransform): |