updated for version 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)
diff --git a/src/eval.c b/src/eval.c
index 7d00c0e..a737311 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3335,6 +3335,15 @@
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 3e56bdf..05e50df 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 97,
+/**/
96,
/**/
95,