Mercurial > vim
diff src/testdir/test_vim9_disassemble.vim @ 27457:4c16acb2525f v8.2.4257
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Commit: https://github.com/vim/vim/commit/62aec93bfdb9e1b40d03a6d2e8e9511f8b1bdb2d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 29 21:45:34 2022 +0000
patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent
Problem: Vim9: finding global function without g: prefix but not finding
global variable is inconsistent.
Solution: Require using g: for a global function. Change the vim9.vim
script into a Vim9 script with exports. Fix that import in legacy
script does not work.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 29 Jan 2022 23:00:05 +0100 |
parents | 69a48bcd1d80 |
children | a14c4d3e3260 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -1,9 +1,9 @@ " Test the :disassemble command, and compilation as a side effect source check.vim -source vim9.vim +import './vim9.vim' as v9 -func NotCompiled() +func s:NotCompiled() echo "not" endfunc @@ -312,7 +312,7 @@ def Test_disassemble_push() '2 RETURN void', res) END - CheckScriptSuccess(lines) + v9.CheckScriptSuccess(lines) delete('Xdir', 'rf') &rtp = save_rtp @@ -690,22 +690,22 @@ def Test_disassemble_new() res) enddef -def FuncWithArg(arg: any) +def s:FuncWithArg(arg: any) echo arg enddef -func UserFunc() +func s:UserFunc() echo 'nothing' endfunc -func UserFuncWithArg(arg) +func s:UserFuncWithArg(arg) echo a:arg endfunc def s:ScriptFuncCall(): string changenr() char2nr("abc") - Test_disassemble_new() + g:Test_disassemble_new() FuncWithArg(343) ScriptFuncNew() s:ScriptFuncNew() @@ -728,12 +728,12 @@ def Test_disassemble_call() '\d PUSHS "abc"\_s*' .. '\d BCALL char2nr(argc 1)\_s*' .. '\d DROP\_s*' .. - 'Test_disassemble_new()\_s*' .. + 'g:Test_disassemble_new()\_s*' .. '\d DCALL Test_disassemble_new(argc 0)\_s*' .. '\d DROP\_s*' .. 'FuncWithArg(343)\_s*' .. '\d\+ PUSHNR 343\_s*' .. - '\d\+ DCALL FuncWithArg(argc 1)\_s*' .. + '\d\+ DCALL <SNR>\d\+_FuncWithArg(argc 1)\_s*' .. '\d\+ DROP\_s*' .. 'ScriptFuncNew()\_s*' .. '\d\+ DCALL <SNR>\d\+_ScriptFuncNew(argc 0)\_s*' .. @@ -742,11 +742,11 @@ def Test_disassemble_call() '\d\+ DCALL <SNR>\d\+_ScriptFuncNew(argc 0)\_s*' .. '\d\+ DROP\_s*' .. 'UserFunc()\_s*' .. - '\d\+ UCALL UserFunc(argc 0)\_s*' .. + '\d\+ UCALL <80><fd>R\d\+_UserFunc(argc 0)\_s*' .. '\d\+ DROP\_s*' .. 'UserFuncWithArg("foo")\_s*' .. '\d\+ PUSHS "foo"\_s*' .. - '\d\+ UCALL UserFuncWithArg(argc 1)\_s*' .. + '\d\+ UCALL <80><fd>R\d\+_UserFuncWithArg(argc 1)\_s*' .. '\d\+ DROP\_s*' .. 'var FuncRef = function("UserFunc")\_s*' .. '\d\+ PUSHS "UserFunc"\_s*' .. @@ -811,7 +811,7 @@ enddef def EchoArg(arg: string): string return arg enddef -def RefThis(): func +def s:RefThis(): func return function('EchoArg') enddef def s:ScriptPCall() @@ -822,7 +822,7 @@ def Test_disassemble_pcall() var res = execute('disass s:ScriptPCall') assert_match('<SNR>\d\+_ScriptPCall\_s*' .. 'RefThis()("text")\_s*' .. - '\d DCALL RefThis(argc 0)\_s*' .. + '\d DCALL <SNR>\d\+_RefThis(argc 0)\_s*' .. '\d PUSHS "text"\_s*' .. '\d PCALL top (argc 1)\_s*' .. '\d PCALL end\_s*' .. @@ -1116,7 +1116,7 @@ def Test_disassemble_channel() instr) enddef -def WithLambda(): string +def s:WithLambda(): string var F = (a) => "X" .. a .. "X" return F("x") enddef @@ -1149,7 +1149,7 @@ def Test_disassemble_lambda() instr) enddef -def LambdaWithType(): number +def s:LambdaWithType(): number var Ref = (a: number) => a + 10 return Ref(g:value) enddef @@ -1210,7 +1210,7 @@ def Test_disassemble_nested_def_list() instr) enddef -def AndOr(arg: any): string +def s:AndOr(arg: any): string if arg == 1 && arg != 2 || arg == 4 return 'yes' endif @@ -1239,7 +1239,7 @@ def Test_disassemble_and_or() instr) enddef -def AndConstant(arg: any): string +def s:AndConstant(arg: any): string if true && arg return "yes" endif @@ -1271,7 +1271,7 @@ def Test_disassemble_and_constant() instr) enddef -def ForLoop(): list<number> +def s:ForLoop(): list<number> var res: list<number> for i in range(3) res->add(i) @@ -1304,7 +1304,7 @@ def Test_disassemble_for_loop() instr) enddef -def ForLoopEval(): string +def s:ForLoopEval(): string var res = "" for str in eval('["one", "two"]') res ..= str @@ -1340,7 +1340,7 @@ def Test_disassemble_for_loop_eval() instr) enddef -def ForLoopUnpack() +def s:ForLoopUnpack() for [x1, x2] in [[1, 2], [3, 4]] echo x1 x2 endfor @@ -1373,7 +1373,7 @@ def Test_disassemble_for_loop_unpack() instr) enddef -def ForLoopContinue() +def s:ForLoopContinue() for nr in [1, 2] try echo "ok" @@ -1432,7 +1432,7 @@ enddef let g:number = 42 -def TypeCast() +def s:TypeCast() var l: list<number> = [23, <number>g:number] enddef @@ -1450,7 +1450,7 @@ def Test_disassemble_typecast() instr) enddef -def Computing() +def s:Computing() var nr = 3 var nrres = nr + 7 nrres = nr - 7 @@ -1525,7 +1525,7 @@ def Test_disassemble_computing() endif enddef -def AddListBlob() +def s:AddListBlob() var reslist = [1, 2] + [3, 4] var resblob = 0z1122 + 0z3344 enddef @@ -1551,7 +1551,7 @@ def Test_disassemble_add_list_blob() enddef let g:aa = 'aa' -def ConcatString(): string +def s:ConcatString(): string var res = g:aa .. "bb" return res enddef @@ -1569,7 +1569,7 @@ def Test_disassemble_concat() assert_equal('aabb', ConcatString()) enddef -def StringIndex(): string +def s:StringIndex(): string var s = "abcd" var res = s[1] return res @@ -1590,7 +1590,7 @@ def Test_disassemble_string_index() assert_equal('b', StringIndex()) enddef -def StringSlice(): string +def s:StringSlice(): string var s = "abcd" var res = s[1 : 8] return res @@ -1612,7 +1612,7 @@ def Test_disassemble_string_slice() assert_equal('bcd', StringSlice()) enddef -def ListIndex(): number +def s:ListIndex(): number var l = [1, 2, 3] var res = l[1] return res @@ -1636,7 +1636,7 @@ def Test_disassemble_list_index() assert_equal(2, ListIndex()) enddef -def ListSlice(): list<number> +def s:ListSlice(): list<number> var l = [1, 2, 3] var res = l[1 : 8] return res @@ -1661,7 +1661,7 @@ def Test_disassemble_list_slice() assert_equal([2, 3], ListSlice()) enddef -def DictMember(): number +def s:DictMember(): number var d = {item: 1} var res = d.item res = d["item"] @@ -1692,7 +1692,7 @@ def Test_disassemble_dict_member() enddef let somelist = [1, 2, 3, 4, 5] -def AnyIndex(): number +def s:AnyIndex(): number var res = g:somelist[2] return res enddef @@ -1713,7 +1713,7 @@ def Test_disassemble_any_index() assert_equal(3, AnyIndex()) enddef -def AnySlice(): list<number> +def s:AnySlice(): list<number> var res = g:somelist[1 : 3] return res enddef @@ -1735,7 +1735,7 @@ def Test_disassemble_any_slice() assert_equal([2, 3, 4], AnySlice()) enddef -def NegateNumber(): number +def s:NegateNumber(): number g:nr = 9 var plus = +g:nr var minus = -g:nr @@ -1761,7 +1761,7 @@ def Test_disassemble_negate_number() assert_equal(-9, NegateNumber()) enddef -def InvertBool(): bool +def s:InvertBool(): bool var flag = true var invert = !flag var res = !!flag @@ -1786,7 +1786,7 @@ def Test_disassemble_invert_bool() assert_equal(true, InvertBool()) enddef -def ReturnBool(): bool +def s:ReturnBool(): bool var one = 1 var zero = 0 var none: number @@ -1818,7 +1818,7 @@ def Test_disassemble_return_bool() assert_equal(true, InvertBool()) enddef -def AutoInit() +def s:AutoInit() var t: number t = 1 t = 0