diff options
author | Rémi Cardona <remi.cardona@polyconseil.fr> | 2019-09-30 18:00:46 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2019-10-03 09:31:11 +0200 |
commit | 0094ab627d903d860d6e91e1c05cb54bd48b6829 (patch) | |
tree | 11947e371358740dacb0aed3c86bcc0f822d778c | |
parent | 252efa1675d7659457740171e9a147318df094a6 (diff) | |
download | pylint-git-0094ab627d903d860d6e91e1c05cb54bd48b6829.tar.gz |
properly handle literals in ``unnecessary-comprehension`` checker, closes #3148
-rw-r--r-- | CONTRIBUTORS.txt | 2 | ||||
-rw-r--r-- | pylint/checkers/refactoring.py | 4 | ||||
-rw-r--r-- | tests/functional/u/unnecessary_comprehension.py | 1 | ||||
-rw-r--r-- | tests/functional/u/unnecessary_comprehension.txt | 8 |
4 files changed, 10 insertions, 5 deletions
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index b46b2d0e8..a7ee6a96b 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -329,3 +329,5 @@ contributors: * Trevor Bekolay: contributor - Added --list-msgs-enabled command + +* Rémi Cardona: contributor diff --git a/pylint/checkers/refactoring.py b/pylint/checkers/refactoring.py index 0d2c6d7a0..7e5a8d140 100644 --- a/pylint/checkers/refactoring.py +++ b/pylint/checkers/refactoring.py @@ -1050,7 +1050,9 @@ class RefactoringChecker(checkers.BaseTokenChecker): if isinstance(expr, astroid.Name): expr_list = expr.name elif isinstance(expr, astroid.Tuple): - expr_list = [elt.name for elt in expr.elts if isinstance(elt, astroid.Name)] + if any(not isinstance(elt, astroid.Name) for elt in expr.elts): + return + expr_list = [elt.name for elt in expr.elts] else: expr_list = [] target = node.parent.generators[0].target diff --git a/tests/functional/u/unnecessary_comprehension.py b/tests/functional/u/unnecessary_comprehension.py index 57ad6caec..fa9da8e5d 100644 --- a/tests/functional/u/unnecessary_comprehension.py +++ b/tests/functional/u/unnecessary_comprehension.py @@ -11,6 +11,7 @@ [x for x in iterable if condition] # exclude comp_if [y for x in iterable for y in x] # exclude nested comprehensions [2 * x for x in iterable] # exclude useful comprehensions +[(x, y, 1) for x, y in iterable] # exclude useful comprehensions # Set comprehensions {x for x in iterable} # [unnecessary-comprehension] diff --git a/tests/functional/u/unnecessary_comprehension.txt b/tests/functional/u/unnecessary_comprehension.txt index 76098b0d3..a4755baa9 100644 --- a/tests/functional/u/unnecessary_comprehension.txt +++ b/tests/functional/u/unnecessary_comprehension.txt @@ -1,8 +1,8 @@ unnecessary-comprehension:5::Unnecessary use of a comprehension unnecessary-comprehension:8::Unnecessary use of a comprehension unnecessary-comprehension:9::Unnecessary use of a comprehension -unnecessary-comprehension:16::Unnecessary use of a comprehension -unnecessary-comprehension:19::Unnecessary use of a comprehension +unnecessary-comprehension:17::Unnecessary use of a comprehension unnecessary-comprehension:20::Unnecessary use of a comprehension -unnecessary-comprehension:28::Unnecessary use of a comprehension -unnecessary-comprehension:30::Unnecessary use of a comprehension +unnecessary-comprehension:21::Unnecessary use of a comprehension +unnecessary-comprehension:29::Unnecessary use of a comprehension +unnecessary-comprehension:31::Unnecessary use of a comprehension |