Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 27948:f57b8db06f26 v8.2.4499
patch 8.2.4499: Vim9: at the script level declarations leak to next block
Commit: https://github.com/vim/vim/commit/28bf649a5732ffe5a47951b5e437b765cebc5b38
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Mar 3 15:11:20 2022 +0000
patch 8.2.4499: Vim9: at the script level declarations leak to next block
Problem: Vim9: at the script level declarations leak from try block to
catch and finally block.
Solution: End the block and start a new one. (closes #9883)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 03 Mar 2022 16:15:03 +0100 |
parents | b081ba78675a |
children | aacc98a38cf3 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -763,6 +763,30 @@ def Test_try_catch_throw() v9.CheckDefAndScriptSuccess(lines) enddef +def Test_try_var_decl() + var lines =<< trim END + vim9script + try + var in_try = 1 + assert_equal(1, get(s:, 'in_try', -1)) + throw "getout" + catch + var in_catch = 2 + assert_equal(-1, get(s:, 'in_try', -1)) + assert_equal(2, get(s:, 'in_catch', -1)) + finally + var in_finally = 3 + assert_equal(-1, get(s:, 'in_try', -1)) + assert_equal(-1, get(s:, 'in_catch', -1)) + assert_equal(3, get(s:, 'in_finally', -1)) + endtry + assert_equal(-1, get(s:, 'in_try', -1)) + assert_equal(-1, get(s:, 'in_catch', -1)) + assert_equal(-1, get(s:, 'in_finally', -1)) + END + v9.CheckScriptSuccess(lines) +enddef + def Test_try_ends_in_return() var lines =<< trim END vim9script