mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.1761: Vim9: Some tests are still using :let
Problem: Vim9: Some tests are still using :let. Solution: Change more declarations to use :var.
This commit is contained in:
parent
2914a20abc
commit
ac564082f1
@ -3,6 +3,9 @@
|
||||
source check.vim
|
||||
source vim9.vim
|
||||
|
||||
" TODO: remove later
|
||||
let v:disallow_let = 1
|
||||
|
||||
let s:appendToMe = 'xxx'
|
||||
let s:addToMe = 111
|
||||
let g:existing = 'yes'
|
||||
|
@ -4,12 +4,15 @@ source check.vim
|
||||
source vim9.vim
|
||||
source view_util.vim
|
||||
|
||||
" TODO: remove later
|
||||
let v:disallow_let = 1
|
||||
|
||||
def Test_edit_wildcards()
|
||||
let filename = 'Xtest'
|
||||
var filename = 'Xtest'
|
||||
edit `=filename`
|
||||
assert_equal('Xtest', bufname())
|
||||
|
||||
let filenr = 123
|
||||
var filenr = 123
|
||||
edit Xtest`=filenr`
|
||||
assert_equal('Xtest123', bufname())
|
||||
|
||||
@ -25,7 +28,7 @@ def Test_hardcopy_wildcards()
|
||||
CheckUnix
|
||||
CheckFeature postscript
|
||||
|
||||
let outfile = 'print'
|
||||
var outfile = 'print'
|
||||
hardcopy > X`=outfile`.ps
|
||||
assert_true(filereadable('Xprint.ps'))
|
||||
|
||||
@ -34,10 +37,10 @@ enddef
|
||||
|
||||
def Test_syn_include_wildcards()
|
||||
writefile(['syn keyword Found found'], 'Xthemine.vim')
|
||||
let save_rtp = &rtp
|
||||
var save_rtp = &rtp
|
||||
&rtp = '.'
|
||||
|
||||
let fname = 'mine'
|
||||
var fname = 'mine'
|
||||
syn include @Group Xthe`=fname`.vim
|
||||
assert_match('Found.* contained found', execute('syn list Found'))
|
||||
|
||||
@ -46,7 +49,7 @@ def Test_syn_include_wildcards()
|
||||
enddef
|
||||
|
||||
def Test_echo_linebreak()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
redir @a
|
||||
echo 'one'
|
||||
@ -69,7 +72,7 @@ def Test_echo_linebreak()
|
||||
enddef
|
||||
|
||||
def Test_if_linebreak()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
if 1 &&
|
||||
2
|
||||
@ -98,9 +101,9 @@ def Test_if_linebreak()
|
||||
enddef
|
||||
|
||||
def Test_while_linebreak()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let nr = 0
|
||||
var nr = 0
|
||||
while nr <
|
||||
10 + 3
|
||||
nr = nr
|
||||
@ -112,7 +115,7 @@ def Test_while_linebreak()
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
let nr = 0
|
||||
var nr = 0
|
||||
while nr
|
||||
<
|
||||
10
|
||||
@ -128,9 +131,9 @@ def Test_while_linebreak()
|
||||
enddef
|
||||
|
||||
def Test_for_linebreak()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let nr = 0
|
||||
var nr = 0
|
||||
for x
|
||||
in
|
||||
[1, 2, 3, 4]
|
||||
@ -142,7 +145,7 @@ def Test_for_linebreak()
|
||||
|
||||
lines =<< trim END
|
||||
vim9script
|
||||
let nr = 0
|
||||
var nr = 0
|
||||
for x
|
||||
in
|
||||
[1, 2,
|
||||
@ -158,9 +161,9 @@ def Test_for_linebreak()
|
||||
enddef
|
||||
|
||||
def Test_method_call_linebreak()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let res = []
|
||||
var res = []
|
||||
func RetArg(
|
||||
arg
|
||||
)
|
||||
@ -175,16 +178,16 @@ def Test_method_call_linebreak()
|
||||
enddef
|
||||
|
||||
def Test_dict_member()
|
||||
let test: dict<list<number>> = {'data': [3, 1, 2]}
|
||||
var test: dict<list<number>> = {'data': [3, 1, 2]}
|
||||
test.data->sort()
|
||||
assert_equal(#{data: [1, 2, 3]}, test)
|
||||
test.data
|
||||
->reverse()
|
||||
assert_equal(#{data: [3, 2, 1]}, test)
|
||||
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
let test: dict<list<number>> = {'data': [3, 1, 2]}
|
||||
var test: dict<list<number>> = {'data': [3, 1, 2]}
|
||||
test.data->sort()
|
||||
assert_equal(#{data: [1, 2, 3]}, test)
|
||||
END
|
||||
@ -193,14 +196,14 @@ enddef
|
||||
|
||||
def Test_bar_after_command()
|
||||
def RedrawAndEcho()
|
||||
let x = 'did redraw'
|
||||
var x = 'did redraw'
|
||||
redraw | echo x
|
||||
enddef
|
||||
RedrawAndEcho()
|
||||
assert_match('did redraw', Screenline(&lines))
|
||||
|
||||
def CallAndEcho()
|
||||
let x = 'did redraw'
|
||||
var x = 'did redraw'
|
||||
reg_executing() | echo x
|
||||
enddef
|
||||
CallAndEcho()
|
||||
@ -232,14 +235,14 @@ def Test_bar_after_command()
|
||||
enddef
|
||||
|
||||
def Test_filter_is_not_modifier()
|
||||
let tags = [{'a': 1, 'b': 2}, {'x': 3, 'y': 4}]
|
||||
var tags = [{'a': 1, 'b': 2}, {'x': 3, 'y': 4}]
|
||||
filter(tags, { _, v -> has_key(v, 'x') ? 1 : 0 })
|
||||
assert_equal([#{x: 3, y: 4}], tags)
|
||||
enddef
|
||||
|
||||
def Test_eval_command()
|
||||
let from = 3
|
||||
let to = 5
|
||||
var from = 3
|
||||
var to = 5
|
||||
g:val = 111
|
||||
def Increment(nrs: list<number>)
|
||||
for nr in nrs
|
||||
@ -253,7 +256,7 @@ def Test_eval_command()
|
||||
enddef
|
||||
|
||||
def Test_map_command()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
nnoremap <F3> :echo 'hit F3 #'<CR>
|
||||
assert_equal(":echo 'hit F3 #'<CR>", maparg("<F3>", "n"))
|
||||
END
|
||||
@ -264,7 +267,7 @@ enddef
|
||||
def Test_normal_command()
|
||||
new
|
||||
setline(1, 'doesnotexist')
|
||||
let caught = 0
|
||||
var caught = 0
|
||||
try
|
||||
exe "norm! \<C-]>"
|
||||
catch /E433/
|
||||
|
@ -2,6 +2,9 @@
|
||||
|
||||
source check.vim
|
||||
|
||||
" TODO: remove later
|
||||
let v:disallow_let = 1
|
||||
|
||||
func NotCompiled()
|
||||
echo "not"
|
||||
endfunc
|
||||
@ -13,7 +16,7 @@ let w:windowvar = 'w'
|
||||
let t:tabpagevar = 't'
|
||||
|
||||
def s:ScriptFuncLoad(arg: string)
|
||||
let local = 1
|
||||
var local = 1
|
||||
buffers
|
||||
echo arg
|
||||
echo local
|
||||
@ -41,7 +44,7 @@ def Test_disassemble_load()
|
||||
assert_fails('disass 234', 'E129:')
|
||||
assert_fails('disass <XX>foo', 'E129:')
|
||||
|
||||
let res = execute('disass s:ScriptFuncLoad')
|
||||
var res = execute('disass s:ScriptFuncLoad')
|
||||
assert_match('<SNR>\d*_ScriptFuncLoad.*' ..
|
||||
'buffers.*' ..
|
||||
' EXEC \+buffers.*' ..
|
||||
@ -76,18 +79,18 @@ def Test_disassemble_load()
|
||||
enddef
|
||||
|
||||
def s:EditExpand()
|
||||
let filename = "file"
|
||||
let filenr = 123
|
||||
var filename = "file"
|
||||
var filenr = 123
|
||||
edit the`=filename``=filenr`.txt
|
||||
enddef
|
||||
|
||||
def Test_disassemble_exec_expr()
|
||||
let res = execute('disass s:EditExpand')
|
||||
var res = execute('disass s:EditExpand')
|
||||
assert_match('<SNR>\d*_EditExpand\_s*' ..
|
||||
' let filename = "file"\_s*' ..
|
||||
' var filename = "file"\_s*' ..
|
||||
'\d PUSHS "file"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
' let filenr = 123\_s*' ..
|
||||
' var filenr = 123\_s*' ..
|
||||
'\d STORE 123 in $1\_s*' ..
|
||||
' edit the`=filename``=filenr`.txt\_s*' ..
|
||||
'\d PUSHS "edit the"\_s*' ..
|
||||
@ -107,7 +110,7 @@ def s:YankRange()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_yank_range()
|
||||
let res = execute('disass s:YankRange')
|
||||
var res = execute('disass s:YankRange')
|
||||
assert_match('<SNR>\d*_YankRange.*' ..
|
||||
' norm! m\[jjm\]\_s*' ..
|
||||
'\d EXEC norm! m\[jjm\]\_s*' ..
|
||||
@ -123,7 +126,7 @@ def s:PutExpr()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_put_expr()
|
||||
let res = execute('disass s:PutExpr')
|
||||
var res = execute('disass s:PutExpr')
|
||||
assert_match('<SNR>\d*_PutExpr.*' ..
|
||||
' :3put ="text"\_s*' ..
|
||||
'\d PUSHS "text"\_s*' ..
|
||||
@ -134,16 +137,16 @@ def Test_disassemble_put_expr()
|
||||
enddef
|
||||
|
||||
def s:ScriptFuncPush()
|
||||
let localbool = true
|
||||
let localspec = v:none
|
||||
let localblob = 0z1234
|
||||
var localbool = true
|
||||
var localspec = v:none
|
||||
var localblob = 0z1234
|
||||
if has('float')
|
||||
let localfloat = 1.234
|
||||
var localfloat = 1.234
|
||||
endif
|
||||
enddef
|
||||
|
||||
def Test_disassemble_push()
|
||||
let res = execute('disass s:ScriptFuncPush')
|
||||
var res = execute('disass s:ScriptFuncPush')
|
||||
assert_match('<SNR>\d*_ScriptFuncPush.*' ..
|
||||
'localbool = true.*' ..
|
||||
' PUSH v:true.*' ..
|
||||
@ -161,9 +164,9 @@ def Test_disassemble_push()
|
||||
enddef
|
||||
|
||||
def s:ScriptFuncStore()
|
||||
let localnr = 1
|
||||
var localnr = 1
|
||||
localnr = 2
|
||||
let localstr = 'abc'
|
||||
var localstr = 'abc'
|
||||
localstr = 'xyz'
|
||||
v:char = 'abc'
|
||||
s:scriptvar = 'sv'
|
||||
@ -177,12 +180,12 @@ def s:ScriptFuncStore()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_store()
|
||||
let res = execute('disass s:ScriptFuncStore')
|
||||
var res = execute('disass s:ScriptFuncStore')
|
||||
assert_match('<SNR>\d*_ScriptFuncStore.*' ..
|
||||
'let localnr = 1.*' ..
|
||||
'var localnr = 1.*' ..
|
||||
'localnr = 2.*' ..
|
||||
' STORE 2 in $0.*' ..
|
||||
'let localstr = ''abc''.*' ..
|
||||
'var localstr = ''abc''.*' ..
|
||||
'localstr = ''xyz''.*' ..
|
||||
' STORE $1.*' ..
|
||||
'v:char = ''abc''.*' ..
|
||||
@ -207,16 +210,16 @@ def Test_disassemble_store()
|
||||
enddef
|
||||
|
||||
def s:ScriptFuncStoreMember()
|
||||
let locallist: list<number> = []
|
||||
var locallist: list<number> = []
|
||||
locallist[0] = 123
|
||||
let localdict: dict<number> = {}
|
||||
var localdict: dict<number> = {}
|
||||
localdict["a"] = 456
|
||||
enddef
|
||||
|
||||
def Test_disassemble_store_member()
|
||||
let res = execute('disass s:ScriptFuncStoreMember')
|
||||
var res = execute('disass s:ScriptFuncStoreMember')
|
||||
assert_match('<SNR>\d*_ScriptFuncStoreMember\_s*' ..
|
||||
'let locallist: list<number> = []\_s*' ..
|
||||
'var locallist: list<number> = []\_s*' ..
|
||||
'\d NEWLIST size 0\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'locallist\[0\] = 123\_s*' ..
|
||||
@ -224,7 +227,7 @@ def Test_disassemble_store_member()
|
||||
'\d PUSHNR 0\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d STORELIST\_s*' ..
|
||||
'let localdict: dict<number> = {}\_s*' ..
|
||||
'var localdict: dict<number> = {}\_s*' ..
|
||||
'\d NEWDICT size 0\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
'localdict\["a"\] = 456\_s*' ..
|
||||
@ -238,22 +241,22 @@ def Test_disassemble_store_member()
|
||||
enddef
|
||||
|
||||
def s:ListAssign()
|
||||
let x: string
|
||||
let y: string
|
||||
let l: list<any>
|
||||
var x: string
|
||||
var y: string
|
||||
var l: list<any>
|
||||
[x, y; l] = g:stringlist
|
||||
enddef
|
||||
|
||||
def Test_disassemble_list_assign()
|
||||
let res = execute('disass s:ListAssign')
|
||||
var res = execute('disass s:ListAssign')
|
||||
assert_match('<SNR>\d*_ListAssign\_s*' ..
|
||||
'let x: string\_s*' ..
|
||||
'var x: string\_s*' ..
|
||||
'\d PUSHS "\[NULL\]"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let y: string\_s*' ..
|
||||
'var y: string\_s*' ..
|
||||
'\d PUSHS "\[NULL\]"\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
'let l: list<any>\_s*' ..
|
||||
'var l: list<any>\_s*' ..
|
||||
'\d NEWLIST size 0\_s*' ..
|
||||
'\d STORE $2\_s*' ..
|
||||
'\[x, y; l\] = g:stringlist\_s*' ..
|
||||
@ -281,7 +284,7 @@ def s:ScriptFuncUnlet()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_unlet()
|
||||
let res = execute('disass s:ScriptFuncUnlet')
|
||||
var res = execute('disass s:ScriptFuncUnlet')
|
||||
assert_match('<SNR>\d*_ScriptFuncUnlet\_s*' ..
|
||||
'g:somevar = "value"\_s*' ..
|
||||
'\d PUSHS "value"\_s*' ..
|
||||
@ -306,7 +309,7 @@ def s:ScriptFuncTry()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_try()
|
||||
let res = execute('disass s:ScriptFuncTry')
|
||||
var res = execute('disass s:ScriptFuncTry')
|
||||
assert_match('<SNR>\d*_ScriptFuncTry\_s*' ..
|
||||
'try\_s*' ..
|
||||
'\d TRY catch -> \d\+, finally -> \d\+\_s*' ..
|
||||
@ -333,20 +336,20 @@ def Test_disassemble_try()
|
||||
enddef
|
||||
|
||||
def s:ScriptFuncNew()
|
||||
let ll = [1, "two", 333]
|
||||
let dd = #{one: 1, two: "val"}
|
||||
var ll = [1, "two", 333]
|
||||
var dd = #{one: 1, two: "val"}
|
||||
enddef
|
||||
|
||||
def Test_disassemble_new()
|
||||
let res = execute('disass s:ScriptFuncNew')
|
||||
var res = execute('disass s:ScriptFuncNew')
|
||||
assert_match('<SNR>\d*_ScriptFuncNew\_s*' ..
|
||||
'let ll = \[1, "two", 333\]\_s*' ..
|
||||
'var ll = \[1, "two", 333\]\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHS "two"\_s*' ..
|
||||
'\d PUSHNR 333\_s*' ..
|
||||
'\d NEWLIST size 3\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let dd = #{one: 1, two: "val"}\_s*' ..
|
||||
'var dd = #{one: 1, two: "val"}\_s*' ..
|
||||
'\d PUSHS "one"\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHS "two"\_s*' ..
|
||||
@ -376,15 +379,15 @@ def s:ScriptFuncCall(): string
|
||||
s:ScriptFuncNew()
|
||||
UserFunc()
|
||||
UserFuncWithArg("foo")
|
||||
let FuncRef = function("UserFunc")
|
||||
var FuncRef = function("UserFunc")
|
||||
FuncRef()
|
||||
let FuncRefWithArg = function("UserFuncWithArg")
|
||||
var FuncRefWithArg = function("UserFuncWithArg")
|
||||
FuncRefWithArg("bar")
|
||||
return "yes"
|
||||
enddef
|
||||
|
||||
def Test_disassemble_call()
|
||||
let res = execute('disass s:ScriptFuncCall')
|
||||
var res = execute('disass s:ScriptFuncCall')
|
||||
assert_match('<SNR>\d\+_ScriptFuncCall\_s*' ..
|
||||
'changenr()\_s*' ..
|
||||
'\d BCALL changenr(argc 0)\_s*' ..
|
||||
@ -413,7 +416,7 @@ def Test_disassemble_call()
|
||||
'\d\+ PUSHS "foo"\_s*' ..
|
||||
'\d\+ UCALL UserFuncWithArg(argc 1)\_s*' ..
|
||||
'\d\+ DROP\_s*' ..
|
||||
'let FuncRef = function("UserFunc")\_s*' ..
|
||||
'var FuncRef = function("UserFunc")\_s*' ..
|
||||
'\d\+ PUSHS "UserFunc"\_s*' ..
|
||||
'\d\+ BCALL function(argc 1)\_s*' ..
|
||||
'\d\+ STORE $0\_s*' ..
|
||||
@ -421,7 +424,7 @@ def Test_disassemble_call()
|
||||
'\d\+ LOAD $\d\_s*' ..
|
||||
'\d\+ PCALL (argc 0)\_s*' ..
|
||||
'\d\+ DROP\_s*' ..
|
||||
'let FuncRefWithArg = function("UserFuncWithArg")\_s*' ..
|
||||
'var FuncRefWithArg = function("UserFuncWithArg")\_s*' ..
|
||||
'\d\+ PUSHS "UserFuncWithArg"\_s*' ..
|
||||
'\d\+ BCALL function(argc 1)\_s*' ..
|
||||
'\d\+ STORE $1\_s*' ..
|
||||
@ -437,7 +440,7 @@ def Test_disassemble_call()
|
||||
enddef
|
||||
|
||||
def s:CreateRefs()
|
||||
let local = 'a'
|
||||
var local = 'a'
|
||||
def Append(arg: string)
|
||||
local ..= arg
|
||||
enddef
|
||||
@ -450,7 +453,7 @@ enddef
|
||||
|
||||
def Test_disassemble_closure()
|
||||
CreateRefs()
|
||||
let res = execute('disass g:Append')
|
||||
var res = execute('disass g:Append')
|
||||
assert_match('<lambda>\d\_s*' ..
|
||||
'local ..= arg\_s*' ..
|
||||
'\d LOADOUTER $0\_s*' ..
|
||||
@ -484,7 +487,7 @@ def s:ScriptPCall()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_pcall()
|
||||
let res = execute('disass s:ScriptPCall')
|
||||
var res = execute('disass s:ScriptPCall')
|
||||
assert_match('<SNR>\d\+_ScriptPCall\_s*' ..
|
||||
'RefThis()("text")\_s*' ..
|
||||
'\d DCALL RefThis(argc 0)\_s*' ..
|
||||
@ -507,7 +510,7 @@ def DefinedLater(arg: string): string
|
||||
enddef
|
||||
|
||||
def Test_disassemble_update_instr()
|
||||
let res = execute('disass s:FuncWithForwardCall')
|
||||
var res = execute('disass s:FuncWithForwardCall')
|
||||
assert_match('FuncWithForwardCall\_s*' ..
|
||||
'return g:DefinedLater("yes")\_s*' ..
|
||||
'\d PUSHS "yes"\_s*' ..
|
||||
@ -533,7 +536,7 @@ def FuncWithDefault(arg: string = 'default'): string
|
||||
enddef
|
||||
|
||||
def Test_disassemble_call_default()
|
||||
let res = execute('disass FuncWithDefault')
|
||||
var res = execute('disass FuncWithDefault')
|
||||
assert_match('FuncWithDefault\_s*' ..
|
||||
'\d PUSHS "default"\_s*' ..
|
||||
'\d STORE arg\[-1]\_s*' ..
|
||||
@ -574,7 +577,7 @@ enddef
|
||||
|
||||
def Test_disassemble_const_expr()
|
||||
assert_equal("\nyes", execute('HasEval()'))
|
||||
let instr = execute('disassemble HasEval')
|
||||
var instr = execute('disassemble HasEval')
|
||||
assert_match('HasEval\_s*' ..
|
||||
'if has("eval")\_s*' ..
|
||||
'echo "yes"\_s*' ..
|
||||
@ -630,7 +633,7 @@ def ReturnInIf(): string
|
||||
enddef
|
||||
|
||||
def Test_disassemble_return_in_if()
|
||||
let instr = execute('disassemble ReturnInIf')
|
||||
var instr = execute('disassemble ReturnInIf')
|
||||
assert_match('ReturnInIf\_s*' ..
|
||||
'if g:cond\_s*' ..
|
||||
'0 LOADG g:cond\_s*' ..
|
||||
@ -646,22 +649,22 @@ def Test_disassemble_return_in_if()
|
||||
enddef
|
||||
|
||||
def WithFunc()
|
||||
let Funky1: func
|
||||
let Funky2: func = function("len")
|
||||
let Party2: func = funcref("UserFunc")
|
||||
var Funky1: func
|
||||
var Funky2: func = function("len")
|
||||
var Party2: func = funcref("UserFunc")
|
||||
enddef
|
||||
|
||||
def Test_disassemble_function()
|
||||
let instr = execute('disassemble WithFunc')
|
||||
var instr = execute('disassemble WithFunc')
|
||||
assert_match('WithFunc\_s*' ..
|
||||
'let Funky1: func\_s*' ..
|
||||
'var Funky1: func\_s*' ..
|
||||
'0 PUSHFUNC "\[none]"\_s*' ..
|
||||
'1 STORE $0\_s*' ..
|
||||
'let Funky2: func = function("len")\_s*' ..
|
||||
'var Funky2: func = function("len")\_s*' ..
|
||||
'2 PUSHS "len"\_s*' ..
|
||||
'3 BCALL function(argc 1)\_s*' ..
|
||||
'4 STORE $1\_s*' ..
|
||||
'let Party2: func = funcref("UserFunc")\_s*' ..
|
||||
'var Party2: func = funcref("UserFunc")\_s*' ..
|
||||
'\d PUSHS "UserFunc"\_s*' ..
|
||||
'\d BCALL funcref(argc 1)\_s*' ..
|
||||
'\d STORE $2\_s*' ..
|
||||
@ -672,25 +675,25 @@ enddef
|
||||
|
||||
if has('channel')
|
||||
def WithChannel()
|
||||
let job1: job
|
||||
let job2: job = job_start("donothing")
|
||||
let chan1: channel
|
||||
var job1: job
|
||||
var job2: job = job_start("donothing")
|
||||
var chan1: channel
|
||||
enddef
|
||||
endif
|
||||
|
||||
def Test_disassemble_channel()
|
||||
CheckFeature channel
|
||||
|
||||
let instr = execute('disassemble WithChannel')
|
||||
var instr = execute('disassemble WithChannel')
|
||||
assert_match('WithChannel\_s*' ..
|
||||
'let job1: job\_s*' ..
|
||||
'var job1: job\_s*' ..
|
||||
'\d PUSHJOB "no process"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let job2: job = job_start("donothing")\_s*' ..
|
||||
'var job2: job = job_start("donothing")\_s*' ..
|
||||
'\d PUSHS "donothing"\_s*' ..
|
||||
'\d BCALL job_start(argc 1)\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
'let chan1: channel\_s*' ..
|
||||
'var chan1: channel\_s*' ..
|
||||
'\d PUSHCHANNEL 0\_s*' ..
|
||||
'\d STORE $2\_s*' ..
|
||||
'\d PUSHNR 0\_s*' ..
|
||||
@ -699,15 +702,15 @@ def Test_disassemble_channel()
|
||||
enddef
|
||||
|
||||
def WithLambda(): string
|
||||
let F = {a -> "X" .. a .. "X"}
|
||||
var F = {a -> "X" .. a .. "X"}
|
||||
return F("x")
|
||||
enddef
|
||||
|
||||
def Test_disassemble_lambda()
|
||||
assert_equal("XxX", WithLambda())
|
||||
let instr = execute('disassemble WithLambda')
|
||||
var instr = execute('disassemble WithLambda')
|
||||
assert_match('WithLambda\_s*' ..
|
||||
'let F = {a -> "X" .. a .. "X"}\_s*' ..
|
||||
'var F = {a -> "X" .. a .. "X"}\_s*' ..
|
||||
'\d FUNCREF <lambda>\d\+\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'return F("x")\_s*' ..
|
||||
@ -717,7 +720,7 @@ def Test_disassemble_lambda()
|
||||
'\d RETURN',
|
||||
instr)
|
||||
|
||||
let name = substitute(instr, '.*\(<lambda>\d\+\).*', '\1', '')
|
||||
var name = substitute(instr, '.*\(<lambda>\d\+\).*', '\1', '')
|
||||
instr = execute('disassemble ' .. name)
|
||||
assert_match('<lambda>\d\+\_s*' ..
|
||||
'return "X" .. a .. "X"\_s*' ..
|
||||
@ -738,7 +741,7 @@ def NestedOuter()
|
||||
enddef
|
||||
|
||||
def Test_nested_func()
|
||||
let instr = execute('disassemble NestedOuter')
|
||||
var instr = execute('disassemble NestedOuter')
|
||||
assert_match('NestedOuter\_s*' ..
|
||||
'def g:Inner()\_s*' ..
|
||||
'echomsg "inner"\_s*' ..
|
||||
@ -760,7 +763,7 @@ def Test_disassemble_and_or()
|
||||
assert_equal("yes", AndOr(1))
|
||||
assert_equal("no", AndOr(2))
|
||||
assert_equal("yes", AndOr(4))
|
||||
let instr = execute('disassemble AndOr')
|
||||
var instr = execute('disassemble AndOr')
|
||||
assert_match('AndOr\_s*' ..
|
||||
'if arg == 1 && arg != 2 || arg == 4\_s*' ..
|
||||
'\d LOAD arg\[-1]\_s*' ..
|
||||
@ -779,7 +782,7 @@ def Test_disassemble_and_or()
|
||||
enddef
|
||||
|
||||
def ForLoop(): list<number>
|
||||
let res: list<number>
|
||||
var res: list<number>
|
||||
for i in range(3)
|
||||
res->add(i)
|
||||
endfor
|
||||
@ -788,9 +791,9 @@ enddef
|
||||
|
||||
def Test_disassemble_for_loop()
|
||||
assert_equal([0, 1, 2], ForLoop())
|
||||
let instr = execute('disassemble ForLoop')
|
||||
var instr = execute('disassemble ForLoop')
|
||||
assert_match('ForLoop\_s*' ..
|
||||
'let res: list<number>\_s*' ..
|
||||
'var res: list<number>\_s*' ..
|
||||
'\d NEWLIST size 0\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'for i in range(3)\_s*' ..
|
||||
@ -811,7 +814,7 @@ def Test_disassemble_for_loop()
|
||||
enddef
|
||||
|
||||
def ForLoopEval(): string
|
||||
let res = ""
|
||||
var res = ""
|
||||
for str in eval('["one", "two"]')
|
||||
res ..= str
|
||||
endfor
|
||||
@ -820,9 +823,9 @@ enddef
|
||||
|
||||
def Test_disassemble_for_loop_eval()
|
||||
assert_equal('onetwo', ForLoopEval())
|
||||
let instr = execute('disassemble ForLoopEval')
|
||||
var instr = execute('disassemble ForLoopEval')
|
||||
assert_match('ForLoopEval\_s*' ..
|
||||
'let res = ""\_s*' ..
|
||||
'var res = ""\_s*' ..
|
||||
'\d PUSHS ""\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'for str in eval(''\["one", "two"\]'')\_s*' ..
|
||||
@ -850,13 +853,13 @@ enddef
|
||||
let g:number = 42
|
||||
|
||||
def TypeCast()
|
||||
let l: list<number> = [23, <number>g:number]
|
||||
var l: list<number> = [23, <number>g:number]
|
||||
enddef
|
||||
|
||||
def Test_disassemble_typecast()
|
||||
let instr = execute('disassemble TypeCast')
|
||||
var instr = execute('disassemble TypeCast')
|
||||
assert_match('TypeCast.*' ..
|
||||
'let l: list<number> = \[23, <number>g:number\].*' ..
|
||||
'var l: list<number> = \[23, <number>g:number\].*' ..
|
||||
'\d PUSHNR 23\_s*' ..
|
||||
'\d LOADG g:number\_s*' ..
|
||||
'\d CHECKTYPE number stack\[-1\]\_s*' ..
|
||||
@ -868,22 +871,22 @@ def Test_disassemble_typecast()
|
||||
enddef
|
||||
|
||||
def Computing()
|
||||
let nr = 3
|
||||
let nrres = nr + 7
|
||||
var nr = 3
|
||||
var nrres = nr + 7
|
||||
nrres = nr - 7
|
||||
nrres = nr * 7
|
||||
nrres = nr / 7
|
||||
nrres = nr % 7
|
||||
|
||||
let anyres = g:number + 7
|
||||
var anyres = g:number + 7
|
||||
anyres = g:number - 7
|
||||
anyres = g:number * 7
|
||||
anyres = g:number / 7
|
||||
anyres = g:number % 7
|
||||
|
||||
if has('float')
|
||||
let fl = 3.0
|
||||
let flres = fl + 7.0
|
||||
var fl = 3.0
|
||||
var flres = fl + 7.0
|
||||
flres = fl - 7.0
|
||||
flres = fl * 7.0
|
||||
flres = fl / 7.0
|
||||
@ -891,11 +894,11 @@ def Computing()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_computing()
|
||||
let instr = execute('disassemble Computing')
|
||||
var instr = execute('disassemble Computing')
|
||||
assert_match('Computing.*' ..
|
||||
'let nr = 3.*' ..
|
||||
'var nr = 3.*' ..
|
||||
'\d STORE 3 in $0.*' ..
|
||||
'let nrres = nr + 7.*' ..
|
||||
'var nrres = nr + 7.*' ..
|
||||
'\d LOAD $0.*' ..
|
||||
'\d PUSHNR 7.*' ..
|
||||
'\d OPNR +.*' ..
|
||||
@ -908,7 +911,7 @@ def Test_disassemble_computing()
|
||||
'\d OPNR /.*' ..
|
||||
'nrres = nr % 7.*' ..
|
||||
'\d OPNR %.*' ..
|
||||
'let anyres = g:number + 7.*' ..
|
||||
'var anyres = g:number + 7.*' ..
|
||||
'\d LOADG g:number.*' ..
|
||||
'\d PUSHNR 7.*' ..
|
||||
'\d OPANY +.*' ..
|
||||
@ -924,10 +927,10 @@ def Test_disassemble_computing()
|
||||
instr)
|
||||
if has('float')
|
||||
assert_match('Computing.*' ..
|
||||
'let fl = 3.0.*' ..
|
||||
'var fl = 3.0.*' ..
|
||||
'\d PUSHF 3.0.*' ..
|
||||
'\d STORE $3.*' ..
|
||||
'let flres = fl + 7.0.*' ..
|
||||
'var flres = fl + 7.0.*' ..
|
||||
'\d LOAD $3.*' ..
|
||||
'\d PUSHF 7.0.*' ..
|
||||
'\d OPFLOAT +.*' ..
|
||||
@ -943,14 +946,14 @@ def Test_disassemble_computing()
|
||||
enddef
|
||||
|
||||
def AddListBlob()
|
||||
let reslist = [1, 2] + [3, 4]
|
||||
let resblob = 0z1122 + 0z3344
|
||||
var reslist = [1, 2] + [3, 4]
|
||||
var resblob = 0z1122 + 0z3344
|
||||
enddef
|
||||
|
||||
def Test_disassemble_add_list_blob()
|
||||
let instr = execute('disassemble AddListBlob')
|
||||
var instr = execute('disassemble AddListBlob')
|
||||
assert_match('AddListBlob.*' ..
|
||||
'let reslist = \[1, 2] + \[3, 4].*' ..
|
||||
'var reslist = \[1, 2] + \[3, 4].*' ..
|
||||
'\d PUSHNR 1.*' ..
|
||||
'\d PUSHNR 2.*' ..
|
||||
'\d NEWLIST size 2.*' ..
|
||||
@ -959,7 +962,7 @@ def Test_disassemble_add_list_blob()
|
||||
'\d NEWLIST size 2.*' ..
|
||||
'\d ADDLIST.*' ..
|
||||
'\d STORE $.*.*' ..
|
||||
'let resblob = 0z1122 + 0z3344.*' ..
|
||||
'var resblob = 0z1122 + 0z3344.*' ..
|
||||
'\d PUSHBLOB 0z1122.*' ..
|
||||
'\d PUSHBLOB 0z3344.*' ..
|
||||
'\d ADDBLOB.*' ..
|
||||
@ -969,14 +972,14 @@ enddef
|
||||
|
||||
let g:aa = 'aa'
|
||||
def ConcatString(): string
|
||||
let res = g:aa .. "bb"
|
||||
var res = g:aa .. "bb"
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_concat()
|
||||
let instr = execute('disassemble ConcatString')
|
||||
var instr = execute('disassemble ConcatString')
|
||||
assert_match('ConcatString.*' ..
|
||||
'let res = g:aa .. "bb".*' ..
|
||||
'var res = g:aa .. "bb".*' ..
|
||||
'\d LOADG g:aa.*' ..
|
||||
'\d PUSHS "bb".*' ..
|
||||
'\d 2STRING_ANY stack\[-2].*' ..
|
||||
@ -987,18 +990,18 @@ def Test_disassemble_concat()
|
||||
enddef
|
||||
|
||||
def StringIndex(): string
|
||||
let s = "abcd"
|
||||
let res = s[1]
|
||||
var s = "abcd"
|
||||
var res = s[1]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_string_index()
|
||||
let instr = execute('disassemble StringIndex')
|
||||
var instr = execute('disassemble StringIndex')
|
||||
assert_match('StringIndex\_s*' ..
|
||||
'let s = "abcd"\_s*' ..
|
||||
'var s = "abcd"\_s*' ..
|
||||
'\d PUSHS "abcd"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let res = s\[1]\_s*' ..
|
||||
'var res = s\[1]\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d STRINDEX\_s*' ..
|
||||
@ -1008,18 +1011,18 @@ def Test_disassemble_string_index()
|
||||
enddef
|
||||
|
||||
def StringSlice(): string
|
||||
let s = "abcd"
|
||||
let res = s[1:8]
|
||||
var s = "abcd"
|
||||
var res = s[1:8]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_string_slice()
|
||||
let instr = execute('disassemble StringSlice')
|
||||
var instr = execute('disassemble StringSlice')
|
||||
assert_match('StringSlice\_s*' ..
|
||||
'let s = "abcd"\_s*' ..
|
||||
'var s = "abcd"\_s*' ..
|
||||
'\d PUSHS "abcd"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let res = s\[1:8]\_s*' ..
|
||||
'var res = s\[1:8]\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHNR 8\_s*' ..
|
||||
@ -1030,21 +1033,21 @@ def Test_disassemble_string_slice()
|
||||
enddef
|
||||
|
||||
def ListIndex(): number
|
||||
let l = [1, 2, 3]
|
||||
let res = l[1]
|
||||
var l = [1, 2, 3]
|
||||
var res = l[1]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_list_index()
|
||||
let instr = execute('disassemble ListIndex')
|
||||
var instr = execute('disassemble ListIndex')
|
||||
assert_match('ListIndex\_s*' ..
|
||||
'let l = \[1, 2, 3]\_s*' ..
|
||||
'var l = \[1, 2, 3]\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHNR 2\_s*' ..
|
||||
'\d PUSHNR 3\_s*' ..
|
||||
'\d NEWLIST size 3\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let res = l\[1]\_s*' ..
|
||||
'var res = l\[1]\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d LISTINDEX\_s*' ..
|
||||
@ -1054,21 +1057,21 @@ def Test_disassemble_list_index()
|
||||
enddef
|
||||
|
||||
def ListSlice(): list<number>
|
||||
let l = [1, 2, 3]
|
||||
let res = l[1:8]
|
||||
var l = [1, 2, 3]
|
||||
var res = l[1:8]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_list_slice()
|
||||
let instr = execute('disassemble ListSlice')
|
||||
var instr = execute('disassemble ListSlice')
|
||||
assert_match('ListSlice\_s*' ..
|
||||
'let l = \[1, 2, 3]\_s*' ..
|
||||
'var l = \[1, 2, 3]\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHNR 2\_s*' ..
|
||||
'\d PUSHNR 3\_s*' ..
|
||||
'\d NEWLIST size 3\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let res = l\[1:8]\_s*' ..
|
||||
'var res = l\[1:8]\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHNR 8\_s*' ..
|
||||
@ -1079,21 +1082,21 @@ def Test_disassemble_list_slice()
|
||||
enddef
|
||||
|
||||
def DictMember(): number
|
||||
let d = #{item: 1}
|
||||
let res = d.item
|
||||
var d = #{item: 1}
|
||||
var res = d.item
|
||||
res = d["item"]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_dict_member()
|
||||
let instr = execute('disassemble DictMember')
|
||||
var instr = execute('disassemble DictMember')
|
||||
assert_match('DictMember\_s*' ..
|
||||
'let d = #{item: 1}\_s*' ..
|
||||
'var d = #{item: 1}\_s*' ..
|
||||
'\d PUSHS "item"\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d NEWDICT size 1\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let res = d.item\_s*' ..
|
||||
'var res = d.item\_s*' ..
|
||||
'\d\+ LOAD $0\_s*' ..
|
||||
'\d\+ MEMBER item\_s*' ..
|
||||
'\d\+ STORE $1\_s*' ..
|
||||
@ -1108,14 +1111,14 @@ enddef
|
||||
|
||||
let somelist = [1, 2, 3, 4, 5]
|
||||
def AnyIndex(): number
|
||||
let res = g:somelist[2]
|
||||
var res = g:somelist[2]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_any_index()
|
||||
let instr = execute('disassemble AnyIndex')
|
||||
var instr = execute('disassemble AnyIndex')
|
||||
assert_match('AnyIndex\_s*' ..
|
||||
'let res = g:somelist\[2\]\_s*' ..
|
||||
'var res = g:somelist\[2\]\_s*' ..
|
||||
'\d LOADG g:somelist\_s*' ..
|
||||
'\d PUSHNR 2\_s*' ..
|
||||
'\d ANYINDEX\_s*' ..
|
||||
@ -1129,14 +1132,14 @@ def Test_disassemble_any_index()
|
||||
enddef
|
||||
|
||||
def AnySlice(): list<number>
|
||||
let res = g:somelist[1:3]
|
||||
var res = g:somelist[1:3]
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_any_slice()
|
||||
let instr = execute('disassemble AnySlice')
|
||||
var instr = execute('disassemble AnySlice')
|
||||
assert_match('AnySlice\_s*' ..
|
||||
'let res = g:somelist\[1:3\]\_s*' ..
|
||||
'var res = g:somelist\[1:3\]\_s*' ..
|
||||
'\d LOADG g:somelist\_s*' ..
|
||||
'\d PUSHNR 1\_s*' ..
|
||||
'\d PUSHNR 3\_s*' ..
|
||||
@ -1151,22 +1154,22 @@ def Test_disassemble_any_slice()
|
||||
enddef
|
||||
|
||||
def NegateNumber(): number
|
||||
let nr = 9
|
||||
let plus = +nr
|
||||
let res = -nr
|
||||
var nr = 9
|
||||
var plus = +nr
|
||||
var res = -nr
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_negate_number()
|
||||
let instr = execute('disassemble NegateNumber')
|
||||
var instr = execute('disassemble NegateNumber')
|
||||
assert_match('NegateNumber\_s*' ..
|
||||
'let nr = 9\_s*' ..
|
||||
'var nr = 9\_s*' ..
|
||||
'\d STORE 9 in $0\_s*' ..
|
||||
'let plus = +nr\_s*' ..
|
||||
'var plus = +nr\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d CHECKNR\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
'let res = -nr\_s*' ..
|
||||
'var res = -nr\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d NEGATENR\_s*' ..
|
||||
'\d STORE $2\_s*',
|
||||
@ -1175,23 +1178,23 @@ def Test_disassemble_negate_number()
|
||||
enddef
|
||||
|
||||
def InvertBool(): bool
|
||||
let flag = true
|
||||
let invert = !flag
|
||||
let res = !!flag
|
||||
var flag = true
|
||||
var invert = !flag
|
||||
var res = !!flag
|
||||
return res
|
||||
enddef
|
||||
|
||||
def Test_disassemble_invert_bool()
|
||||
let instr = execute('disassemble InvertBool')
|
||||
var instr = execute('disassemble InvertBool')
|
||||
assert_match('InvertBool\_s*' ..
|
||||
'let flag = true\_s*' ..
|
||||
'var flag = true\_s*' ..
|
||||
'\d PUSH v:true\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'let invert = !flag\_s*' ..
|
||||
'var invert = !flag\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d INVERT (!val)\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
'let res = !!flag\_s*' ..
|
||||
'var res = !!flag\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d 2BOOL (!!val)\_s*' ..
|
||||
'\d STORE $2\_s*',
|
||||
@ -1200,14 +1203,14 @@ def Test_disassemble_invert_bool()
|
||||
enddef
|
||||
|
||||
def ReturnBool(): bool
|
||||
let var: bool = "no" && [] || 123
|
||||
var var: bool = "no" && [] || 123
|
||||
return var
|
||||
enddef
|
||||
|
||||
def Test_disassemble_return_bool()
|
||||
let instr = execute('disassemble ReturnBool')
|
||||
var instr = execute('disassemble ReturnBool')
|
||||
assert_match('ReturnBool\_s*' ..
|
||||
'let var: bool = "no" && \[\] || 123\_s*' ..
|
||||
'var var: bool = "no" && \[\] || 123\_s*' ..
|
||||
'0 PUSHS "no"\_s*' ..
|
||||
'1 JUMP_AND_KEEP_IF_FALSE -> 3\_s*' ..
|
||||
'2 NEWLIST size 0\_s*' ..
|
||||
@ -1223,7 +1226,7 @@ def Test_disassemble_return_bool()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_compare()
|
||||
let cases = [
|
||||
var cases = [
|
||||
['true == isFalse', 'COMPAREBOOL =='],
|
||||
['true != isFalse', 'COMPAREBOOL !='],
|
||||
['v:none == isNull', 'COMPARESPECIAL =='],
|
||||
@ -1279,7 +1282,7 @@ def Test_disassemble_compare()
|
||||
['77 is g:xx', 'COMPAREANY is'],
|
||||
['77 isnot g:xx', 'COMPAREANY isnot'],
|
||||
]
|
||||
let floatDecl = ''
|
||||
var floatDecl = ''
|
||||
if has('float')
|
||||
cases->extend([
|
||||
['1.1 == aFloat', 'COMPAREFLOAT =='],
|
||||
@ -1291,27 +1294,27 @@ def Test_disassemble_compare()
|
||||
['1.1 =~ aFloat', 'COMPAREFLOAT =\~'],
|
||||
['1.1 !~ aFloat', 'COMPAREFLOAT !\~'],
|
||||
])
|
||||
floatDecl = 'let aFloat = 2.2'
|
||||
floatDecl = 'var aFloat = 2.2'
|
||||
endif
|
||||
|
||||
let nr = 1
|
||||
var nr = 1
|
||||
for case in cases
|
||||
# declare local variables to get a non-constant with the right type
|
||||
writefile(['def TestCase' .. nr .. '()',
|
||||
' let isFalse = false',
|
||||
' let isNull = v:null',
|
||||
' let aNumber = 222',
|
||||
' let aString = "yy"',
|
||||
' let aBlob = 0z22',
|
||||
' let aList = [3, 4]',
|
||||
' let aDict = #{x: 2}',
|
||||
' var isFalse = false',
|
||||
' var isNull = v:null',
|
||||
' var aNumber = 222',
|
||||
' var aString = "yy"',
|
||||
' var aBlob = 0z22',
|
||||
' var aList = [3, 4]',
|
||||
' var aDict = #{x: 2}',
|
||||
floatDecl,
|
||||
' if ' .. case[0],
|
||||
' echo 42'
|
||||
' endif',
|
||||
'enddef'], 'Xdisassemble')
|
||||
source Xdisassemble
|
||||
let instr = execute('disassemble TestCase' .. nr)
|
||||
var instr = execute('disassemble TestCase' .. nr)
|
||||
assert_match('TestCase' .. nr .. '.*' ..
|
||||
'if ' .. substitute(case[0], '[[~]', '\\\0', 'g') .. '.*' ..
|
||||
'\d \(PUSH\|FUNCREF\).*' ..
|
||||
@ -1327,14 +1330,14 @@ def Test_disassemble_compare()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_compare_const()
|
||||
let cases = [
|
||||
var cases = [
|
||||
['"xx" == "yy"', false],
|
||||
['"aa" == "aa"', true],
|
||||
['has("eval") ? true : false', true],
|
||||
['has("asdf") ? true : false', false],
|
||||
]
|
||||
|
||||
let nr = 1
|
||||
var nr = 1
|
||||
for case in cases
|
||||
writefile(['def TestCase' .. nr .. '()',
|
||||
' if ' .. case[0],
|
||||
@ -1342,7 +1345,7 @@ def Test_disassemble_compare_const()
|
||||
' endif',
|
||||
'enddef'], 'Xdisassemble')
|
||||
source Xdisassemble
|
||||
let instr = execute('disassemble TestCase' .. nr)
|
||||
var instr = execute('disassemble TestCase' .. nr)
|
||||
if case[1]
|
||||
# condition true, "echo 42" executed
|
||||
assert_match('TestCase' .. nr .. '.*' ..
|
||||
@ -1371,25 +1374,25 @@ enddef
|
||||
|
||||
def s:Execute()
|
||||
execute 'help vim9.txt'
|
||||
let cmd = 'help vim9.txt'
|
||||
var cmd = 'help vim9.txt'
|
||||
execute cmd
|
||||
let tag = 'vim9.txt'
|
||||
var tag = 'vim9.txt'
|
||||
execute 'help ' .. tag
|
||||
enddef
|
||||
|
||||
def Test_disassemble_execute()
|
||||
let res = execute('disass s:Execute')
|
||||
var res = execute('disass s:Execute')
|
||||
assert_match('\<SNR>\d*_Execute\_s*' ..
|
||||
"execute 'help vim9.txt'\\_s*" ..
|
||||
'\d PUSHS "help vim9.txt"\_s*' ..
|
||||
'\d EXECUTE 1\_s*' ..
|
||||
"let cmd = 'help vim9.txt'\\_s*" ..
|
||||
"var cmd = 'help vim9.txt'\\_s*" ..
|
||||
'\d PUSHS "help vim9.txt"\_s*' ..
|
||||
'\d STORE $0\_s*' ..
|
||||
'execute cmd\_s*' ..
|
||||
'\d LOAD $0\_s*' ..
|
||||
'\d EXECUTE 1\_s*' ..
|
||||
"let tag = 'vim9.txt'\\_s*" ..
|
||||
"var tag = 'vim9.txt'\\_s*" ..
|
||||
'\d PUSHS "vim9.txt"\_s*' ..
|
||||
'\d STORE $1\_s*' ..
|
||||
"execute 'help ' .. tag\\_s*" ..
|
||||
@ -1408,7 +1411,7 @@ def s:Echomsg()
|
||||
enddef
|
||||
|
||||
def Test_disassemble_echomsg()
|
||||
let res = execute('disass s:Echomsg')
|
||||
var res = execute('disass s:Echomsg')
|
||||
assert_match('\<SNR>\d*_Echomsg\_s*' ..
|
||||
"echomsg 'some' 'message'\\_s*" ..
|
||||
'\d PUSHS "some"\_s*' ..
|
||||
@ -1435,19 +1438,19 @@ def SomeStringArgAndReturn(arg: string): string
|
||||
enddef
|
||||
|
||||
def Test_display_func()
|
||||
let res1 = execute('function SomeStringArg')
|
||||
var res1 = execute('function SomeStringArg')
|
||||
assert_match('.* def SomeStringArg(arg: string)\_s*' ..
|
||||
'\d *echo arg.*' ..
|
||||
' *enddef',
|
||||
res1)
|
||||
|
||||
let res2 = execute('function SomeAnyArg')
|
||||
var res2 = execute('function SomeAnyArg')
|
||||
assert_match('.* def SomeAnyArg(arg: any)\_s*' ..
|
||||
'\d *echo arg\_s*' ..
|
||||
' *enddef',
|
||||
res2)
|
||||
|
||||
let res3 = execute('function SomeStringArgAndReturn')
|
||||
var res3 = execute('function SomeStringArgAndReturn')
|
||||
assert_match('.* def SomeStringArgAndReturn(arg: string): string\_s*' ..
|
||||
'\d *return arg\_s*' ..
|
||||
' *enddef',
|
||||
@ -1455,7 +1458,7 @@ def Test_display_func()
|
||||
enddef
|
||||
|
||||
def Test_vim9script_forward_func()
|
||||
let lines =<< trim END
|
||||
var lines =<< trim END
|
||||
vim9script
|
||||
def FuncOne(): string
|
||||
return FuncTwo()
|
||||
@ -1492,7 +1495,7 @@ def s:ComputeConstParen(): number
|
||||
enddef
|
||||
|
||||
def Test_simplify_const_expr()
|
||||
let res = execute('disass s:ConcatStrings')
|
||||
var res = execute('disass s:ConcatStrings')
|
||||
assert_match('<SNR>\d*_ConcatStrings\_s*' ..
|
||||
"return 'one' .. 'two' .. 'three'\\_s*" ..
|
||||
'\d PUSHS "onetwothree"\_s*' ..
|
||||
@ -1519,7 +1522,7 @@ def s:CallAppend()
|
||||
enddef
|
||||
|
||||
def Test_shuffle()
|
||||
let res = execute('disass s:CallAppend')
|
||||
var res = execute('disass s:CallAppend')
|
||||
assert_match('<SNR>\d*_CallAppend\_s*' ..
|
||||
'eval "some text"->append(2)\_s*' ..
|
||||
'\d PUSHS "some text"\_s*' ..
|
||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1761,
|
||||
/**/
|
||||
1760,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user