[squeak-dev] The Trunk: Tools-bf.395.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Wed Mar 21 19:53:00 UTC 2012


Any interest to use becomeForward: in such case?

Nicolas

Le 21 mars 2012 20:37, <commits at source.squeak.org> a écrit :

> Bert Freudenberg uploaded a new version of Tools to project The Trunk:
> http://source.squeak.org/trunk/Tools-bf.395.mcz
>
> ==================== Summary ====================
>
> Name: Tools-bf.395
> Author: bf
> Time: 21 March 2012, 8:37:16.352 pm
> UUID: daf7f77d-d62f-4b59-ab6c-ceeed1058c8a
> Ancestors: Tools-bf.394
>
> Fix receiverInspector having the wrong class in debugger. To reproduce the
> problem, evaluate "Dictionary new halt values", step into the "values"
> method, select "self size" and choose "debug it" from the context menu.
> This would open a debugger whose receiverInspector was still a
> ContextInspector, when it should have been a DictionaryInspector.
>
> =============== Diff against Tools-bf.394 ===============
>
> Item was changed:
>  ----- Method: Inspector>>inspect: (in category 'initialize-release') -----
>  inspect: anObject
>        "Initialize the receiver so that it is inspecting anObject. There
> is no current selection.
>
>        Normally the receiver will be of the correct class (as defined by
> anObject inspectorClass),
>        because it will have just been created by sedning inspect to
> anObject.   However, the
>        debugger uses two embedded inspectors, which are re-targetted on
> the current receiver
>        each time the stack frame changes.  The left-hand inspector in the
> debugger has its
>        class changed by the code here.  Care should be taken if this
> method is overridden to
>        ensure that the overriding code calls 'super inspect: anObject', or
> otherwise ensures that
>        the class of these embedded inspectors are changed back."
>
>        | c |
>        c := anObject inspectorClass.
> +       self class ~= c ifTrue: [
> +               self class format = c format
> +                       ifTrue: [self primitiveChangeClassTo: c basicNew]
> +                       ifFalse: [self become: c basicNew]].
> -       (self class ~= c and: [self class format = c format]) ifTrue: [
> -               self primitiveChangeClassTo: c basicNew].
> -
>        "Set 'object' before sending the initialize message, because some
> implementations
>        of initialize (e.g., in DictionaryInspector) require 'object' to be
> non-nil."
>
>        object := anObject.
>        self initialize!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20120321/82167b94/attachment.htm


More information about the Squeak-dev mailing list