diff options
author | Emile Anclin <emile.anclin@logilab.fr> | 2010-02-22 16:36:32 +0100 |
---|---|---|
committer | Emile Anclin <emile.anclin@logilab.fr> | 2010-02-22 16:36:32 +0100 |
commit | ce0be59ad5e233c5c981c96fdb4a3449010e4d8b (patch) | |
tree | f4c3fc295b6a6fab9cf6dca16d85e16dcd39db01 /rebuilder.py | |
parent | 4693a2b1c7d948e2036ce8d324d5f08fd7a16efe (diff) | |
download | astroid-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.py | 16 |
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 |