Development of an internal social media platform with personalised dashboards for students
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

useless_else_on_loop.py 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. """Check for else branches on loops with break an return only."""
  2. from __future__ import print_function
  3. __revision__ = 0
  4. def test_return_for():
  5. """else + return is not accetable."""
  6. for i in range(10):
  7. if i % 2:
  8. return i
  9. else: # [useless-else-on-loop]
  10. print('math is broken')
  11. return None
  12. def test_return_while():
  13. """else + return is not accetable."""
  14. while True:
  15. return 1
  16. else: # [useless-else-on-loop]
  17. print('math is broken')
  18. return None
  19. while True:
  20. def short_fun():
  21. """A function with a loop."""
  22. for _ in range(10):
  23. break
  24. else: # [useless-else-on-loop]
  25. print('or else!')
  26. while True:
  27. while False:
  28. break
  29. else: # [useless-else-on-loop]
  30. print('or else!')
  31. for j in range(10):
  32. pass
  33. else: # [useless-else-on-loop]
  34. print('fat chance')
  35. for j in range(10):
  36. break
  37. def test_return_for2():
  38. """no false positive for break in else
  39. https://bitbucket.org/logilab/pylint/issue/117/useless-else-on-loop-false-positives
  40. """
  41. for i in range(10):
  42. for _ in range(i):
  43. if i % 2:
  44. break
  45. else:
  46. break
  47. else:
  48. print('great math')
  49. def test_break_in_orelse_deep():
  50. """no false positive for break in else deeply nested
  51. """
  52. for _ in range(10):
  53. if 1 < 2:
  54. for _ in range(3):
  55. if 3 < 2:
  56. break
  57. else:
  58. break
  59. else:
  60. return True
  61. return False
  62. def test_break_in_orelse_deep2():
  63. """should rise a useless-else-on-loop message, as the break statement is only
  64. for the inner for loop
  65. """
  66. for _ in range(10):
  67. if 1 < 2:
  68. for _ in range(3):
  69. if 3 < 2:
  70. break
  71. else:
  72. print("all right")
  73. else: # [useless-else-on-loop]
  74. return True
  75. return False