Loading ...
Sorry, an error occurred while loading the content.
 

Patch 7.3.097

Expand Messages
  • Bram Moolenaar
    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:
    Message 1 of 3 , Jan 4, 2011
      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@... -- 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 ///

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    • Yukihiro Nakadaira
      The following code causes an error E15: Invalid expression: d[ f ]() . let d = {} function d.f() echo f() endfunction if 0 call d[ f ]() endif or for i in
      Message 2 of 3 , Jan 18, 2011
        The following code causes an error "E15: Invalid expression: d["f"]()".


        let d = {}

        function d.f()
        echo "f()"
        endfunction

        if 0
        call d["f"]()
        endif

        " or

        for i in [1]
        call d["f"]()
        endfor


        --
        Yukihiro Nakadaira - yukihiro.nakadaira@...

        --
        You received this message from the "vim_dev" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php
      • Bram Moolenaar
        ... I can reproduce it. Strange, echo d[ f ]() does work. -- Amnesia is one of my favorite words, but I forgot what it means. /// Bram Moolenaar --
        Message 3 of 3 , Jan 18, 2011
          Yukihiro Nakadaira wrote:

          > The following code causes an error "E15: Invalid expression: d["f"]()".
          >
          > let d = {}
          >
          > function d.f()
          > echo "f()"
          > endfunction
          >
          > if 0
          > call d["f"]()
          > endif
          >
          > " or
          >
          > for i in [1]
          > call d["f"]()
          > endfor

          I can reproduce it. Strange, echo d["f"]() does work.

          --
          Amnesia is one of my favorite words, but I forgot what it means.

          /// Bram Moolenaar -- Bram@... -- 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 ///

          --
          You received this message from the "vim_dev" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php
        Your message has been successfully submitted and would be delivered to recipients shortly.