From 33ea9fd4d849324f1e958cc669987a51cf0baded Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 8 Aug 2021 19:07:37 +0200 Subject: [PATCH] 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) --- src/testdir/test_vim9_func.vim | 21 +++++++++++++++++++++ src/userfunc.c | 9 ++++++++- src/version.c | 2 ++ 3 files changed, 31 insertions(+), 1 deletion(-) 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, /**/ -- 2.40.0