Patch 8.2.1152
Problem: Vim9: function reference is missing script prefix.
Solution: Use the actual function name instead of the name searched for in
the script context. (closes #6412)
Files: src/vim9compile.c, src/testdir/test_vim9_script.vim
*** ../vim-8.2.1151/src/vim9compile.c 2020-07-06 23:04:44.829229830 +0200
--- src/vim9compile.c 2020-07-07 22:35:38.042271918 +0200
***************
*** 2676,2682 ****
if (ufunc == NULL)
return FAIL;
! return generate_PUSHFUNC(cctx, vim_strsave(name), ufunc->uf_func_type);
}
/*
--- 2676,2683 ----
if (ufunc == NULL)
return FAIL;
! return generate_PUSHFUNC(cctx, vim_strsave(ufunc->uf_name),
! ufunc->uf_func_type);
}
/*
*** ../vim-8.2.1151/src/testdir/test_vim9_script.vim 2020-07-05
21:38:07.857431843 +0200
--- src/testdir/test_vim9_script.vim 2020-07-07 22:34:29.446459421 +0200
***************
*** 980,985 ****
--- 980,1018 ----
delete('Ximport.vim')
enddef
+ " Not exported function that is referenced needs to be accessed by the
+ " script-local name.
+ def Test_vim9script_funcref()
+ let sortlines =<< trim END
+ vim9script
+ def Compare(i1: number, i2: number): number
+ return 1
+ enddef
+
+ export def FastSort(): list<number>
+ return range(5)->sort(Compare)
+ enddef
+ END
+ writefile(sortlines, 'Xsort.vim')
+
+ let lines =<< trim END
+ vim9script
+ import FastSort from './Xsort.vim'
+ def Test()
+ g:result = FastSort()
+ enddef
+ Test()
+ END
+ writefile(lines, 'Xscript.vim')
+
+ source Xscript.vim
+ assert_equal([4, 3, 2, 1, 0], g:result)
+
+ unlet g:result
+ delete('Xsort.vim')
+ delete('Xscript.vim')
+ enddef
+
def Test_vim9script_reload_delfunc()
let first_lines =<< trim END
vim9script
*** ../vim-8.2.1151/src/version.c 2020-07-07 20:50:35.570759730 +0200
--- src/version.c 2020-07-07 22:29:07.947338232 +0200
***************
*** 756,757 ****
--- 756,759 ----
{ /* Add new patch number below this line */
+ /**/
+ 1152,
/**/
--
For humans, honesty is a matter of degree. Engineers are always honest in
matters of technology and human relationships. That's why it's a good idea
to keep engineers away from customers, romantic interests, and other people
who can't handle the truth.
(Scott Adams - The Dilbert principle)
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/202007072050.067Koloo1174287%40masaka.moolenaar.net.