changeset 19449:f8408ba21982 v8.2.0282

patch 8.2.0282: Vim9: setting number option not tested Commit: https://github.com/vim/vim/commit/401d9ffb5a8a40102c000c2d2614aa043f541f90 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Feb 19 18:14:44 2020 +0100 patch 8.2.0282: Vim9: setting number option not tested Problem: Vim9: setting number option not tested. Solution: Add more tests. Fix assigning to global variable.
author Bram Moolenaar <Bram@vim.org>
date Wed, 19 Feb 2020 18:15:05 +0100
parents d39989f46ad3
children 260de9ec24d0
files src/testdir/test_vim9_expr.vim src/testdir/test_vim9_script.vim src/version.c src/vim9execute.c
diffstat 4 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -596,8 +596,6 @@ let g:dict_one = #{one: 1}
 
 let $TESTVAR = 'testvar'
 
-let @a = 'register a'
-
 " test low level expression
 def Test_expr7_number()
   " number constant
@@ -675,6 +673,8 @@ def Test_expr7_option()
   " option
   set ts=11
   assert_equal(11, &ts)
+  &ts = 9
+  assert_equal(9, &ts)
   set ts=8
   set grepprg=some\ text
   assert_equal('some text', &grepprg)
@@ -690,7 +690,7 @@ def Test_expr7_environment()
 enddef
 
 def Test_expr7_register()
-  " register
+  @a = 'register a'
   assert_equal('register a', @a)
 enddef
 
@@ -724,7 +724,8 @@ func Test_expr7_fails()
   call CheckDefFailure("let x = @", "E1002:")
   call CheckDefFailure("let x = @<", "E354:")
 
-  call CheckDefFailure("let x = &notexist", "E113:")
+  call CheckDefFailure("let x = &notexist", 'E113:')
+  call CheckDefExecFailure("&grepprg = [343]", 'E1051:')
 endfunc
 
 let g:Funcrefs = [function('add')]
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -29,6 +29,7 @@ endfunc
 
 let s:appendToMe = 'xxx'
 let s:addToMe = 111
+let g:existing = 'yes'
 
 def Test_assignment()
   let bool1: bool = true
@@ -46,6 +47,13 @@ def Test_assignment()
   let dict1: dict<string> = #{key: 'value'}
   let dict2: dict<number> = #{one: 1, two: 2}
 
+  g:newvar = 'new'
+  assert_equal('new', g:newvar)
+
+  assert_equal('yes', g:existing)
+  g:existing = 'no'
+  assert_equal('no', g:existing)
+
   v:char = 'abc'
   assert_equal('abc', v:char)
 
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    282,
+/**/
     281,
 /**/
     280,
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -726,8 +726,10 @@ call_def_function(
 		    int	reg = iptr->isn_arg.number;
 
 		    --ectx.ec_stack.ga_len;
+		    tv = STACK_TV_BOT(0);
 		    write_reg_contents(reg == '@' ? '"' : reg,
-				    tv_get_string(STACK_TV_BOT(0)), -1, FALSE);
+						 tv_get_string(tv), -1, FALSE);
+		    clear_tv(tv);
 		}
 		break;
 
@@ -746,7 +748,7 @@ call_def_function(
 
 		    --ectx.ec_stack.ga_len;
 		    di = find_var_in_ht(get_globvar_ht(), 0,
-						   iptr->isn_arg.string, TRUE);
+					       iptr->isn_arg.string + 2, TRUE);
 		    if (di == NULL)
 		    {
 			funccal_entry_T entry;