diff options
author | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2010-02-23 13:34:59 +0100 |
---|---|---|
committer | Sylvain Thénault <sylvain.thenault@logilab.fr> | 2010-02-23 13:34:59 +0100 |
commit | 9686bf693764bdf9bb805afbbbe0ac71230b6cab (patch) | |
tree | 05fdd29deb1a24315b6708484c3ec1a4e3afd27d | |
parent | e8e8fd80f2787933494f67a9140c1710940e04ca (diff) | |
download | pylint-git-9686bf693764bdf9bb805afbbbe0ac71230b6cab.tar.gz |
patch for #5977. Yields do not increment the counter of returns.
* remove yields counting
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | checkers/design_analysis.py | 8 | ||||
-rw-r--r-- | test/input/func_too_many_returns_yields.py | 42 | ||||
-rw-r--r-- | test/messages/func_too_many_returns_yields.txt | 1 |
4 files changed, 48 insertions, 8 deletions
@@ -1,6 +1,9 @@ ChangeLog for PyLint ==================== - -- + -- + * fix #5977, yield and return statement have their own counters, no more R0911 + (Too many return statements) when a function have many yield stamtements. + * implement #5564, function / methode arguments with leading "_" are ignored in arguments / local variables count. diff --git a/checkers/design_analysis.py b/checkers/design_analysis.py index cfc81c303..0deb6c796 100644 --- a/checkers/design_analysis.py +++ b/checkers/design_analysis.py @@ -287,17 +287,11 @@ class MisdesignChecker(BaseChecker): args=(self._stmts, self.config.max_statements)) def visit_return(self, _): - """count number of returns/yields""" + """count number of returns""" if not self._returns: return # return outside function, reported by the base checker self._returns[-1] += 1 - def visit_yield(self, _): - """count number of returns/yields""" - if not self._returns: - return # yield outside function, reported by the base checker - self._returns[-1] += 1 - def visit_default(self, node): """default visit method -> increments the statements counter if necessary diff --git a/test/input/func_too_many_returns_yields.py b/test/input/func_too_many_returns_yields.py new file mode 100644 index 000000000..c61bd7d5b --- /dev/null +++ b/test/input/func_too_many_returns_yields.py @@ -0,0 +1,42 @@ +"""test""" + +__revision__ = None + +def too_many_returns(arg): + """is this real ?""" + if arg == 1: + return 1 + elif arg == 2: + return 2 + elif arg == 3: + return 3 + elif arg == 4: + return 4 + elif arg == 5: + return 5 + elif arg == 6: + return 6 + elif arg == 7: + return 7 + elif arg == 8: + return 8 + elif arg == 9: + return 9 + elif arg == 10: + return 10 + return None + +def many_yield(text): + """not a problem""" + if text: + yield " line 1: %s\n" % text + yield " line 2\n" + yield " line 3\n" + yield " line 4\n" + yield " line 5\n" + else: + yield " line 6\n" + yield " line 7\n" + yield " line 8\n" + yield " line 9\n" + yield " line 10\n" diff --git a/test/messages/func_too_many_returns_yields.txt b/test/messages/func_too_many_returns_yields.txt new file mode 100644 index 000000000..f8a0f0d20 --- /dev/null +++ b/test/messages/func_too_many_returns_yields.txt @@ -0,0 +1 @@ +R: 5:too_many_returns: Too many return statements (11/6) |