diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-01-04 19:03:27 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-01-04 19:03:27 +0100 |
commit | 6d0efdaab5d97684056598f0a38cc98d2568f8d7 (patch) | |
tree | 73900c24e2390b27192865fd895f0e3271f19a32 /src | |
parent | 870b05c4c087980a14d180ea680cb0ff35d62331 (diff) | |
download | vim-git-6d0efdaab5d97684056598f0a38cc98d2568f8d7.tar.gz |
updated for version 7.3.097v7.3.097
Problem: Using ":call" inside "if 0" does not see that a function returns a
Dict and gives error for "." as string concatenation.
Solution: Use eval0() to skip over the expression. (Yasuhiro Matsumoto)
Diffstat (limited to 'src')
-rw-r--r-- | src/eval.c | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index 7d00c0e47..a73731198 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3335,6 +3335,15 @@ ex_call(eap) int failed = FALSE; funcdict_T fudi; + if (eap->skip) + { + /* trans_function_name() doesn't work well when skipping, use eval0() + * instead to skip to any following command, e.g. for: + * :if 0 | call dict.foo().bar() | endif */ + eval0(eap->arg, &rettv, &eap->nextcmd, FALSE); + return; + } + tofree = trans_function_name(&arg, eap->skip, TFN_INT, &fudi); if (fudi.fd_newkey != NULL) { diff --git a/src/version.c b/src/version.c index 3e56bdf3b..05e50df55 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 97, +/**/ 96, /**/ 95, |