Patch 8.2.1527
Problem: Vim9: cannot use a function name as a function reference at script
level.
Solution: Check if a name is a function name. (closes #6789)
Files: src/evalvars.c, src/testdir/test_vim9_expr.vim,
src/testdir/test_vim9_script.vim
*** ../vim-8.2.1526/src/evalvars.c 2020-08-21 22:36:43.666719887 +0200
--- src/evalvars.c 2020-08-27 21:25:11.880376680 +0200
***************
*** 2461,2466 ****
--- 2461,2480 ----
tv = sv->sv_tv;
}
}
+ else if (in_vim9script())
+ {
+ ufunc_T *ufunc = find_func(name, FALSE, NULL);
+
+ if (ufunc != NULL)
+ {
+ foundFunc = TRUE;
+ if (rettv != NULL)
+ {
+ rettv->v_type = VAR_FUNC;
+ rettv->vval.v_string = vim_strsave(ufunc->uf_name);
+ }
+ }
+ }
}
if (!foundFunc)
*** ../vim-8.2.1526/src/testdir/test_vim9_expr.vim 2020-08-22
22:37:17.089141677 +0200
--- src/testdir/test_vim9_expr.vim 2020-08-27 21:24:33.904481255 +0200
***************
*** 1668,1673 ****
--- 1668,1684 ----
CheckScriptSuccess(lines)
enddef
+ def Test_epxr7_funcref()
+ let lines =<< trim END
+ def RetNumber(): number
+ return 123
+ enddef
+ let FuncRef = RetNumber
+ assert_equal(123, FuncRef())
+ END
+ CheckDefAndScriptSuccess(lines)
+ enddef
+
def Test_expr7_dict()
# dictionary
assert_equal(g:dict_empty, {})
*** ../vim-8.2.1526/src/testdir/test_vim9_script.vim 2020-08-23
21:05:59.210438670 +0200
--- src/testdir/test_vim9_script.vim 2020-08-27 21:31:56.667179839 +0200
***************
*** 1684,1691 ****
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
--- 1684,1692 ----
delete('Xscript.vim')
enddef
! " Check that when searching for "FilterFunc" it finds the import in the
! " script where FastFilter() is called from, both as a string and as a direct
! " function reference.
def Test_vim9script_funcref_other_script()
let filterLines =<< trim END
vim9script
***************
*** 1695,1716 ****
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()
--- 1696,1721 ----
export def FastFilter(): list<number>
return range(10)->filter('FilterFunc')
enddef
+ export def FastFilterDirect(): list<number>
+ return range(10)->filter(FilterFunc)
+ enddef
END
writefile(filterLines, 'Xfilter.vim')
let lines =<< trim END
vim9script
! import {FilterFunc, FastFilter, FastFilterDirect} from './Xfilter.vim'
def Test()
let x: list<number> = FastFilter()
enddef
Test()
+ def TestDirect()
+ let x: list<number> = FastFilterDirect()
+ enddef
+ TestDirect()
END
! CheckScriptSuccess(lines)
delete('Xfilter.vim')
enddef
def Test_vim9script_reload_delfunc()
*** ../vim-8.2.1526/src/version.c 2020-08-27 16:06:43.992450446 +0200
--- src/version.c 2020-08-27 21:20:55.173043981 +0200
***************
*** 756,757 ****
--- 756,759 ----
{ /* Add new patch number below this line */
+ /**/
+ 1527,
/**/
--
Facepalm reply #3: "I had a great time in Manhattan" "I thought you were
going to New York?"
/// 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/202008271933.07RJXfd62037808%40masaka.moolenaar.net.