> On 17 Aug 2018, at 13:00, Tim Mackinnon <tim@testit.works> wrote:
> 
> 
> 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 
> <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?
> 
I will do that and have a look!

> Tim
> 
> 
> Sent from my iPhone
> 
> On 17 Aug 2018, at 06:21, Marcus Denker <marcus.den...@inria.fr 
> <mailto:marcus.den...@inria.fr>> wrote:
> 
>> 
>> 
>>> On 10 Aug 2018, at 23:16, Tim Mackinnon <tim@testit.works 
>>> <mailto:tim@testit.works>> 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