mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
autofree: make -experimental the default
This commit is contained in:
parent
f135a9949c
commit
fcd127ed87
@ -1028,8 +1028,7 @@ pub fn (mut c Checker) call_expr(mut call_expr ast.CallExpr) table.Type {
|
||||
// Now call `call_method` or `call_fn` for specific checks.
|
||||
typ := if call_expr.is_method { c.call_method(mut call_expr) } else { c.call_fn(mut call_expr) }
|
||||
// autofree: mark args that have to be freed (after saving them in tmp exprs)
|
||||
free_tmp_arg_vars := c.pref.autofree && c.pref.experimental && !c.is_builtin_mod &&
|
||||
call_expr.args.len > 0 && !call_expr.args[0].typ.has_flag(.optional)
|
||||
free_tmp_arg_vars := c.pref.autofree && !c.is_builtin_mod && call_expr.args.len > 0 && !call_expr.args[0].typ.has_flag(.optional)
|
||||
if free_tmp_arg_vars && !c.inside_const {
|
||||
for i, arg in call_expr.args {
|
||||
if arg.typ != table.string_type {
|
||||
|
@ -747,7 +747,7 @@ fn (mut g Gen) stmts_with_tmp_var(stmts []ast.Stmt, tmp_var string) {
|
||||
g.write('')
|
||||
g.write(')')
|
||||
}
|
||||
if g.pref.autofree && g.pref.experimental && !g.inside_vweb_tmpl && stmts.len > 0 {
|
||||
if g.pref.autofree && !g.inside_vweb_tmpl && stmts.len > 0 {
|
||||
// use the first stmt to get the scope
|
||||
stmt := stmts[0]
|
||||
// stmt := stmts[stmts.len-1]
|
||||
|
@ -638,8 +638,7 @@ fn (mut g Gen) autofree_call_pregen(node ast.CallExpr) {
|
||||
// g.writeln('// autofree_call_pregen()')
|
||||
// Create a temporary var before fn call for each argument in order to free it (only if it's a complex expression,
|
||||
// like `foo(get_string())` or `foo(a + b)`
|
||||
mut free_tmp_arg_vars := g.autofree && g.pref.experimental && !g.is_builtin_mod &&
|
||||
node.args.len > 0 && !node.args[0].typ.has_flag(.optional) // TODO copy pasta checker.v
|
||||
mut free_tmp_arg_vars := g.autofree && !g.is_builtin_mod && node.args.len > 0 && !node.args[0].typ.has_flag(.optional) // TODO copy pasta checker.v
|
||||
if !free_tmp_arg_vars {
|
||||
return
|
||||
}
|
||||
@ -778,8 +777,8 @@ fn (mut g Gen) call_args(node ast.CallExpr) {
|
||||
if gen_vargs && i == expected_types.len - 1 {
|
||||
break
|
||||
}
|
||||
use_tmp_var_autofree := g.autofree && g.pref.experimental && arg.typ == table.string_type &&
|
||||
arg.is_tmp_autofree && !g.inside_const
|
||||
use_tmp_var_autofree := g.autofree && arg.typ == table.string_type && arg.is_tmp_autofree &&
|
||||
!g.inside_const
|
||||
// g.write('/* af=$arg.is_tmp_autofree */')
|
||||
mut is_interface := false
|
||||
// some c fn definitions dont have args (cfns.v) or are not updated in checker
|
||||
|
Loading…
Reference in New Issue
Block a user