patch 8.2.1399: Vim9: may find imported item in wrong script
Problem: Vim9: may find imported item in wrong script.
Solution: When looking up script-local function use the embedded script ID.
(issue #6644)
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index eedce32..226d07e 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -1430,6 +1430,31 @@
&rtp = save_rtp
enddef
+def Test_use_import_in_mapping()
+ let lines =<< trim END
+ vim9script
+ export def Funcx()
+ g:result = 42
+ enddef
+ END
+ writefile(lines, 'XsomeExport.vim')
+ lines =<< trim END
+ vim9script
+ import Funcx from './XsomeExport.vim'
+ nnoremap <C-B> :call <sid>Funcx()<cr>
+ END
+ writefile(lines, 'Xmapscript.vim')
+
+ source Xmapscript.vim
+ feedkeys("\<c-b>", "xt")
+ assert_equal(42, g:result)
+
+ unlet g:result
+ delete('XsomeExport.vim')
+ delete('Xmapscript.vim')
+ nunmap <C-B>
+enddef
+
def Test_vim9script_fails()
CheckScriptFailure(['scriptversion 2', 'vim9script'], 'E1039:')
CheckScriptFailure(['vim9script', 'scriptversion 2'], 'E1040:')