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:
@@ -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:')
|
||||
|
Reference in New Issue
Block a user