Mercurial > vim
changeset 20921:187c3fb42c8f v8.2.1012
patch 8.2.1012: Vim9: cannot declare single character script variables
Commit: https://github.com/vim/vim/commit/3b74b6b4bb9a022f8c6f6e544360d628e10df1ab
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jun 19 19:01:43 2020 +0200
patch 8.2.1012: Vim9: cannot declare single character script variables
Problem: Vim9: cannot declare single character script variables.
Solution: Don't see "b:", "s:", etc. as namespace. Fix item size of
sn_var_vals.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 19 Jun 2020 19:15:03 +0200 |
parents | 5469fca04251 |
children | 5de8bf9182ba |
files | src/scriptfile.c src/testdir/test_vim9_script.vim src/version.c src/vim9script.c |
diffstat | 4 files changed, 39 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/scriptfile.c +++ b/src/scriptfile.c @@ -1343,7 +1343,7 @@ do_source( // Allocate the local script variables to use for this script. new_script_vars(script_items.ga_len); - ga_init2(&si->sn_var_vals, sizeof(typval_T), 10); + ga_init2(&si->sn_var_vals, sizeof(svar_T), 10); ga_init2(&si->sn_imports, sizeof(imported_T), 10); ga_init2(&si->sn_type_list, sizeof(type_T), 10); # ifdef FEAT_PROFILE
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -109,6 +109,41 @@ def Test_assignment() call CheckDefFailure(['v:errmsg += 123'], 'E1013:') enddef +def Test_vim9_single_char_vars() + let lines =<< trim END + vim9script + + " single character variable declarations work + let a: string + let b: number + let l: list<any> + let s: string + let t: number + let v: number + let w: number + + " script-local variables can be used without s: prefix + a = 'script-a' + b = 111 + l = [1, 2, 3] + s = 'script-s' + t = 222 + v = 333 + w = 444 + + assert_equal('script-a', a) + assert_equal(111, b) + assert_equal([1, 2, 3], l) + assert_equal('script-s', s) + assert_equal(222, t) + assert_equal(333, v) + assert_equal(444, w) + END + writefile(lines, 'Xsinglechar') + source Xsinglechar + delete('Xsinglechar') +enddef + def Test_assignment_list() let list1: list<bool> = [false, true, false] let list2: list<number> = [1, 2, 3]