Skip to content

Reimplement `methods` with several improvements; address issue #34

Martian MoorGrove requested to merge (removed):2methods into master

Addressing issue #34 and its general concern about the construction of the methods macro, this merge request's version of methods:

  • Installs continuation marks on the calls to methods and the method-not-found-handler. The marks cooperate with the Errortrace library, providing useful tracebacks
  • Improves parsing of syntax in these ways: syntax error messages can give more information; formals syntax error messages show the name methods instead of lambda; an error is raised if there is a duplicate method name or #:extends
  • Adds the ability to give an object/debug name to the methods dispatcher
  • Improves the raise-method-not-found error message by including the methods dispatcher name
  • Provides performance improvements for dispatching (especially when keyword arguments are used) and the bcom operation that was previously slowed down by instances of procedure-rename calls

There are many explanatory comments in the code. You may want to remove some of them after you read them.

Edited by Martian MoorGrove

Merge request reports