summaryrefslogtreecommitdiff
path: root/pylint/test/functional/consider_join.py
blob: 24cd6dd49bf5c82bbfed0b5e21082da894dabdaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 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 = 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