2009/5/11 Tobias C. Rittweiler <tcr@...>:
> The reason is that SB-C::FIND-ERROR-CONTEXT is invoked twice (I'm not
> sure why), once in a context where *CURRENT-PATH* is now set due to the
> new binding in PROCESS-TOPLEVEL-FORM, and then in a context where
> *CURRENT-PATH* is NIL.
> Thos results in two different source paths for the same source which
> violates an invariant of SWANK's M-. machinery.
I don't think that's an invariant you should not rely on: if you check
the SOURCE-MAP in SWANK you'll see that even before this change some
source forms get multiple locations.
The problem in SWANK was that the source location wasn't as good as
before, since F-E-C preferred *CURRENT-PATH* to NODE-SOURCE-PATH --
which in turn cause the lookup of a form with multiple source
locations in the map. This has been fixed in 184.108.40.206.
> I'm just about polishing up and sending a patch which changes
> FIND-ERROR-CONTEXT to choose among *CURRENT-PATH* and the node's
> source-path, so the same source-path will be returned.
Looks interesting, thanks!