mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
patch 8.2.1824: Vim9: variables at the script level escape their scope
Problem: Vim9: variables at the script level escape their scope. Solution: When leaving a scope remove variables declared in it.
This commit is contained in:
@@ -2685,6 +2685,56 @@ def Run_Test_define_func_at_command_line()
|
||||
delete('Xdidcmd')
|
||||
enddef
|
||||
|
||||
def Test_script_var_scope()
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
if true
|
||||
if true
|
||||
var one = 'one'
|
||||
echo one
|
||||
endif
|
||||
echo one
|
||||
endif
|
||||
END
|
||||
CheckScriptFailure(lines, 'E121:', 7)
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
if true
|
||||
if false
|
||||
var one = 'one'
|
||||
echo one
|
||||
else
|
||||
var one = 'one'
|
||||
echo one
|
||||
endif
|
||||
echo one
|
||||
endif
|
||||
END
|
||||
CheckScriptFailure(lines, 'E121:', 10)
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
while true
|
||||
var one = 'one'
|
||||
echo one
|
||||
break
|
||||
endwhile
|
||||
echo one
|
||||
END
|
||||
CheckScriptFailure(lines, 'E121:', 7)
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
for i in range(1)
|
||||
var one = 'one'
|
||||
echo one
|
||||
endfor
|
||||
echo one
|
||||
END
|
||||
CheckScriptFailure(lines, 'E121:', 6)
|
||||
enddef
|
||||
|
||||
" Keep this last, it messes up highlighting.
|
||||
def Test_substitute_cmd()
|
||||
new
|
||||
|
Reference in New Issue
Block a user