| """Test that boolean conditions can be simplified""" |
| # pylint: disable=pointless-statement |
| |
| |
| def func(_): |
| """Pointless function""" |
| |
| |
| CONSTANT = 100 |
| OTHER = 200 |
| |
| # Simplifies any boolean expression that is coerced into a True/False value |
| bool(CONSTANT or False) # [simplifiable-condition] |
| assert CONSTANT or False # [simplifiable-condition] |
| if CONSTANT and True: # [simplifiable-condition] |
| pass |
| elif CONSTANT and True: # [simplifiable-condition] |
| pass |
| while CONSTANT and True: # [simplifiable-condition] |
| break |
| 1 if CONSTANT or False else 2 # [simplifiable-condition] |
| z = [x for x in range(10) if x or False] # [simplifiable-condition] |
| |
| # Simplifies recursively |
| assert CONSTANT or (True and False) # [simplifiable-condition] |
| assert True and CONSTANT and OTHER # [simplifiable-condition] |
| assert (CONSTANT or False) and (OTHER or True) # [simplifiable-condition] |
| |
| # Will try to infer the truthiness of an expression as long as it doesn't contain any variables |
| assert [] or CONSTANT # [simplifiable-condition] |
| assert {} or CONSTANT # [simplifiable-condition] |
| |
| # Expressions not in one of the above situations will not emit a message |
| CONSTANT or True |
| bool(CONSTANT or OTHER) |
| bool(func(CONSTANT or True)) |