vtrefny / rpms / pylint

Forked from rpms/pylint 4 years ago
Clone
Blob Blame History Raw
# HG changeset patch
# User cpopa
# Date 1398421037 -10800
# Node ID 93babaf6bffc59a49c75319d9850086b4935edbc
# Parent  0b8a45e6ff1a73e2b4dbbf4d2b7b45c596d95e9a
Fix a potential AttributeError when checking for `reversed` arguments.

diff --git a/checkers/base.py b/checkers/base.py
--- a/checkers/base.py
+++ b/checkers/base.py
@@ -785,11 +785,14 @@
             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
--- a/test/input/func_bad_reversed_sequence.py
+++ b/test/input/func_bad_reversed_sequence.py
@@ -37,7 +37,7 @@
     """
     return reversed(seq)
 
-def test():
+def test(path):
     """ test function """
     seq = reversed()
     seq = reversed(None)
@@ -56,4 +56,5 @@
     seq = reversed(deque([]))
     seq = reversed("123")
     seq = uninferable([1, 2, 3])
+    seq = reversed(path.split("/"))
     return seq