patch 8.2.2033: Vim9: :def without argument gives compilation error
Problem: Vim9: :def without argument gives compilation error.
Solution: Add the DEF instruction. (closes #7344)
diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim
index 06fb77b..12a3c82 100644
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -905,6 +905,29 @@
instr)
enddef
+def NestedDefList()
+ def
+ def Info
+ def /Info
+ def /Info/
+enddef
+
+def Test_nested_def_list()
+ var instr = execute('disassemble NestedDefList')
+ assert_match('NestedDefList\_s*' ..
+ 'def\_s*' ..
+ '\d DEF \_s*' ..
+ 'def Info\_s*' ..
+ '\d DEF Info\_s*' ..
+ 'def /Info\_s*' ..
+ '\d DEF /Info\_s*' ..
+ 'def /Info/\_s*' ..
+ '\d DEF /Info/\_s*' ..
+ '\d PUSHNR 0\_s*' ..
+ '\d RETURN',
+ instr)
+enddef
+
def AndOr(arg: any): string
if arg == 1 && arg != 2 || arg == 4
return 'yes'
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index dd2f576..80d564e 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -288,6 +288,33 @@
CheckScriptFailure(lines, "E1073:")
enddef
+def DefListAll()
+ def
+enddef
+
+def DefListOne()
+ def DefListOne
+enddef
+
+def DefListMatches()
+ def /DefList
+enddef
+
+def Test_nested_def_list()
+ var funcs = split(execute('call DefListAll()'), "\n")
+ assert_true(len(funcs) > 10)
+ assert_true(funcs->index('def DefListAll()') >= 0)
+
+ funcs = split(execute('call DefListOne()'), "\n")
+ assert_equal([' def DefListOne()', '1 def DefListOne', ' enddef'], funcs)
+
+ funcs = split(execute('call DefListMatches()'), "\n")
+ assert_true(len(funcs) >= 3)
+ assert_true(funcs->index('def DefListAll()') >= 0)
+ assert_true(funcs->index('def DefListOne()') >= 0)
+ assert_true(funcs->index('def DefListMatches()') >= 0)
+enddef
+
def Test_global_local_function()
var lines =<< trim END
vim9script