summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-08-08 16:47:30 +0200
committerBram Moolenaar <Bram@vim.org>2020-08-08 16:47:30 +0200
commit5a849da57c5fb54ffcffd436a9e00ef40fdf094c (patch)
treea3e29fde05cb840316c5e043635e64407c46087e /src/testdir
parent98b4f145eb89405021e23a4a37db51d60a75a1d0 (diff)
downloadvim-git-5a849da57c5fb54ffcffd436a9e00ef40fdf094c.tar.gz
patch 8.2.1396: Vim9: no error for unexpectedly returning a valuev8.2.1396
Problem: Vim9: no error for unexpectedly returning a value. Solution: Only set the return type for lambda's. Make using function type in a function reference work.
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/test_vim9_func.vim44
1 files changed, 38 insertions, 6 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim
index d39584154..4a020c9af 100644
--- a/src/testdir/test_vim9_func.vim
+++ b/src/testdir/test_vim9_func.vim
@@ -503,16 +503,48 @@ def Test_error_in_nested_function()
enddef
def Test_return_type_wrong()
- CheckScriptFailure(['def Func(): number', 'return "a"', 'enddef', 'defcompile'], 'expected number but got string')
- CheckScriptFailure(['def Func(): string', 'return 1', 'enddef', 'defcompile'], 'expected string but got number')
- CheckScriptFailure(['def Func(): void', 'return "a"', 'enddef', 'defcompile'], 'E1096: Returning a value in a function without a return type')
- CheckScriptFailure(['def Func()', 'return "a"', 'enddef', 'defcompile'], 'E1096: Returning a value in a function without a return type')
-
- CheckScriptFailure(['def Func(): number', 'return', 'enddef', 'defcompile'], 'E1003:')
+ CheckScriptFailure([
+ 'def Func(): number',
+ 'return "a"',
+ 'enddef',
+ 'defcompile'], 'expected number but got string')
+ CheckScriptFailure([
+ 'def Func(): string',
+ 'return 1',
+ 'enddef',
+ 'defcompile'], 'expected string but got number')
+ CheckScriptFailure([
+ 'def Func(): void',
+ 'return "a"',
+ 'enddef',
+ 'defcompile'],
+ 'E1096: Returning a value in a function without a return type')
+ CheckScriptFailure([
+ 'def Func()',
+ 'return "a"',
+ 'enddef',
+ 'defcompile'],
+ 'E1096: Returning a value in a function without a return type')
+
+ CheckScriptFailure([
+ 'def Func(): number',
+ 'return',
+ 'enddef',
+ 'defcompile'], 'E1003:')
CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:')
CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:')
CheckScriptFailure(['def Func()', 'return 1'], 'E1057:')
+
+ CheckScriptFailure([
+ 'vim9script',
+ 'def FuncB()',
+ ' return 123',
+ 'enddef',
+ 'def FuncA()',
+ ' FuncB()',
+ 'enddef',
+ 'defcompile'], 'E1096:')
enddef
def Test_arg_type_wrong()