diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 2fea0de920..58b2ba2551 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1822,13 +1822,24 @@ def Test_let_declaration() g:var_uninit = var var = 'text' g:var_test = var + " prefixing s: is optional + s:var = 'prefixed' + g:var_prefixed = s:var + + let s:other: number + other = 1234 + g:other_var = other END CheckScriptSuccess(lines) assert_equal('', g:var_uninit) assert_equal('text', g:var_test) + assert_equal('prefixed', g:var_prefixed) + assert_equal(1234, g:other_var) unlet g:var_uninit unlet g:var_test + unlet g:var_prefixed + unlet g:other_var enddef def Test_let_type_check() @@ -1838,6 +1849,12 @@ def Test_let_type_check() var = 1234 END CheckScriptFailure(lines, 'E1013:') + + lines =<< trim END + vim9script + let var:string + END + CheckScriptFailure(lines, 'E1069:') enddef def Test_forward_declaration() diff --git a/src/version.c b/src/version.c index 1f91903289..e9a0723bdf 100644 --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 975, /**/ 974, /**/ diff --git a/src/vim9script.c b/src/vim9script.c index 650168419c..cdbcb47e74 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -462,15 +462,20 @@ vim9_declare_scriptvar(exarg_T *eap, char_u *arg) return arg + STRLEN(arg); } - for (p = arg + 1; *p != NUL && *p != ':' && eval_isnamec(*p); - MB_PTR_ADV(p)) - ; + for (p = arg + 1; *p != NUL && eval_isnamec(*p); MB_PTR_ADV(p)) + if (*p == ':' && p != arg + 1) + break; if (*p != ':') { emsg(_(e_type_req)); return arg + STRLEN(arg); } + if (!VIM_ISWHITE(p[1])) + { + semsg(_(e_white_after), ":"); + return arg + STRLEN(arg); + } name = vim_strnsave(arg, p - arg); // parse type