Mercurial > vim
diff src/testdir/test_vim9_script.vim @ 21206:caab594592cc v8.2.1154
patch 8.2.1154: Vim9: crash when using imported function
Commit: https://github.com/vim/vim/commit/c620c055ce8505596a7208ba696a32b8a3be4f4b
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 8 15:16:19 2020 +0200
patch 8.2.1154: Vim9: crash when using imported function
Problem: Vim9: crash when using imported function.
Solution: Check for a function type. Set the script context when calling a
function. (closes #6412)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 08 Jul 2020 15:30:04 +0200 |
parents | 3c91581cef33 |
children | bcd08812cde3 |
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -911,10 +911,10 @@ func Test_import_fails_without_script() CheckRunVimInTerminal " call indirectly to avoid compilation error for missing functions - call Run_Test_import_fails_without_script() + call Run_Test_import_fails_on_command_line() endfunc -def Run_Test_import_fails_without_script() +def Run_Test_import_fails_on_command_line() let export =<< trim END vim9script export def Foo(): number @@ -1013,6 +1013,35 @@ def Test_vim9script_funcref() delete('Xscript.vim') enddef +" Check that when searcing for "FilterFunc" it doesn't find the import in the +" script where FastFilter() is called from. +def Test_vim9script_funcref_other_script() + let filterLines =<< trim END + vim9script + export def FilterFunc(idx: number, val: number): bool + return idx % 2 == 1 + enddef + export def FastFilter(): list<number> + return range(10)->filter('FilterFunc') + enddef + END + writefile(filterLines, 'Xfilter.vim') + + let lines =<< trim END + vim9script + import {FilterFunc, FastFilter} from './Xfilter.vim' + def Test() + let x: list<number> = FastFilter() + enddef + Test() + END + writefile(lines, 'Ximport.vim') + assert_fails('source Ximport.vim', 'E121:') + + delete('Xfilter.vim') + delete('Ximport.vim') +enddef + def Test_vim9script_reload_delfunc() let first_lines =<< trim END vim9script