summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcpopa <devnull@localhost>2014-04-25 13:17:17 +0300
committercpopa <devnull@localhost>2014-04-25 13:17:17 +0300
commita1bf229f85aa0285f8a963f46109a06520a60ea7 (patch)
treeb1fcdefc4aec24892a0abe700422fc4c5337f3f9
parent5a130703e1a1f23bc5f80294527299675de1293e (diff)
downloadpylint-a1bf229f85aa0285f8a963f46109a06520a60ea7.tar.gz
Fix a potential AttributeError when checking for `reversed` arguments.
-rw-r--r--checkers/base.py13
-rw-r--r--test/input/func_bad_reversed_sequence.py3
2 files changed, 10 insertions, 6 deletions
diff --git a/checkers/base.py b/checkers/base.py
index ac58177..8136d0f 100644
--- a/checkers/base.py
+++ b/checkers/base.py
@@ -785,11 +785,14 @@ functions, methods
if argument is None:
# nothing was infered
# try to see if we have iter()
- if (isinstance(node.args[0], astroid.CallFunc) and
- node.args[0].func.name == 'iter'):
- func = node.args[0].func.infer().next()
- if is_builtin_object(func):
- self.add_message('bad-reversed-sequence', node=node)
+ if isinstance(node.args[0], astroid.CallFunc):
+ try:
+ func = node.args[0].func.infer().next()
+ except InferenceError:
+ return
+ if (getattr(func, 'name', None) == 'iter' and
+ is_builtin_object(func)):
+ self.add_message('bad-reversed-sequence', node=node)
return
if isinstance(argument, astroid.Instance):
diff --git a/test/input/func_bad_reversed_sequence.py b/test/input/func_bad_reversed_sequence.py
index a394e53..ad699e6 100644
--- a/test/input/func_bad_reversed_sequence.py
+++ b/test/input/func_bad_reversed_sequence.py
@@ -37,7 +37,7 @@ def uninferable(seq):
"""
return reversed(seq)
-def test():
+def test(path):
""" test function """
seq = reversed()
seq = reversed(None)
@@ -56,4 +56,5 @@ def test():
seq = reversed(deque([]))
seq = reversed("123")
seq = uninferable([1, 2, 3])
+ seq = reversed(path.split("/"))
return seq