mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
patch 8.2.1396: Vim9: no error for unexpectedly returning a value
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.
This commit is contained in:
@@ -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 "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',
|
||||
'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()
|
||||
|
Reference in New Issue
Block a user