summaryrefslogtreecommitdiff
path: root/rebuilder.py
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2010-02-22 16:36:32 +0100
committerEmile Anclin <emile.anclin@logilab.fr>2010-02-22 16:36:32 +0100
commitce0be59ad5e233c5c981c96fdb4a3449010e4d8b (patch)
treef4c3fc295b6a6fab9cf6dca16d85e16dcd39db01 /rebuilder.py
parent4693a2b1c7d948e2036ce8d324d5f08fd7a16efe (diff)
downloadastroid-git-ce0be59ad5e233c5c981c96fdb4a3449010e4d8b.tar.gz
checking classmethod / staticmethod must be done after the __new__ test
--HG-- branch : rebuild
Diffstat (limited to 'rebuilder.py')
-rw-r--r--rebuilder.py16
1 files changed, 5 insertions, 11 deletions
diff --git a/rebuilder.py b/rebuilder.py
index 997b4d27..2ca7afa7 100644
--- a/rebuilder.py
+++ b/rebuilder.py
@@ -120,17 +120,6 @@ class RebuildVisitor(ASTVisitor):
self._set_infos(node, newnode, parent)
return newnode
- def visit_decorators(self, node, parent):
- """visiting an Decorators node"""
- newnode = self._visit_decorators(node, parent)
- newnode.parent = parent
- self._set_infos(node, newnode, parent)
- for decorator_expr in newnode.nodes:
- if isinstance(decorator_expr, nodes.Name) and \
- decorator_expr.name in ('classmethod', 'staticmethod'):
- newnode.parent.type = decorator_expr.name
- return newnode
-
def visit_ellipsis(self, node, parent):
"""visit an Ellipsis node by returning a fresh instance of it"""
newnode = nodes.Ellipsis()
@@ -171,6 +160,11 @@ class RebuildVisitor(ASTVisitor):
newnode.type = 'classmethod'
else:
newnode.type = 'method'
+ if newnode.decorators is not None:
+ for decorator_expr in newnode.decorators.nodes:
+ if isinstance(decorator_expr, nodes.Name) and \
+ decorator_expr.name in ('classmethod', 'staticmethod'):
+ newnode.type = decorator_expr.name
frame.set_local(newnode.name, newnode)
return newnode