diff options
| author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2014-07-25 13:07:34 +0200 | 
|---|---|---|
| committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2014-07-25 13:07:34 +0200 | 
| commit | 404fc9aca9830865cba5fe6dbe49636a420e6b46 (patch) | |
| tree | 7b214bff4426d699973e46b775ba4587b439d424 /checkers/classes.py | |
| parent | 2bc1c6076f5d6a065d7b1dadcbab1a1e70968279 (diff) | |
| download | pylint-git-404fc9aca9830865cba5fe6dbe49636a420e6b46.tar.gz | |
Don't emit hidden-method message when the attribute has been monkey-patched,
you're on your own when you do that
Closes http://www.logilab.org/ticket/36653
Diffstat (limited to 'checkers/classes.py')
| -rw-r--r-- | checkers/classes.py | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/checkers/classes.py b/checkers/classes.py index 570f7ac45..6d9b2df99 100644 --- a/checkers/classes.py +++ b/checkers/classes.py @@ -20,7 +20,7 @@ from __future__ import generators  import sys  import astroid -from astroid import YES, Instance, are_exclusive, AssAttr +from astroid import YES, Instance, are_exclusive, AssAttr, Class  from astroid.bases import Generator  from pylint.interfaces import IAstroidChecker @@ -341,8 +341,12 @@ a metaclass class method.'}          # check if the method is hidden by an attribute          try:              overridden = klass.instance_attr(node.name)[0] # XXX -            args = (overridden.root().name, overridden.fromlineno) -            self.add_message('method-hidden', args=args, node=node) +            overridden_frame = overridden.frame() +            if overridden_frame.type == 'method': +                overridden_frame = overridden_frame.parent.frame() +            if isinstance(overridden_frame, Class) and klass._is_subtype_of(overridden_frame.qname()): +                args = (overridden.root().name, overridden.fromlineno) +                self.add_message('method-hidden', args=args, node=node)          except astroid.NotFoundError:              pass | 
