0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

patch 8.2.4447: Vim9: can still use s:var in a compiled function

Problem:    Vim9: can still use s:var in a compiled function.
Solution:   Disallow using s:var for Vim9 script. (closes #9824)
This commit is contained in:
Bram Moolenaar
2022-02-22 20:43:36 +00:00
parent fe73255c92
commit afa048f0d4
5 changed files with 68 additions and 8 deletions

View File

@@ -220,7 +220,7 @@ def Test_assignment()
enddef
defcompile
END
v9.CheckScriptFailure(lines, 'E1089:')
v9.CheckScriptFailure(lines, 'E1268:')
g:inc_counter += 1
assert_equal(2, g:inc_counter)
@@ -2460,6 +2460,49 @@ def Run_Test_declare_command_line()
g:StopVimInTerminal(buf)
enddef
def Test_using_s_var_in_function()
var lines =<< trim END
vim9script
var scriptlevel = 123
def SomeFunc()
echo s:scriptlevel
enddef
SomeFunc()
END
v9.CheckScriptFailure(lines, 'E1268:')
# OK in legacy script
lines =<< trim END
let s:scriptlevel = 123
def s:SomeFunc()
echo s:scriptlevel
enddef
call s:SomeFunc()
END
v9.CheckScriptSuccess(lines)
lines =<< trim END
vim9script
var scriptlevel = 123
def SomeFunc()
s:scriptlevel = 456
enddef
SomeFunc()
END
v9.CheckScriptFailure(lines, 'E1268:')
# OK in legacy script
lines =<< trim END
let s:scriptlevel = 123
def s:SomeFunc()
s:scriptlevel = 456
enddef
call s:SomeFunc()
call assert_equal(456, s:scriptlevel)
END
v9.CheckScriptSuccess(lines)
enddef
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker