To: vim_dev@googlegroups.com Subject: Patch 8.2.1012 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1012 Problem: Vim9: cannot declare single character script variables. Solution: Don't see "b:", "s:", etc. as namespace. Fix item size of sn_var_vals. Files: src/vim9script.c, src/scriptfile.c, src/testdir/test_vim9_script.vim *** ../vim-8.2.1011/src/vim9script.c 2020-06-19 18:34:10.989945091 +0200 --- src/vim9script.c 2020-06-19 18:43:44.024372609 +0200 *************** *** 471,477 **** } for (p = arg + 1; *p != NUL && eval_isnamec(*p); MB_PTR_ADV(p)) ! if (*p == ':' && p != arg + 1) break; if (*p != ':') --- 471,477 ---- } for (p = arg + 1; *p != NUL && eval_isnamec(*p); MB_PTR_ADV(p)) ! if (*p == ':' && (VIM_ISWHITE(p[1]) || p != arg + 1)) break; if (*p != ':') *** ../vim-8.2.1011/src/scriptfile.c 2020-05-25 22:36:46.629735032 +0200 --- src/scriptfile.c 2020-06-19 18:51:22.423708670 +0200 *************** *** 1343,1349 **** // 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_imports, sizeof(imported_T), 10); ga_init2(&si->sn_type_list, sizeof(type_T), 10); # ifdef FEAT_PROFILE --- 1343,1349 ---- // Allocate the local script variables to use for this script. new_script_vars(script_items.ga_len); ! 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 *** ../vim-8.2.1011/src/testdir/test_vim9_script.vim 2020-06-19 18:34:10.993945080 +0200 --- src/testdir/test_vim9_script.vim 2020-06-19 18:59:58.442718650 +0200 *************** *** 109,114 **** --- 109,149 ---- 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 + 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 = [false, true, false] let list2: list = [1, 2, 3] *** ../vim-8.2.1011/src/version.c 2020-06-19 18:34:10.993945080 +0200 --- src/version.c 2020-06-19 18:51:50.367663985 +0200 *************** *** 756,757 **** --- 756,759 ---- { /* Add new patch number below this line */ + /**/ + 1012, /**/ -- TALL KNIGHT: When you have found the shrubbery, then you must cut down the mightiest tree in the forest ... with a herring. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///