Hi Marcus - I can put an image somewhere if that helps (do you just need the 
.image and .changes)?

Or you can repro from a fresh 6.1 if you follow the exercism Pharo instructions 
(https://exercism.io/tracks/pharo) to load the first hello world-world example 
and run the tests. This has my code changes to make create work with a nil 
class - but maybe we can do better?

Tim


Sent from my iPhone

> On 17 Aug 2018, at 06:21, Marcus Denker <[email protected]> wrote:
> 
> 
> 
>> On 10 Aug 2018, at 23:16, Tim Mackinnon <[email protected]> wrote:
>> 
>> Actually I think I figured that bit out - a bit clumsily - (pointers 
>> appreciated)
>> 
>> createMissingClassActionFor: aMessage in: aContext
>>    |errorNode senderContext newClass variableNode |
>>    senderContext := aContext sender.
>>    errorNode := senderContext method sourceNodeExecutedForPC: senderContext 
>> pc. 
>>    variableNode := errorNode receiver receiver.
>>    
>>    newClass := OCUndeclaredVariableWarning new node: variableNode; 
>> defineClass: variableNode name.
>>    aContext restart.
>> 
>> However that last line is wrong, as it doesn’t restart with my newly defined 
>> class - I also tried
>> 
>> aContext restartWithNewReceiver: newClass
>> 
>> But again, I get a debugger where my class is still bound to nil. So what’s 
>> the trick to re-evaluate with the new class I’ve created? Or maybe I’m 
>> totally on the wrong track (still its very interesting…)
>> 
> 
> 
> what is a bit bad is that you catch the problem “too late” (that is, the DNU 
> to nil, not the read of nil), so nil is already pushed on the stack at this 
> point.
> 
> I tried it in the inspector and at least the class binding was correct after 
> defining the class… do you have an image with the whole code to try?
> 
>    Marcus
> 
> 

Reply via email to