To: vim_dev@googlegroups.com
Subject: Patch 7.3.097
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.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)
Files: src/eval.c
*** ../vim-7.3.096/src/eval.c 2010-12-17 18:06:00.000000000 +0100
--- src/eval.c 2011-01-04 18:54:27.000000000 +0100
***************
*** 3335,3340 ****
--- 3335,3349 ----
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)
{
*** ../vim-7.3.096/src/version.c 2011-01-04 18:11:39.000000000 +0100
--- src/version.c 2011-01-04 19:00:21.000000000 +0100
***************
*** 716,717 ****
--- 716,719 ----
{ /* Add new patch number below this line */
+ /**/
+ 97,
/**/
--
hundred-and-one symptoms of being an internet addict:
86. E-mail Deficiency Depression (EDD) forces you to e-mail yourself.
/// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///