@@ -144,24 +144,6 @@ fn (mut p Parser) partial_assign_stmt(left []ast.Expr, left_comments []ast.Comme
144
144
comments << right_comments
145
145
end_comments := p.eat_comments (same_line: true )
146
146
mut has_cross_var := false
147
- if op == .decl_assign {
148
- // a, b := a + 1, b
149
- for r in right {
150
- p.check_undefined_variables (left, r) or { return p.error_with_pos (err.msg, pos) }
151
- }
152
- } else if left.len > 1 {
153
- // a, b = b, a
154
- for r in right {
155
- has_cross_var = p.check_cross_variables (left, r)
156
- if op ! in [.assign, .decl_assign] {
157
- return p.error_with_pos ('unexpected $op.str (), expecting := or = or comma' ,
158
- pos)
159
- }
160
- if has_cross_var {
161
- break
162
- }
163
- }
164
- }
165
147
mut is_static := false
166
148
mut is_volatile := false
167
149
for i, lx in left {
@@ -232,6 +214,24 @@ fn (mut p Parser) partial_assign_stmt(left []ast.Expr, left_comments []ast.Comme
232
214
}
233
215
}
234
216
}
217
+ if op == .decl_assign {
218
+ // a, b := a + 1, b
219
+ for r in right {
220
+ p.check_undefined_variables (left, r) or { return p.error_with_pos (err.msg, pos) }
221
+ }
222
+ } else if left.len > 1 {
223
+ // a, b = b, a
224
+ for r in right {
225
+ has_cross_var = p.check_cross_variables (left, r)
226
+ if op ! in [.assign, .decl_assign] {
227
+ return p.error_with_pos ('unexpected $op.str (), expecting := or = or comma' ,
228
+ pos)
229
+ }
230
+ if has_cross_var {
231
+ break
232
+ }
233
+ }
234
+ }
235
235
pos.update_last_line (p.prev_tok.line_nr)
236
236
return ast.AssignStmt{
237
237
op: op
0 commit comments