"""Test that boolean conditions simplify to a constant value""" # pylint: disable=pointless-statement from unknown import Unknown # pylint: disable=import-error def func(_): """Pointless function""" CONSTANT = 100 OTHER = 200 # Simplifies any boolean expression that is coerced into a True/False value bool(CONSTANT or True) # [condition-evals-to-constant] assert CONSTANT or True # [condition-evals-to-constant] if CONSTANT and False: # [condition-evals-to-constant] pass elif CONSTANT and False: # [condition-evals-to-constant] pass while CONSTANT and False: # [condition-evals-to-constant] break 1 if CONSTANT or True else 2 # [condition-evals-to-constant] z = [x for x in range(10) if x or True] # [condition-evals-to-constant] # Simplifies recursively assert True or CONSTANT or OTHER # [condition-evals-to-constant] assert (CONSTANT or True) or (CONSTANT or True) # [condition-evals-to-constant] # Will try to infer the truthiness of an expression as long as it doesn't contain any variables assert 3 + 4 or CONSTANT # [condition-evals-to-constant] assert Unknown or True # [condition-evals-to-constant] assert True or True # [condition-evals-to-constant] assert False or False # [condition-evals-to-constant] assert True and True # [condition-evals-to-constant] assert False and False # [condition-evals-to-constant] # A bare constant that's not inside of a boolean operation will emit `using-constant-test` instead if True: # pylint: disable=using-constant-test pass # 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))