[squeak-dev] Bug in Environment>>#removeKey:ifAbsent:
christoph.thiede at student.hpi.uni-potsdam.de
christoph.thiede at student.hpi.uni-potsdam.de
Sat Sep 18 13:49:50 UTC 2021
Alright. Please see Environments-ct.83 and Tests-ct.465, currently both located in the inbox. :-)
Best,
Christoph
---
Sent from Squeak Inbox Talk
On 2021-09-01T13:24:56-07:00, tim at rowledge.org wrote:
> The convention as I recall it has always been that we return the object added with #add: or #at:put: type messages, and the object removed with #remove: or #removeAt: type messages
>
> > On 2021-09-01, at 1:03 PM, Jakob Reschke <jakres+squeak at gmail.com> wrote:
> >
> > Hi Christoph,
> >
> > At which comments did you look? The comments in the remove methods in
> > Environment do not state that the previous value were returned. They
> > do not say anything about the answer to the message.
> >
> > Notwithstanding that I, too, would find it more intuitive if this
> > worked similar to the Dictionary protocol and did in fact return the
> > previous value. Practically I doubt that if you remove a name from a
> > namespace you should have a use for the last value.
> >
> > The binding is overwritten in Environment>>#undeclare:from: by the
> > becomeForward. It redirects everything that used the existing binding
> > to the new undeclared binding, which has the value nil. (That is
> > good.) So to "fix" the behavior of removeKey: one has to get the value
> > of the binding before running the policies. The undeclare:from: is
> > sent from Environment>>#hideBinding:, which is used in all the import
> > policies, including importSelf.
> >
> > Kind regards,
> > Jakob
> >
> > Am So., 29. Aug. 2021 um 01:32 Uhr schrieb
> > <christoph.thiede at student.hpi.uni-potsdam.de>:
> >>
> >> Hi all,
> >>
> >> I just stumbled upon the following behavior:
> >>
> >> Smalltalk globals at: #MyTempVar put: 42.
> >> Smalltalk globals removeKey: #MyTempVar. "--> nil"
> >>
> >> This confuses me, according to the method comment, I would have expected #removeKey: to answer the previously stored value instead, but somehow some binding policy appears to reset the value during removal. Is this a bug, or should we change the comment? Or should we just evaluate the binding prior to noticing the removal?
> >>
> >> Best,
> >> Christoph
> >>
> >> ---
> >> Sent from Squeak Inbox Talk
> >
> >
>
>
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Strange OpCodes: JUM: Jeer at User's Mistake
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210918/9fcf3859/attachment.html>
More information about the Squeak-dev
mailing list
|