Revert "autofree: handle tmp vars in for loops"

This reverts commit 1d6c604664.
pull/7152/head
Delyan Angelov 2020-12-05 21:52:50 +02:00
parent e2e0c625f1
commit 946a1418fe
No known key found for this signature in database
GPG Key ID: 66886C0F12D595ED
4 changed files with 2 additions and 16 deletions

View File

@ -369,9 +369,8 @@ pub mut:
pos token.Position
is_used bool
is_changed bool // to detect mutable vars that are never changed
// (for setting the position after the or block for autofree)
is_or bool // `x := foo() or { ... }`
is_tmp bool // for tmp for loop vars, so that autofree can skip them
// (for setting the position after the or block for autofree)
}
// used for smartcasting only

View File

@ -2100,14 +2100,9 @@ fn (mut g Gen) autofree_scope_vars2(scope &ast.Scope, start_pos int, end_pos int
continue
}
if obj.is_or {
g.writeln('// skipping `or{}` var "$obj.name"')
// Skip vars inited with the `or {}`, since they are generated
// after the or block in C.
g.writeln('// skipping `or{}` var "$obj.name"')
continue
}
if obj.is_tmp {
// Skip for loop vars
g.writeln('// skipping tmp var "$obj.name"')
continue
}
// if var.typ == 0 {

View File

@ -105,7 +105,6 @@ fn (mut p Parser) for_stmt() ast.Stmt {
name: key_var_name
typ: table.int_type
pos: key_var_pos
is_tmp: true
})
} else if p.scope.known_var(val_var_name) {
p.error('redefinition of value iteration variable `$val_var_name`')
@ -131,7 +130,6 @@ fn (mut p Parser) for_stmt() ast.Stmt {
name: val_var_name
typ: table.int_type
pos: val_var_pos
is_tmp: true
})
if key_var_name.len > 0 {
p.error_with_pos('cannot declare index variable with range `for`', key_var_pos)
@ -143,7 +141,6 @@ fn (mut p Parser) for_stmt() ast.Stmt {
name: val_var_name
pos: val_var_pos
is_mut: val_is_mut
is_tmp: true
})
}
p.inside_for = false

View File

@ -291,11 +291,6 @@ fn free_before_break() {
continue
}
}
x := ['1', '2', '3']
for n in x {
f := 'f'
println('$n => $f')
}
}
struct User {