diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-08-08 19:07:37 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-08-08 19:07:37 +0200 |
commit | 33ea9fd4d849324f1e958cc669987a51cf0baded (patch) | |
tree | 04e74ec5d77d51303670fe01b3a2ce3e6648d368 | |
parent | 80a070c36125662556232ab6e83da373e22953d8 (diff) |
patch 8.2.3317: Vim9: No error for missing white space before return typev8.2.3317
Problem: Vim9: No error for missing white space before return type.
Solution: Check for white space. (closes #8733)
-rw-r--r-- | src/testdir/test_vim9_func.vim | 21 | ||||
-rw-r--r-- | src/userfunc.c | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 31 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 5704511df7..de7b980fde 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 79a6621b24..7a7617f5eb 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 3e209fe272..aacefc03d7 100644 --- 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, |