From: Bram Moolenaar Date: Sun, 8 Aug 2021 17:07:37 +0000 (+0200) Subject: patch 8.2.3317: Vim9: No error for missing white space before return type X-Git-Tag: v8.2.3317 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=33ea9fd4d849324f1e958cc669987a51cf0baded;p=vim 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 #8733) --- diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 5704511df..de7b980fd 100644 --- 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 index 79a6621b2..7a7617f5e 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4066,8 +4066,15 @@ define_function(exarg_T *eap, char_u *name_arg) 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 index 3e209fe27..aacefc03d 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3317, /**/ 3316, /**/