aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-03-16 18:30:56 +0100
committerGitHub <noreply@github.com>2019-03-16 18:30:56 +0100
commit8d00393d0cc89511867861dc8ac5cc7b068f9f69 (patch)
tree78172ff8f0933dc9598f271d3ca863937c561580
parent175398f21645552b708a7626309b826ae0f3d8a8 (diff)
parent3bad76008e1c98724eca7d986a6340eff1de8193 (diff)
downloadrneovim-8d00393d0cc89511867861dc8ac5cc7b068f9f69.tar.gz
rneovim-8d00393d0cc89511867861dc8ac5cc7b068f9f69.tar.bz2
rneovim-8d00393d0cc89511867861dc8ac5cc7b068f9f69.zip
Merge #9736 from janlazo/vim-8.1.0019
-rw-r--r--src/nvim/eval.c8
-rw-r--r--src/nvim/testdir/test_lambda.vim6
-rw-r--r--src/nvim/testdir/test_timers.vim3
3 files changed, 15 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 5ef2a8772e..df677a3a13 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -6328,8 +6328,12 @@ call_func(
}
- /* execute the function if no errors detected and executing */
- if (evaluate && error == ERROR_NONE) {
+ // Execute the function if executing and no errors were detected.
+ if (!evaluate) {
+ // Not evaluating, which means the return value is unknown. This
+ // matters for giving error messages.
+ rettv->v_type = VAR_UNKNOWN;
+ } else if (error == ERROR_NONE) {
char_u *rfname = fname;
/* Ignore "g:" before a function name. */
diff --git a/src/nvim/testdir/test_lambda.vim b/src/nvim/testdir/test_lambda.vim
index ada25da4a8..bc7817cef8 100644
--- a/src/nvim/testdir/test_lambda.vim
+++ b/src/nvim/testdir/test_lambda.vim
@@ -291,3 +291,9 @@ func Test_named_function_closure()
call garbagecollect()
call assert_equal(14, s:Abar())
endfunc
+
+func Test_lambda_with_index()
+ let List = {x -> [x]}
+ let Extract = {-> function(List, ['foobar'])()[0]}
+ call assert_equal('foobar', Extract())
+endfunc
diff --git a/src/nvim/testdir/test_timers.vim b/src/nvim/testdir/test_timers.vim
index 62ddad5dce..5a0939a6a1 100644
--- a/src/nvim/testdir/test_timers.vim
+++ b/src/nvim/testdir/test_timers.vim
@@ -47,6 +47,9 @@ func Test_repeat_many()
call timer_stopall()
let g:val = 0
let timer = timer_start(50, 'MyHandler', {'repeat': -1})
+ if has('mac')
+ sleep 200m
+ endif
sleep 200m
call timer_stop(timer)
call assert_inrange((has('mac') ? 1 : 2), 4, g:val)