# 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