]> granicus.if.org Git - vim/commitdiff
patch 8.2.0282: Vim9: setting number option not tested v8.2.0282
authorBram Moolenaar <Bram@vim.org>
Wed, 19 Feb 2020 17:14:44 +0000 (18:14 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 19 Feb 2020 17:14:44 +0000 (18:14 +0100)
Problem:    Vim9: setting number option not tested.
Solution:   Add more tests.   Fix assigning to global variable.

src/testdir/test_vim9_expr.vim
src/testdir/test_vim9_script.vim
src/version.c
src/vim9execute.c

index 1f3e4176105d68f5bb202c8ae057e22b8189187d..235aee2105e51e3b45d8775b5d321dfb77fb456a 100644 (file)
@@ -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')]
index ae33935072c056fa623c4d4af8ae0d62e76d5cf0..0e18e4a1b6c98230785cc1cff09a7868c95af7fe 100644 (file)
@@ -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)
 
index d02cf9aaf97edaa5caaac3d108a97dfc3b27b920..f964607cdaeb2315facf914eeb045b668df1323f 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    282,
 /**/
     281,
 /**/
index 4349489e54dd77ea40dd6b9aaeb53a720491bd53..399720aaf5e421e496aad15790eaa992c7524002 100644 (file)
@@ -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;