Mercurial > vim
diff src/testdir/test_vim9_assign.vim @ 27669:5c4ab8d4472c v8.2.4360
patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Commit: https://github.com/vim/vim/commit/a749a42ed25534c88c636e5ab6603f1f97b857a4
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 12 19:52:25 2022 +0000
patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
Problem: Vim9: allowing use of "s:" leads to inconsistencies.
Solution: Disallow using "s:" in Vim9 script at the script level.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 12 Feb 2022 21:00:03 +0100 |
parents | f40647a2b36a |
children | 4097434c7c67 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -6,6 +6,7 @@ source term_util.vim let s:appendToMe = 'xxx' let s:addToMe = 111 +let s:newVar = '' let g:existing = 'yes' let g:inc_counter = 1 let $SOME_ENV_VAR = 'some' @@ -124,12 +125,12 @@ def Test_assignment() END v9.CheckScriptSuccess(lines) - s:appendToMe ..= 'yyy' - assert_equal('xxxyyy', s:appendToMe) - s:addToMe += 222 - assert_equal(333, s:addToMe) - s:newVar = 'new' - assert_equal('new', s:newVar) + appendToMe ..= 'yyy' + assert_equal('xxxyyy', appendToMe) + addToMe += 222 + assert_equal(333, addToMe) + newVar = 'new' + assert_equal('new', newVar) set ts=7 var ts: number = &ts @@ -1195,7 +1196,7 @@ def Test_assignment_default() assert_equal(5678, nr) enddef -let scriptvar = 'init' +let s:scriptvar = 'init' def Test_assignment_var_list() var lines =<< trim END @@ -1243,17 +1244,17 @@ def Test_assignment_var_list() END v9.CheckDefAndScriptSuccess(lines) - [g:globalvar, s:scriptvar, b:bufvar] = ['global', 'script', 'buf'] + [g:globalvar, scriptvar, b:bufvar] = ['global', 'script', 'buf'] assert_equal('global', g:globalvar) - assert_equal('script', s:scriptvar) + assert_equal('script', scriptvar) assert_equal('buf', b:bufvar) lines =<< trim END vim9script - var s:scriptvar = 'init' - [g:globalvar, s:scriptvar, w:winvar] = ['global', 'script', 'win'] + var scriptvar = 'init' + [g:globalvar, scriptvar, w:winvar] = ['global', 'script', 'win'] assert_equal('global', g:globalvar) - assert_equal('script', s:scriptvar) + assert_equal('script', scriptvar) assert_equal('win', w:winvar) END v9.CheckScriptSuccess(lines) @@ -1398,7 +1399,7 @@ def Test_assignment_failure() v9.CheckDefFailure(["var xnr = xnr + 1"], 'E1001:', 1) v9.CheckScriptFailure(['vim9script', 'var xnr = xnr + 4'], 'E121:') - v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = s:notfound', 'enddef', 'defcompile'], 'E1108:') + v9.CheckScriptFailure(['vim9script', 'def Func()', 'var dummy = notfound', 'enddef', 'defcompile'], 'E1001:') v9.CheckDefFailure(['var name: list<string> = [123]'], 'expected list<string> but got list<number>') v9.CheckDefFailure(['var name: list<number> = ["xx"]'], 'expected list<number> but got list<string>') @@ -1719,9 +1720,9 @@ def Test_var_declaration() g:var_uninit = name name = 'text' g:var_test = name - # prefixing s: is optional - s:name = 'prefixed' - g:var_prefixed = s:name + # prefixing s: is not allowed + name = 'prefixed' + g:var_prefixed = name const FOO: number = 123 assert_equal(123, FOO) @@ -1764,9 +1765,9 @@ def Test_var_declaration() var xyz: string # comment # type is inferred - var s:dict = {['a']: 222} + var dict = {['a']: 222} def GetDictVal(key: any) - g:dict_val = s:dict[key] + g:dict_val = dict[key] enddef GetDictVal('a') @@ -1879,13 +1880,13 @@ def Test_var_declaration_fails() enddef def Test_script_local_in_legacy() - # OK to define script-local later when prefixed with s: + # OK to define script-local later but before compiling var lines =<< trim END def SetLater() - s:legvar = 'two' + legvar = 'two' enddef + let s:legvar = 'one' defcompile - let s:legvar = 'one' call SetLater() call assert_equal('two', s:legvar) END @@ -1902,7 +1903,7 @@ def Test_script_local_in_legacy() END v9.CheckScriptSuccess(lines) - # Not OK to leave out s: prefix when script-local defined later + # Not OK to leave out s: prefix when script-local defined after compiling lines =<< trim END def SetLaterNoPrefix() legvar = 'two' @@ -1944,15 +1945,15 @@ def Test_var_type_check() lines =<< trim END vim9script - var s:l: list<number> - s:l = [] + var l: list<number> + l = [] END v9.CheckScriptSuccess(lines) lines =<< trim END vim9script - var s:d: dict<number> - s:d = {} + var d: dict<number> + d = {} END v9.CheckScriptSuccess(lines) @@ -2124,7 +2125,7 @@ def Test_unlet() 'vim9script', 'var svar = 123', 'unlet s:svar', - ], 'E1081:') + ], 'E1268:') v9.CheckScriptFailure([ 'vim9script', 'var svar = 123', @@ -2267,14 +2268,14 @@ def Test_script_funcref_case() lines =<< trim END vim9script - var s:Len = (s: string): number => len(s) + 2 + var Len = (s: string): number => len(s) + 2 assert_equal(6, Len('asdf')) END v9.CheckScriptSuccess(lines) lines =<< trim END vim9script - var s:len = (s: string): number => len(s) + 1 + var len = (s: string): number => len(s) + 1 END v9.CheckScriptFailure(lines, 'E704:') enddef