Why does Squeak what it does when a method references a non-existing ivar?

Colin Putney cputney at wiresong.ca
Sat Nov 12 01:43:40 UTC 2005


On Nov 11, 2005, at 7:43 PM, Cees De Groot wrote:

> I had a funny problem with Seaside where a child component behaved in
> a funny way, which turned out to be caused by the ivar representing
> the child component not being present in the class.
>
> On investigation, it turns out that when the class is recompiled,
> methods that had e.g. a storeIntoRcvr: opcode to write the now-absent
> ivar get recompiled with a storeIntoLit: opcode.
>
> Shouldn't the compiler throw an error instead? This can result in very
> hard-to-track bugs...

Well, that would mean that you could never remove an ivar that was  
still referenced by a method. There's a certain security in that, I  
suppose, but personally, I'd rather the system didn't protect me from  
myself. The binding in the literal frame is also referenced by  
Undeclared, which makes it easier to find.

Colin



More information about the Squeak-dev mailing list