summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattip <matti.picus@gmail.com>2019-01-05 23:27:31 +0200
committermattip <matti.picus@gmail.com>2019-01-05 23:27:31 +0200
commit64c45122c3bf11ace275923f0decac95f9e7caa2 (patch)
tree85cc796c1bf93203b5d973c3a8cef2fa651eb368
parent53eb14dec2e73a111a7c2316aa426710db0fdabc (diff)
downloadcython-64c45122c3bf11ace275923f0decac95f9e7caa2.tar.gz
MAINT: refactor from review
-rw-r--r--Cython/Compiler/ParseTreeTransforms.py27
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):