1
0
forked from aniani/vim

patch 8.2.4257: Vim9: finding global function without g: prefix inconsistent

Problem:    Vim9: finding global function without g: prefix but not finding
            global variable is inconsistent.
Solution:   Require using g: for a global function.  Change the vim9.vim
            script into a Vim9 script with exports.  Fix that import in legacy
            script does not work.
This commit is contained in:
Bram Moolenaar
2022-01-29 21:45:34 +00:00
parent 135e15251e
commit 62aec93bfd
34 changed files with 3212 additions and 3176 deletions

View File

@@ -2,7 +2,7 @@
source screendump.vim
source check.vim
source vim9.vim
import './vim9.vim' as v9
" Test for insert expansion
func Test_ins_complete()
@@ -1359,7 +1359,7 @@ func Test_completefunc_callback()
bw!
#" Test for using a lambda function with set
VAR optval = "LSTART a, b LMIDDLE CompleteFunc1(16, a, b) LEND"
VAR optval = "LSTART a, b LMIDDLE g:CompleteFunc1(16, a, b) LEND"
LET optval = substitute(optval, ' ', '\\ ', 'g')
exe "set completefunc=" .. optval
new
@@ -1370,7 +1370,7 @@ func Test_completefunc_callback()
bw!
#" Set 'completefunc' to a lambda expression
LET &completefunc = LSTART a, b LMIDDLE CompleteFunc1(17, a, b) LEND
LET &completefunc = LSTART a, b LMIDDLE g:CompleteFunc1(17, a, b) LEND
new
call setline(1, 'six')
LET g:CompleteFunc1Args = []
@@ -1379,7 +1379,7 @@ func Test_completefunc_callback()
bw!
#" Set 'completefunc' to string(lambda_expression)
LET &completefunc = 'LSTART a, b LMIDDLE CompleteFunc1(18, a, b) LEND'
LET &completefunc = 'LSTART a, b LMIDDLE g:CompleteFunc1(18, a, b) LEND'
new
call setline(1, 'six')
LET g:CompleteFunc1Args = []
@@ -1388,7 +1388,7 @@ func Test_completefunc_callback()
bw!
#" Set 'completefunc' to a variable with a lambda expression
VAR Lambda = LSTART a, b LMIDDLE CompleteFunc1(19, a, b) LEND
VAR Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(19, a, b) LEND
LET &completefunc = Lambda
new
call setline(1, 'seven')
@@ -1398,7 +1398,7 @@ func Test_completefunc_callback()
bw!
#" Set 'completefunc' to a string(variable with a lambda expression)
LET Lambda = LSTART a, b LMIDDLE CompleteFunc1(20, a, b) LEND
LET Lambda = LSTART a, b LMIDDLE g:CompleteFunc1(20, a, b) LEND
LET &completefunc = string(Lambda)
new
call setline(1, 'seven')
@@ -1431,7 +1431,7 @@ func Test_completefunc_callback()
call assert_equal([[1, ''], [0, 'five']], g:CompleteFunc2Args)
bw!
END
call CheckLegacyAndVim9Success(lines)
call v9.CheckLegacyAndVim9Success(lines)
" Test for using a script-local function name
func s:CompleteFunc3(findstart, base)
@@ -1460,7 +1460,7 @@ func Test_completefunc_callback()
call feedkeys("A\<C-X>\<C-U>\<Esc>", 'x')
" Using Vim9 lambda expression in legacy context should fail
set completefunc=(a,\ b)\ =>\ CompleteFunc1(21,\ a,\ b)
set completefunc=(a,\ b)\ =>\ g:CompleteFunc1(21,\ a,\ b)
new | only
let g:CompleteFunc1Args = []
call assert_fails('call feedkeys("A\<C-X>\<C-U>\<Esc>", "x")', 'E117:')
@@ -1526,7 +1526,7 @@ func Test_completefunc_callback()
assert_equal([[1, ''], [0, 'three']], g:LocalCompleteFuncArgs)
bw!
END
call CheckScriptSuccess(lines)
call v9.CheckScriptSuccess(lines)
" cleanup
set completefunc&
@@ -1616,7 +1616,7 @@ func Test_omnifunc_callback()
bw!
#" Test for using a lambda function with set
VAR optval = "LSTART a, b LMIDDLE OmniFunc1(16, a, b) LEND"
VAR optval = "LSTART a, b LMIDDLE g:OmniFunc1(16, a, b) LEND"
LET optval = substitute(optval, ' ', '\\ ', 'g')
exe "set omnifunc=" .. optval
new
@@ -1627,7 +1627,7 @@ func Test_omnifunc_callback()
bw!
#" Set 'omnifunc' to a lambda expression
LET &omnifunc = LSTART a, b LMIDDLE OmniFunc1(17, a, b) LEND
LET &omnifunc = LSTART a, b LMIDDLE g:OmniFunc1(17, a, b) LEND
new
call setline(1, 'six')
LET g:OmniFunc1Args = []
@@ -1636,7 +1636,7 @@ func Test_omnifunc_callback()
bw!
#" Set 'omnifunc' to a string(lambda_expression)
LET &omnifunc = 'LSTART a, b LMIDDLE OmniFunc1(18, a, b) LEND'
LET &omnifunc = 'LSTART a, b LMIDDLE g:OmniFunc1(18, a, b) LEND'
new
call setline(1, 'six')
LET g:OmniFunc1Args = []
@@ -1645,7 +1645,7 @@ func Test_omnifunc_callback()
bw!
#" Set 'omnifunc' to a variable with a lambda expression
VAR Lambda = LSTART a, b LMIDDLE OmniFunc1(19, a, b) LEND
VAR Lambda = LSTART a, b LMIDDLE g:OmniFunc1(19, a, b) LEND
LET &omnifunc = Lambda
new
call setline(1, 'seven')
@@ -1655,7 +1655,7 @@ func Test_omnifunc_callback()
bw!
#" Set 'omnifunc' to a string(variable with a lambda expression)
LET Lambda = LSTART a, b LMIDDLE OmniFunc1(20, a, b) LEND
LET Lambda = LSTART a, b LMIDDLE g:OmniFunc1(20, a, b) LEND
LET &omnifunc = string(Lambda)
new
call setline(1, 'seven')
@@ -1688,7 +1688,7 @@ func Test_omnifunc_callback()
call assert_equal([[1, ''], [0, 'nine']], g:OmniFunc2Args)
bw!
END
call CheckLegacyAndVim9Success(lines)
call v9.CheckLegacyAndVim9Success(lines)
" Test for using a script-local function name
func s:OmniFunc3(findstart, base)
@@ -1783,7 +1783,7 @@ func Test_omnifunc_callback()
assert_equal([[1, ''], [0, 'three']], g:LocalOmniFuncArgs)
bw!
END
call CheckScriptSuccess(lines)
call v9.CheckScriptSuccess(lines)
" cleanup
set omnifunc&
@@ -1873,7 +1873,7 @@ func Test_thesaurusfunc_callback()
bw!
#" Test for using a lambda function
VAR optval = "LSTART a, b LMIDDLE TsrFunc1(16, a, b) LEND"
VAR optval = "LSTART a, b LMIDDLE g:TsrFunc1(16, a, b) LEND"
LET optval = substitute(optval, ' ', '\\ ', 'g')
exe "set thesaurusfunc=" .. optval
new
@@ -1884,7 +1884,7 @@ func Test_thesaurusfunc_callback()
bw!
#" Test for using a lambda function with set
LET &thesaurusfunc = LSTART a, b LMIDDLE TsrFunc1(17, a, b) LEND
LET &thesaurusfunc = LSTART a, b LMIDDLE g:TsrFunc1(17, a, b) LEND
new
call setline(1, 'six')
LET g:TsrFunc1Args = []
@@ -1893,7 +1893,7 @@ func Test_thesaurusfunc_callback()
bw!
#" Set 'thesaurusfunc' to a string(lambda expression)
LET &thesaurusfunc = 'LSTART a, b LMIDDLE TsrFunc1(18, a, b) LEND'
LET &thesaurusfunc = 'LSTART a, b LMIDDLE g:TsrFunc1(18, a, b) LEND'
new
call setline(1, 'six')
LET g:TsrFunc1Args = []
@@ -1902,7 +1902,7 @@ func Test_thesaurusfunc_callback()
bw!
#" Set 'thesaurusfunc' to a variable with a lambda expression
VAR Lambda = LSTART a, b LMIDDLE TsrFunc1(19, a, b) LEND
VAR Lambda = LSTART a, b LMIDDLE g:TsrFunc1(19, a, b) LEND
LET &thesaurusfunc = Lambda
new
call setline(1, 'seven')
@@ -1912,7 +1912,7 @@ func Test_thesaurusfunc_callback()
bw!
#" Set 'thesaurusfunc' to a string(variable with a lambda expression)
LET Lambda = LSTART a, b LMIDDLE TsrFunc1(20, a, b) LEND
LET Lambda = LSTART a, b LMIDDLE g:TsrFunc1(20, a, b) LEND
LET &thesaurusfunc = string(Lambda)
new
call setline(1, 'seven')
@@ -1968,7 +1968,7 @@ func Test_thesaurusfunc_callback()
call assert_equal([[22, 1, ''], [22, 0, 'sun']], g:TsrFunc1Args)
:%bw!
END
call CheckLegacyAndVim9Success(lines)
call v9.CheckLegacyAndVim9Success(lines)
" Test for using a script-local function name
func s:TsrFunc3(findstart, base)
@@ -2076,7 +2076,7 @@ func Test_thesaurusfunc_callback()
assert_equal([[1, ''], [0, 'three']], g:LocalTsrFuncArgs)
bw!
END
call CheckScriptSuccess(lines)
call v9.CheckScriptSuccess(lines)
" cleanup
set thesaurusfunc&