for your info 
this is fixed now :)
Tx alex and objectprofilers for this nice fix.

Stef

On Nov 11, 2013, at 3:22 PM, Alexandre Bergel <alexandre.ber...@me.com> wrote:

> Hi!
> 
> Many of us have discovered that in the last Pharo adding a temporary variable 
> is added before the | .. | part of the section.
> 
> Pablo Estefo and I spend time on understanding where this comes from. But 
> since this is deep into the compilation chain, it would be great if an expert 
> (Marcus ? :-) could check what we have done.
> 
> OCUndeclaredVariableWarning>>declareTempAndPaste:  is the culprit method. We 
> have changed:
>       tempsMark :=  self methodNode body  leftBar ifNil: [ self methodNode 
> body start ].
> into 
>       tempsMark :=  self methodNode body  rightBar ifNil: [ self methodNode 
> body start ].
> 
> 
> So, the new version of the method should be:
> -=-=-=-=-=-=-=-=-=-=-=-=
> OCUndeclaredVariableWarning>>declareTempAndPaste: name
>       | insertion delta theTextString characterBeforeMark tempsMark |
> 
>       theTextString := self methodNode source.
>       tempsMark :=  self methodNode body  rightBar ifNil: [ self methodNode 
> body start ].
>       characterBeforeMark := theTextString at: tempsMark-1 ifAbsent: [$ ].
>       
>       (theTextString at: tempsMark) = $| ifTrue:  [
>               "Paste it before the second vertical bar"
>               insertion := name, ' '.
>               
>               characterBeforeMark isSeparator ifFalse: [insertion := ' ', 
> insertion].
>               delta := 0.
>       ] ifFalse: [
>               "No bars - insert some with CR, tab"
>               insertion := '| ' , name , ' |',String cr.
>               delta := 2.     "the bar and CR"
>               characterBeforeMark = Character tab ifTrue: [
>                       insertion := insertion , String tab.
>                       delta := delta + 1.     "the tab" ]
>               ].
>       tempsMark := tempsMark +
>               (self substituteWord: insertion
>                       wordInterval: (tempsMark to: tempsMark-1)
>                       offset: 0) - delta.
>       self methodNode scope addTemp: name.
>       ^ (node owningScope lookupVar: node name)
>               ifNil: [self error: 'should not happen']
> -=-=-=-=-=-=-=-=-=-=-=-=
> 
> We have tried different cases and it seems to work.
> Does this makes sense?
> 
> Cheers,
> Alexandre
>       
> -- 
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> 


Reply via email to