summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_vim9_import.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-01-25 15:51:56 +0000
committerBram Moolenaar <Bram@vim.org>2022-01-25 15:51:56 +0000
commit06b77229ca704d00c4f138ed0377556e54d5851f (patch)
tree6b24e9838841943803574a424599d687be2c05f1 /src/testdir/test_vim9_import.vim
parentdc5490e2cbc8c16022a23b449b48c1bd0083f366 (diff)
patch 8.2.4216: Vim9: cannot use a function from an autoload import directlyv8.2.4216
Problem: Vim9: cannot use a function from an autoload import directly. Solution: Add the AUTOLOAD instruction to figure out at runtime. (closes #9620)
Diffstat (limited to 'src/testdir/test_vim9_import.vim')
-rw-r--r--src/testdir/test_vim9_import.vim35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim
index 506b0ee8d7..7878788a0d 100644
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -703,6 +703,41 @@ def Test_use_autoload_import_partial_in_opfunc()
set opfunc=
bwipe!
delete('Xdir', 'rf')
+ nunmap <F3>
+ &rtp = save_rtp
+enddef
+
+def Test_set_opfunc_to_autoload_func_directly()
+ mkdir('Xdir/autoload', 'p')
+ var save_rtp = &rtp
+ exe 'set rtp^=' .. getcwd() .. '/Xdir'
+
+ var lines =<< trim END
+ vim9script
+ export def Opfunc(..._)
+ g:opfunc_called = 'yes'
+ enddef
+ END
+ writefile(lines, 'Xdir/autoload/opfunc.vim')
+
+ new
+ lines =<< trim END
+ vim9script
+ import autoload 'opfunc.vim'
+ nnoremap <expr> <F3> TheFunc()
+ def TheFunc(): string
+ &operatorfunc = opfunc.Opfunc
+ return 'g@'
+ enddef
+ feedkeys("\<F3>l", 'xt')
+ assert_equal('yes', g:opfunc_called)
+ END
+ CheckScriptSuccess(lines)
+
+ set opfunc=
+ bwipe!
+ delete('Xdir', 'rf')
+ nunmap <F3>
&rtp = save_rtp
enddef