diff options
author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2011-10-03 10:58:18 +0200 |
---|---|---|
committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2011-10-03 10:58:18 +0200 |
commit | 9654c98df97d614eb08f75a9e690635cf7fb2149 (patch) | |
tree | a6a2c7e0264bf7e2e33e3c73ad49ec0cc1496315 | |
parent | 779e2c4078d5f6ee0a319a9807b215e775411426 (diff) | |
download | pylint-git-9654c98df97d614eb08f75a9e690635cf7fb2149.tar.gz |
better message for E0202 (closes #77237)
this also ease treatment: don't try to search parent frame (ie belonging class) which may
be hazardous, simply use the assignment node.
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | checkers/classes.py | 16 | ||||
-rw-r--r-- | test/messages/func_e0205.txt | 2 |
3 files changed, 10 insertions, 10 deletions
@@ -16,6 +16,8 @@ ChangeLog for PyLint * #76920: crash if on eg "pylint --rcfile"(patch by Torsten Marek) + * #77237: warning for E0202 may be very misleading + 2011-07-18 -- 0.24.0 * #69738: add regular expressions support for "generated-members" diff --git a/checkers/classes.py b/checkers/classes.py index 6e53ec09e..60d20b6c9 100644 --- a/checkers/classes.py +++ b/checkers/classes.py @@ -1,4 +1,4 @@ -# Copyright (c) 2003-2010 LOGILAB S.A. (Paris, FRANCE). +# Copyright (c) 2003-2011 LOGILAB S.A. (Paris, FRANCE). # http://www.logilab.fr/ -- mailto:contact@logilab.fr # # This program is free software; you can redistribute it and/or modify it under @@ -41,9 +41,10 @@ MSGS = { compatibility for an unexpected reason. Please report this kind \ if you don\'t make sense of it.'), - 'E0202': ('An attribute inherited from %s hide this method', - 'Used when a class defines a method which is hidden by an \ - instance attribute from an ancestor class.'), + 'E0202': ('An attribute affected in %s line %s hide this method', + 'Used when a class defines a method which is hidden by an ' + 'instance attribute from an ancestor class or set by some ' + 'client code.'), 'E0203': ('Access to member %r before its definition line %s', 'Used when an instance member is accessed before it\'s actually\ assigned.'), @@ -256,11 +257,8 @@ a class method.'} # check if the method overload an attribute try: overridden = klass.instance_attr(node.name)[0] # XXX - # we may be unable to get owner class if this is a monkey - # patched method - while overridden.parent and not isinstance(overridden, astng.Class): - overridden = overridden.parent.frame() - self.add_message('E0202', args=overridden.name, node=node) + args = (overridden.root().name, overridden.fromlineno) + self.add_message('E0202', args=args, node=node) except astng.NotFoundError: pass diff --git a/test/messages/func_e0205.txt b/test/messages/func_e0205.txt index 1adf408c8..494f3c3a6 100644 --- a/test/messages/func_e0205.txt +++ b/test/messages/func_e0205.txt @@ -1,2 +1,2 @@ -E: 14:Cdef.abcd: An attribute inherited from Abcd hide this method +E: 14:Cdef.abcd: An attribute affected in input.func_e0205 line 10 hide this method |