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 > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > > > >