# HG changeset patch # User Bram Moolenaar # Date 1628442904 -7200 # Node ID 164cef0bc7aba896b343c3e146928d8a1f72a3f6 # Parent 143d7ea8f33976367b9ef198dba3e14a56bf4334 patch 8.2.3317: Vim9: No error for missing white space before return type Commit: https://github.com/vim/vim/commit/33ea9fd4d849324f1e958cc669987a51cf0baded Author: Bram Moolenaar Date: Sun Aug 8 19:07:37 2021 +0200 patch 8.2.3317: Vim9: No error for missing white space before return type Problem: Vim9: No error for missing white space before return type. Solution: Check for white space. (closes https://github.com/vim/vim/issues/8733) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -1429,6 +1429,27 @@ def Test_return_type_wrong() 'defcompile'], 'E1003:') delfunc! g:Func + CheckScriptFailure([ + 'def Func():number', + 'return 123', + 'enddef', + 'defcompile'], 'E1069:') + delfunc! g:Func + + CheckScriptFailure([ + 'def Func() :number', + 'return 123', + 'enddef', + 'defcompile'], 'E1059:') + delfunc! g:Func + + CheckScriptFailure([ + 'def Func() : number', + 'return 123', + 'enddef', + 'defcompile'], 'E1059:') + delfunc! g:Func + CheckScriptFailure(['def Func(): list', 'return []', 'enddef'], 'E1008:') delfunc! g:Func CheckScriptFailure(['def Func(): dict', 'return {}', 'enddef'], 'E1008:') diff --git a/src/userfunc.c b/src/userfunc.c --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4066,8 +4066,15 @@ define_function(exarg_T *eap, char_u *na if (eap->cmdidx == CMD_def) { // find the return type: :def Func(): type - if (*p == ':') + if (*skipwhite(p) == ':') { + if (*p != ':') + { + semsg(_(e_no_white_space_allowed_before_colon_str), p); + p = skipwhite(p); + } + else if (!IS_WHITE_OR_NUL(p[1])) + semsg(_(e_white_space_required_after_str_str), ":", p); ret_type = skipwhite(p + 1); p = skip_type(ret_type, FALSE); if (p > ret_type) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3317, +/**/ 3316, /**/ 3315,