On 17 Aug 2018, at 07:17, Marcus Denker <marcus.denker@inria.fr> wrote: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) 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!TimSent from my iPhoneOn 10 Aug 2018, at 23:16, Tim Mackinnon <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 triedaContext restartWithNewReceiver: newClassBut 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