[squeak-dev] Setting class instance variable nil...that's interesting

gettimothy gettimothy at zoho.com
Sat Sep 12 16:47:15 UTC 2020


Christoph and Eliot,



Thank you both.











---- On Sat, 12 Sep 2020 10:40:20 -0400 Eliot Miranda <eliot.miranda at gmail.com> wrote ----


Hi tty,
On Sep 12, 2020, at 7:18 AM, gettimothy via Squeak-dev <mailto:squeak-dev at lists.squeakfoundation.org> wrote:



Ignore if spam...






It’s not spam.




It is interesting that I can reset a class instance variable inside one of the methods of a class with a doit.

However, I cannot do it from a Workspace .






The creasing is that doits always happen in the context of a specific receiver and different contexts have different receivers.  Trace Compiler class>>#evaluate: down and you’ll see where the receiver is supplied before the Compiler instance is created.


In a Workspace the receiver is nil.

In an Inspector the receiver is the object being inspected 

In an explorer the receiver is the currently selected object (IIRC)

In a browser the receiver is the currently selected class (or nil if none selected, or the current method’s class in a method list browser)



And within a doit (naturally since a doit is simply an anonymous method) all the inst cars if the receiver are in scope.  Since nil has no inst vars there are no inst vars in scope in a workspace.








TemplateTitleWords := nil  from within the method area works (surprising, but very handy).

WikitextTemplates TemplateTitleWords :=  nil.  does not (as expected)



I expect the latter, I am surprised by the former.



Don't get me wrong, it is a handy feature , but if it is a bug, here is a heads up.



cheers,



tty
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200912/a643c8e9/attachment.html>


More information about the Squeak-dev mailing list