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

Re: Calling a non-existing dictionary function doesn't result in an error

Expand Messages
  • Hari Krishna Dara
    ... I think I saw the same behavior, though I didn t do the analysis on why certain calls don t generate an error (assumed that the Vim actually ignored the
    Message 1 of 3 , Oct 24, 2006
      On Mon, 23 Oct 2006 at 5:16pm, Yegappan Lakshmanan wrote:

      > Hi all,
      >
      > When a non-existing dictionary function is invoked using the ":call"
      > command, there is no error. But when it is used in an expression,
      > an error message is displayed. Is this the expected behavior?
      >
      > let a = {}
      > call a.xyz()
      >
      > The ":call" command silently returns without any errors. But
      > the following commands result in error:
      >
      > :let x = a.xyz()
      > E716: Key not present in Dictionary: xyz()
      > E15: Invalid expression: a.xyz()
      >
      > :echo a.xyz()
      > E716: Key not present in Dictionary: xyz()
      > E15: Invalid expression: a.xyz()

      I think I saw the same behavior, though I didn't do the analysis on why
      certain calls don't generate an error (assumed that the Vim actually
      ignored the error because of <silent> mode or something like that).

      I actually want to propose that dictionary should call a special
      function (if available) before giving an error. That will allow us to
      extend the dictionary functionality to support some (psuedo)
      inheritance. The special function should be passed with the name of the
      function that user called and the arguments, and the return value of the
      special function should be passed back to the caller.

      --
      Thanks,
      Hari

      __________________________________________________
      Do You Yahoo!?
      Tired of spam? Yahoo! Mail has the best spam protection around
      http://mail.yahoo.com
    Your message has been successfully submitted and would be delivered to recipients shortly.