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:
@@ -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
|
||||
|
Reference in New Issue
Block a user