On Nov 30, 2009, at 10:51 PM, Henrik Sperre Johansen wrote:
On 30.11.2009 22:06, Schwab,Wilhelm K wrote:
(2) Debugging drawing code is probably best done using a single-shot breakpoint. I _think_ I have seen something about halt once in Pharo. FWIW, somebody posted a class called Once that creates such a feature that looks like
Once do:[ "do anything here, but this is common:" self halt. ].
Somewhere you need to do Once reset or something (it's obvious from the code) to enable the breakpoint. Once evaluates the block one time, and then won't evaluate the block again until told to do so. If there is a need for this in Pharo, I should be able to "port" it - IIRC, it was licensed for public consumption.
It exists already, is called haltOnce, and is used in the same manner as halt. To arm it, evaluate Object setHaltOnce. Make sure to remove them when you finish debugging though, since the overhead is non-negligible.
In addition, I added a trivial version of "contextual" or "subjective" halt feature to #haltIf:. It looks up the stack and only halts if there is a method with the name if the parameter is a symbol. Thus you can do: self haltIf: #testThatIWrote Of course, at some point (years, not days, I fear) we will make the deep principle that is hidden in this idea a core feature of the reflective model... Marcus