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