On Nov 25, 2010, at 11:41 07AM, Levente Uzonyi wrote:

On Thu, 25 Nov 2010, Henrik Johansen wrote:


On Nov 25, 2010, at 10:58 44AM, Benjamin wrote:

Hello guys,

Is there a reason this method use :

(Scanner isLiteralSymbol: '_')
ifTrue: [ self initializeChars: '_' to: #alphabetic ]
ifFalse: [ self initializeChars: '_' to: #special ].

and not

(Scanner allowUnderscoreAsAssignment)
ifTrue: [ self initializeChars: '_' to: #special ]
ifFalse:[ self initializeChars: '_' to: #alphabetic ]

?


Cheers,

Ben

Compatibility I would guess.
In Squeak, allowUnderscoreAsAssignment is still a Preferences method.

No, it never was a method of Preferences. It's a pragma preference, but in Squeak 4.1 it has a different name, IIRC prefAllowUnderscoreAssignment.


Levente

My bad, in the 4.1 image there's 
Preferences >> allowUnderscoreAssignment
^ self
valueOfFlag: #allowUnderscoreAssignment
ifAbsent: [false]
(Added by Parser class>>#initialize), I didn't check if it was actually in use anymore.

Compatibility seems the be the reason anyways though, as you said the Scanner pragma preference has a different name.


On Nov 25, 2010, at 11:42 56AM, Levente Uzonyi wrote:

On Thu, 25 Nov 2010, Henrik Johansen wrote:

P.S. At the very least it could be changed to Scanner isLiteralSymbol: #_

I guess not. There was a bug in Squeak (and probably Pharo too), because the compiler replaced #_ to #':=' during compilation. See http://bugs.squeak.org/view.php?id=7571 .

:(
Can't reproduce it in Pharo 1.0 onwards, with allowUnderscore on/off, though.

Cheers,
Henry