blob: d686f4658ad1d98a2441d983575115e1ad691134 [file] [log] [blame]
"""Check for else branches on loops with break and return only."""
from __future__ import print_function
__revision__ = 0
def test_return_for():
"""else + return is not accetable."""
for i in range(10):
if i % 2:
return i
else: # [useless-else-on-loop]
print('math is broken')
return None
def test_return_while():
"""else + return is not accetable."""
while True:
return 1
else: # [useless-else-on-loop]
print('math is broken')
return None
while True:
def short_fun():
"""A function with a loop."""
for _ in range(10):
break
else: # [useless-else-on-loop]
print('or else!')
while True:
while False:
break
else: # [useless-else-on-loop]
print('or else!')
for j in range(10):
pass
else: # [useless-else-on-loop]
print('fat chance')
for j in range(10):
break
def test_return_for2():
"""no false positive for break in else
https://bitbucket.org/logilab/pylint/issue/117/useless-else-on-loop-false-positives
"""
for i in range(10):
for _ in range(i):
if i % 2:
break
else:
break
else:
print('great math')
def test_break_in_orelse_deep():
"""no false positive for break in else deeply nested
"""
for _ in range(10):
if 1 < 2:
for _ in range(3):
if 3 < 2:
break
else:
break
else:
return True
return False
def test_break_in_orelse_deep2():
"""should rise a useless-else-on-loop message, as the break statement is only
for the inner for loop
"""
for _ in range(10):
if 1 < 2:
for _ in range(3):
if 3 < 2:
break
else:
print("all right")
else: # [useless-else-on-loop]
return True
return False
def test_break_in_orelse_deep3():
"""no false positive for break deeply nested in else
"""
for _ in range(10):
for _ in range(3):
pass
else:
if 1 < 2:
break
else:
return True
return False