diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-04-06 21:17:27 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-04-06 21:17:27 +0200 |
commit | 643ce6c0c694667a2afd24bb39d8e9d36d94d7a9 (patch) | |
tree | e9fb101fb1bc6e4b24291bcdf8100c1428af0bfe /src/testdir/test_vim9_assign.vim | |
parent | e3d1f4c982bd0fe05496448d7868268c75ff7bfb (diff) | |
download | vim-git-643ce6c0c694667a2afd24bb39d8e9d36d94d7a9.tar.gz |
patch 8.2.2729: Vim9: wrong error message for referring to legacy script varv8.2.2729
Problem: Vim9: wrong error message for referring to legacy script variable.
Solution: Do allow referring to a variable in legacy script without "s:" if
it exists at compile time. (closes #8076)
Diffstat (limited to 'src/testdir/test_vim9_assign.vim')
-rw-r--r-- | src/testdir/test_vim9_assign.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 73351b44f..c35084d55 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1476,6 +1476,41 @@ def Test_var_declaration_fails() CheckDefFailure(['const foo: number'], 'E1021:') enddef +def Test_script_local_in_legacy() + # OK to define script-local later when prefixed with s: + var lines =<< trim END + def SetLater() + s:legacy = 'two' + enddef + defcompile + let s:legacy = 'one' + call SetLater() + call assert_equal('two', s:legacy) + END + CheckScriptSuccess(lines) + + # OK to leave out s: prefix when script-local already defined + lines =<< trim END + let s:legacy = 'one' + def SetNoPrefix() + legacy = 'two' + enddef + call SetNoPrefix() + call assert_equal('two', s:legacy) + END + CheckScriptSuccess(lines) + + # Not OK to leave out s: prefix when script-local defined later + lines =<< trim END + def SetLaterNoPrefix() + legacy = 'two' + enddef + defcompile + let s:legacy = 'one' + END + CheckScriptFailure(lines, 'E476:', 1) +enddef + def Test_var_type_check() var lines =<< trim END vim9script |