1
0
forked from aniani/vim

patch 8.2.3216: Vim9: crash when using variable in a loop at script level

Problem:    Vim9: crash when using variable in a loop at script level.
Solution:   Do not clear the variable if a function was defined.
            Do not create a new entry in sn_var_vals every time.
            (closes #8628)
This commit is contained in:
Bram Moolenaar
2021-07-25 14:13:53 +02:00
parent 5bca906b30
commit 2eb6fc3b52
8 changed files with 136 additions and 77 deletions

View File

@@ -2592,6 +2592,34 @@ def Test_for_loop()
CheckDefAndScriptSuccess(lines)
enddef
def Test_for_loop_with_closure()
var lines =<< trim END
var flist: list<func>
for i in range(5)
var inloop = i
flist[i] = () => inloop
endfor
for i in range(5)
assert_equal(4, flist[i]())
endfor
END
CheckDefAndScriptSuccess(lines)
lines =<< trim END
var flist: list<func>
for i in range(5)
var inloop = i
flist[i] = () => {
return inloop
}
endfor
for i in range(5)
assert_equal(4, flist[i]())
endfor
END
CheckDefAndScriptSuccess(lines)
enddef
def Test_for_loop_fails()
CheckDefAndScriptFailure2(['for '], 'E1097:', 'E690:')
CheckDefAndScriptFailure2(['for x'], 'E1097:', 'E690:')