patch 8.2.1518: Vim9: cannot assign to local option

Problem:    Vim9: cannot assign to local option.
Solution:   Skip over "&l:" and "&g:". (closes #6749)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 6417d21..45384d1 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -110,12 +110,21 @@
   endif
 
   lines =<< trim END
-    vim9script
     &ts = 6
     &ts += 3
     assert_equal(9, &ts)
+
+    &l:ts = 6
+    assert_equal(6, &ts)
+    &l:ts += 2
+    assert_equal(8, &ts)
+
+    &g:ts = 6
+    assert_equal(6, &g:ts)
+    &g:ts += 2
+    assert_equal(8, &g:ts)
   END
-  CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
 
   CheckDefFailure(['&notex += 3'], 'E113:')
   CheckDefFailure(['&ts ..= "xxx"'], 'E1019:')
@@ -163,19 +172,15 @@
   call CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:')
   call CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:')
 
-  @a = 'areg'
-  @a ..= 'add'
-  assert_equal('aregadd', @a)
-  call CheckDefFailure(['@a += "more"'], 'E1051:')
-  call CheckDefFailure(['@a += 123'], 'E1012:')
-
   lines =<< trim END
-    vim9script
     @c = 'areg'
     @c ..= 'add'
     assert_equal('aregadd', @c)
   END
-  call CheckScriptSuccess(lines)
+  CheckDefAndScriptSuccess(lines)
+
+  call CheckDefFailure(['@a += "more"'], 'E1051:')
+  call CheckDefFailure(['@a += 123'], 'E1012:')
 
   v:errmsg = 'none'
   v:errmsg ..= 'again'
diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim
index 2f92cf9..7fbe4a5 100644
--- a/src/testdir/vim9.vim
+++ b/src/testdir/vim9.vim
@@ -41,6 +41,11 @@
   delete('Xdef')
 enddef
 
+def CheckDefAndScriptSuccess(lines: list<string>)
+  CheckDefSuccess(lines)
+  CheckScriptSuccess(['vim9script'] + lines)
+enddef
+
 " Check that a command fails both when used in a :def function and when used
 " in Vim9 script.
 def CheckScriptAndDefFailure(lines: list<string>, error: string, lnum = -3)