diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-14 12:50:24 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-14 12:50:24 +0200 |
commit | 984dddbef421eda6b8ad60936f380c5f00aebb96 (patch) | |
tree | 26184f9ac68dd1a207f7a333ac100da3142fe44e | |
parent | f3decc5830ef8d8d94902b76114935283dd4142e (diff) | |
download | vim-git-984dddbef421eda6b8ad60936f380c5f00aebb96.tar.gz |
patch 8.2.0975: Vim9: script variable does not accept optional s: prefixv8.2.0975
Problem: Vim9: script variable does not accept optional s: prefix.
Solution: Adjust the accepted syntax.
-rw-r--r-- | src/testdir/test_vim9_script.vim | 17 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/vim9script.c | 11 |
3 files changed, 27 insertions, 3 deletions
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 2fea0de92..58b2ba255 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 1f9190328..e9a0723bd 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 */ /**/ + 975, +/**/ 974, /**/ 973, diff --git a/src/vim9script.c b/src/vim9script.c index 650168419..cdbcb47e7 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 |