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.
diff --git a/src/testdir/test_iminsert.vim b/src/testdir/test_iminsert.vim
index db6152f..e5ded58 100644
--- a/src/testdir/test_iminsert.vim
+++ b/src/testdir/test_iminsert.vim
@@ -2,7 +2,7 @@
source view_util.vim
source check.vim
-source vim9.vim
+import './vim9.vim' as v9
let s:imactivatefunc_called = 0
let s:imstatusfunc_called = 0
@@ -165,28 +165,28 @@
normal! i
#" Test for using a lambda function
- VAR optval = "LSTART a LMIDDLE IMactivatefunc1(a) LEND"
+ VAR optval = "LSTART a LMIDDLE g:IMactivatefunc1(a) LEND"
LET optval = substitute(optval, ' ', '\\ ', 'g')
exe "set imactivatefunc=" .. optval
- LET optval = "LSTART LMIDDLE IMstatusfunc1() LEND"
+ LET optval = "LSTART LMIDDLE g:IMstatusfunc1() LEND"
LET optval = substitute(optval, ' ', '\\ ', 'g')
exe "set imstatusfunc=" .. optval
normal! i
#" Set 'imactivatefunc' and 'imstatusfunc' to a lambda expression
- LET &imactivatefunc = LSTART a LMIDDLE IMactivatefunc1(a) LEND
- LET &imstatusfunc = LSTART LMIDDLE IMstatusfunc1() LEND
+ LET &imactivatefunc = LSTART a LMIDDLE g:IMactivatefunc1(a) LEND
+ LET &imstatusfunc = LSTART LMIDDLE g:IMstatusfunc1() LEND
normal! i
#" Set 'imactivatefunc' and 'imstatusfunc' to a string(lambda expression)
- LET &imactivatefunc = 'LSTART a LMIDDLE IMactivatefunc1(a) LEND'
- LET &imstatusfunc = 'LSTART LMIDDLE IMstatusfunc1() LEND'
+ LET &imactivatefunc = 'LSTART a LMIDDLE g:IMactivatefunc1(a) LEND'
+ LET &imstatusfunc = 'LSTART LMIDDLE g:IMstatusfunc1() LEND'
normal! i
#" Set 'imactivatefunc' 'imstatusfunc' to a variable with a lambda
#" expression
- VAR Lambda1 = LSTART a LMIDDLE IMactivatefunc1(a) LEND
- VAR Lambda2 = LSTART LMIDDLE IMstatusfunc1() LEND
+ VAR Lambda1 = LSTART a LMIDDLE g:IMactivatefunc1(a) LEND
+ VAR Lambda2 = LSTART LMIDDLE g:IMstatusfunc1() LEND
LET &imactivatefunc = Lambda1
LET &imstatusfunc = Lambda2
normal! i
@@ -223,7 +223,7 @@
call assert_equal(14, g:IMactivatefunc_called)
call assert_equal(28, g:IMstatusfunc_called)
END
- call CheckLegacyAndVim9Success(lines)
+ call v9.CheckLegacyAndVim9Success(lines)
" Using Vim9 lambda expression in legacy context should fail
set imactivatefunc=(a)\ =>\ IMactivatefunc1(a)
@@ -285,7 +285,7 @@
set imactivatefunc=
set imstatusfunc=
END
- call CheckScriptSuccess(lines)
+ call v9.CheckScriptSuccess(lines)
" cleanup
set iminsert=0