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.
diff --git a/src/testdir/test_vim9_expr.vim b/src/testdir/test_vim9_expr.vim
index 1f3e417..235aee2 100644
--- a/src/testdir/test_vim9_expr.vim
+++ b/src/testdir/test_vim9_expr.vim
@@ -596,8 +596,6 @@
 
 let $TESTVAR = 'testvar'
 
-let @a = 'register a'
-
 " test low level expression
 def Test_expr7_number()
   " number constant
@@ -675,6 +673,8 @@
   " 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 @@
 enddef
 
 def Test_expr7_register()
-  " register
+  @a = 'register a'
   assert_equal('register a', @a)
 enddef
 
@@ -724,7 +724,8 @@
   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')]
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index ae33935..0e18e4a 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -29,6 +29,7 @@
 
 let s:appendToMe = 'xxx'
 let s:addToMe = 111
+let g:existing = 'yes'
 
 def Test_assignment()
   let bool1: bool = true
@@ -46,6 +47,13 @@
   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)
 
diff --git a/src/version.c b/src/version.c
index d02cf9a..f964607 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    282,
+/**/
     281,
 /**/
     280,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 4349489..399720a 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -726,8 +726,10 @@
 		    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 @@
 
 		    --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;