diff options
Diffstat (limited to 'src/nvim/testdir/test34.in')
-rw-r--r-- | src/nvim/testdir/test34.in | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/nvim/testdir/test34.in b/src/nvim/testdir/test34.in new file mode 100644 index 0000000000..71ee5f63b2 --- /dev/null +++ b/src/nvim/testdir/test34.in @@ -0,0 +1,87 @@ +Test for user functions. +Also test an <expr> mapping calling a function. +Also test that a builtin function cannot be replaced. +Also test for regression when calling arbitrary expression. + +STARTTEST +:so small.vim +:function Table(title, ...) +: let ret = a:title +: let idx = 1 +: while idx <= a:0 +: exe "let ret = ret . a:" . idx +: let idx = idx + 1 +: endwhile +: return ret +:endfunction +:function Compute(n1, n2, divname) +: if a:n2 == 0 +: return "fail" +: endif +: exe "let g:" . a:divname . " = ". a:n1 / a:n2 +: return "ok" +:endfunction +:func Expr1() +: normal! v +: return "111" +:endfunc +:func Expr2() +: call search('XX', 'b') +: return "222" +:endfunc +:func ListItem() +: let g:counter += 1 +: return g:counter . '. ' +:endfunc +:func ListReset() +: let g:counter = 0 +: return '' +:endfunc +:func FuncWithRef(a) +: unlet g:FuncRef +: return a:a +:endfunc +:let g:FuncRef=function("FuncWithRef") +:let counter = 0 +:inoremap <expr> ( ListItem() +:inoremap <expr> [ ListReset() +:imap <expr> + Expr1() +:imap <expr> * Expr2() +:let retval = "nop" +/^here +C=Table("xxx", 4, "asdf") + =Compute(45, 0, "retval") + =retval + =Compute(45, 5, "retval") + =retval + =g:FuncRef(333) + +XX+-XX +---*--- +(one +(two +[(one again:call append(line('$'), max([1, 2, 3])) +:call extend(g:, {'max': function('min')}) +:call append(line('$'), max([1, 2, 3])) +:try +: " Regression: the first line below used to throw ?E110: Missing ')'? +: " Second is here just to prove that this line is correct when not skipping +: " rhs of &&. +: $put =(0&&(function('tr'))(1, 2, 3)) +: $put =(1&&(function('tr'))(1, 2, 3)) +:catch +: $put ='!!! Unexpected exception:' +: $put =v:exception +:endtry +:$-9,$w! test.out +:delfunc Table +:delfunc Compute +:delfunc Expr1 +:delfunc Expr2 +:delfunc ListItem +:delfunc ListReset +:unlet retval counter +:q! +ENDTEST + +here |