# pylint: disable=missing-docstring,invalid-name,undefined-variable,multiple-statements # Variations of 'result' result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] result = 'header' for number in ['1', '2', '3']: result += number # [consider-using-join] result = another_result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] another_result = result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] result = 'a' for number in ['1', '2', '3']: result += f'b{number}' # [consider-using-join] assert result == 'ab1b2b3' assert result == 'b'.join(['a', '1', '2', '3']) result = 'a' for number in ['1', '2', '3']: result += f'{number}c' # [consider-using-join] assert result == 'a1c2c3c' assert result == 'a' + 'c'.join(['1', '2', '3']) + 'c' result = 'a' for number in ['1', '2', '3']: result += f'b{number}c' # [consider-using-join] assert result == 'ab1cb2cb3c' assert result == 'ab' + 'cb'.join(['1', '2', '3']) + 'c' result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] result = '' for number in ['1', '2', '3']: result += f"{number}, " # [consider-using-join] result = result[:-2] result = 0 # result is not a string for number in ['1', '2', '3']: result += number RESULT = '' # wrong name / initial variable missing for number in ['1', '2', '3']: result += [number] string_variable = '' result = string_variable # type of 'result' not obviously a string for number in ['1', '2', '3']: result += number result = '' another_result = '' # result defined too early for number in ['1', '2', '3']: result += [number] for number in ['1', '2', '3']: # 'result'-definition missing result += number # Variations of 'number' result = '' # no concatenation (iterator-name differs) for name in ['1', '2', '3']: result += number result = '' # no concatenation (iterator-name differs) for _ in ['1', '2', '3']: result += number # 'exprlist' is not a single name for index, number in ['1', '2', '3']: result += number # Variations of 'iterable' result = '' for number in []: result += number # [consider-using-join] result = '' for number in "a text": result += number # [consider-using-join] result = '' for number in [1, 2, 3]: result += number # [consider-using-join] a_list = [1, 2, 3] result = '' for number in a_list: result += number # [consider-using-join] result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] result = '' for number in undefined_iterable: result += number # [consider-using-join] # Variations of loop-body result = '' # addition is not the only part of the body for number in ['1', '2', '3']: print(number) result += number result = '' # addition is not the only part of the body for number in ['1', '2', '3']: result += number print(number) result = '' # augmented addition is not a simple one for number in ['1', '2', '3']: result += '4' + number result = '' # assignment is not augmented for number in ['1', '2', '3']: result = number result = '' # augmented assignment is not an addition for number in ['1', '2', '3']: result -= number result = '' # addition is not the 'number'-iterable for number in ['1', '2', '3']: result += another_number result = '' for number in ['1', '2', '3']: result += number # [consider-using-join] result = '' for number in ['1']: result.result += number # Does not emit if the body is more complex result = {'context': 1} result['context'] = 0 for number in ['1']: result1 = 42 + int(number) result['context'] += result1 * 24 # Does not crash if the previous sibling does not have AssignNames result['context'] = 0 for number in ['1']: result['context'] += 24 result = '' for number in ['1', '2', '3']: result += f' {result}' # f-string contains wrong name result = '' for number in ['1', '2', '3']: result += f' {number} {number} {number} ' # f-string contains several names