Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 22551:86a115a80262 v8.2.1824
patch 8.2.1824: Vim9: variables at the script level escape their scope
Commit: https://github.com/vim/vim/commit/fcdc5d83fbfd7ddce634769ea902e58c87f27f20
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Oct 10 19:07:09 2020 +0200
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 10 Oct 2020 19:15:04 +0200 |
parents | 35ef9b0a81a3 |
children | 7d25264c246c |
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -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