3.9 vs. 3.10 : Closures, fixTemps

Mathieu Suen mathk.sue at gmail.com
Wed Dec 19 14:50:23 UTC 2007


Hi,

Have you try:

renderNewModelButton: html
  { M1. M2 } do:
    [ : modelClass |
       html submitButton
       callback:
         [ | newModel |
             self session magma commit: [
            	   newModel := self repository models add: modelClass new.]

             self call: (newModel viewerClass new model: newModel).
             selectedModel := nil ] fixTemps;  value: #New , ' ' ,  
modelClass name ]

On Dec 19, 2007, at 3:08 PM, itsme213 wrote:

> "Mathieu Suen" <mathk.sue at gmail.com> wrote
>
>> The NewCompiler status is:
>>
>> Compiler:
>> - Block closure - Work
>
>
> I have not yet tried NewCompiler, but here is one that does not work  
> in
> 3.10. At point 1>>, newModel is correct and non-nil. At point 2>>  
> newModel

Of cours at pont 2 is nil cause:
The #fixTemps of the commit block will create a copy of the newModel  
temp.
Then when you affect a value to the newModel inside the block you are  
affecting the copy not the original one.

Will the second fix temp will prevent you having modelClass being the  
same for the commit  of M1 and M2.
It will copy the modelClass temps.

Ask if I haven't been clear.

Cheers,

>
> is nil. I'm trying this on 3.10gamma.
>
> Thanks -- Sophie
>
> renderNewModelButton: html
>  { M1. M2 } do:
>    [ : modelClass |
>       html submitButton
>       callback:
>         [ | newModel |
>           self session magma commit: [
>             newModel := self repository models add: modelClass new.
> 1>>          self halt] fixTemps.
>             self halt.
> 2>>          self call: (newModel viewerClass new model: newModel).
>             selectedModel := nil ] fixTemps;
>       value: #New , ' ' , modelClass name ]
>
>> Decompiler
>>  - Block closure - Don't Work (That should not take too long to fix  
>> it)
>
> That would unfortunately make it impossible for newbies like me to  
> debug
> etc.
>
>
>
>

	Mth






More information about the Squeak-dev mailing list