summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Cardona <remi.cardona@polyconseil.fr>2019-09-30 18:00:46 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2019-10-03 09:31:11 +0200
commit0094ab627d903d860d6e91e1c05cb54bd48b6829 (patch)
tree11947e371358740dacb0aed3c86bcc0f822d778c
parent252efa1675d7659457740171e9a147318df094a6 (diff)
downloadpylint-git-0094ab627d903d860d6e91e1c05cb54bd48b6829.tar.gz
properly handle literals in ``unnecessary-comprehension`` checker, closes #3148
-rw-r--r--CONTRIBUTORS.txt2
-rw-r--r--pylint/checkers/refactoring.py4
-rw-r--r--tests/functional/u/unnecessary_comprehension.py1
-rw-r--r--tests/functional/u/unnecessary_comprehension.txt8
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