From 2e80095501238e0c6b702ac7cdfa2e2b763dba28 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 23 Aug 2020 19:34:48 +0200 Subject: 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) --- src/testdir/test_vim9_script.vim | 25 +++++++++++++++---------- src/testdir/vim9.vim | 5 +++++ 2 files changed, 20 insertions(+), 10 deletions(-) (limited to 'src/testdir') diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 6417d21ee..45384d1d8 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -110,12 +110,21 @@ def Test_assignment() 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(['¬ex += 3'], 'E113:') CheckDefFailure(['&ts ..= "xxx"'], 'E1019:') @@ -163,19 +172,15 @@ def Test_assignment() 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 2f92cf954..7fbe4a5ed 100644 --- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -41,6 +41,11 @@ def CheckScriptSuccess(lines: list) delete('Xdef') enddef +def CheckDefAndScriptSuccess(lines: list) + 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, error: string, lnum = -3) -- cgit v1.2.1