[squeak-dev] The Trunk: Kernel-nice.1042.mcz

Tim Felgentreff timfelgentreff at gmail.com
Fri Sep 30 09:23:35 UTC 2016


This breaks compiling EToys scripts when those refer to global classes. I
probably don't understand something here, but for context, EToys players
are not in the global environment, they create their own otherwise empty
environment.

On Thu, 29 Sep 2016 at 10:19 <commits at source.squeak.org> wrote:

> Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-nice.1042.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-nice.1042
> Author: nice
> Time: 29 September 2016, 10:15:16.009388 am
> UUID: 8923b113-72cf-414e-802c-cef7c50f8ad1
> Ancestors: Kernel-tfel.1041, Kernel-nice.798
>
> Merge Kernel-nice.798 (variable scope fix, don't resolve name in
> superclass environment)
>
> Reminder: this requires some Smalltalk exportSelf.
>
> =============== Diff against Kernel-tfel.1041 ===============
>
> Item was changed:
>   ----- Method: Class>>bindingOf:environment: (in category 'compiling')
> -----
>   bindingOf: varName environment: anEnvironment
>         "Answer the binding of some variable resolved in the scope of the
> receiver"
>         | aSymbol binding |
>         aSymbol := varName asSymbol.
>
> +       "First look in local classVar dictionary."
> +       binding := self classPool bindingOf: aSymbol.
> +       binding ifNotNil:[^binding].
> -       "First look in classVar dictionary."
> -       (self classThatDefinesClassVariable: aSymbol) ifNotNil:
> -               [:x | ^x classPool bindingOf: aSymbol].
>
> +       "Next look in local shared pools."
> -       "Next look in shared pools."
>         self sharedPools do:[:pool |
>                 binding := pool bindingOf: aSymbol.
>                 binding ifNotNil:[^binding].
>         ].
>
> +       "Next look into superclass pools"
> +       superclass ifNotNil: [^ superclass bindingOf: aSymbol environment:
> anEnvironment].
> +
> +       "No more superclass... Last look in declared environment."
> +       ^anEnvironment bindingOf: aSymbol
> -       "Next look in declared environment."
> -       binding := anEnvironment bindingOf: aSymbol.
> -       binding ifNotNil:[^binding].
>
> -       "Finally look higher up the superclass chain and fail at the end."
> -       superclass == nil
> -               ifTrue: [^ nil]
> -               ifFalse: [^ superclass bindingOf: aSymbol].
> -
>   !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20160930/d225bd28/attachment.htm


More information about the Squeak-dev mailing list