Eliot Miranda uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-eem.866.mcz
==================== Summary ====================
Name: Kernel-eem.866 Author: eem Time: 6 August 2014, 10:37:24.712 am UUID: 906bb1aa-c7f8-4630-ba45-5374209ddf52 Ancestors: Kernel-eem.865
Fix the bug in SqNumberParser whereby a fractional value is parsed as a Fraction not as a Float. Fractions are not literals and hence factional values must be answered as Floats. Ensure that the semantics of ExtendedNumberParser are unchanged; it /is/ free to answer fractional values as Fractions. Update ExtendedNumberParser's comment to reflect this.
=============== Diff against Kernel-eem.865 ===============
Item was changed: SqNumberParser subclass: #ExtendedNumberParser instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Kernel-Numbers'!
+ !ExtendedNumberParser commentStamp: 'eem 8/6/2014 10:34' prior: 0! + An ExtendedNumberParser parses numbers, extending Squeak number syntax with these rules - !ExtendedNumberParser commentStamp: 'nice 2/13/2010 00:39' prior: 0! - An ExtendedNumberParser is extending Squeak number syntax with these rules
- allow partial specification of integer and fraction parts: 1.e2 .1e3 are both 100.0 - allow plus sign before number and in exponent + - integers raised to exponents, the results of which are fractional, are answered as Fractions, not Floats - !
Item was added: + ----- Method: ExtendedNumberParser>>makeIntegerOrScaledInteger (in category 'parsing-private') ----- + makeIntegerOrScaledInteger + "at this point, there is no digit, nor fractionPart. + maybe it can be a scaled decimal with fraction omitted..." + + neg + ifTrue: [integerPart := integerPart negated]. + self readExponent + ifTrue: [^integerPart * (base raisedToInteger: exponent)]. + (self readScaleWithDefaultNumberOfDigits: 0) + ifTrue: [^integerPart asScaledDecimal: scale]. + ^ integerPart!
Item was changed: ----- Method: SqNumberParser>>makeIntegerOrScaledInteger (in category 'parsing-private') ----- makeIntegerOrScaledInteger + "At this point, there is no digit, nor fractionPart. + Maybe it can be a scaled decimal with fraction omitted... + Maybe it can be a Float with a negative exponent" - "at this point, there is no digit, nor fractionPart. - maybe it can be a scaled decimal with fraction omitted..." + neg ifTrue: + [integerPart := integerPart negated]. + self readExponent ifTrue: + ["Check that the result is an integer, otherwise answer a Float. Fractions are /not/ valid literals." + (exponent >= 0 or: [(integerPart * (base raisedToInteger: exponent)) isInteger]) ifFalse: + [base := base asFloat]. + ^integerPart * (base raisedToInteger: exponent)]. + (self readScaleWithDefaultNumberOfDigits: 0) ifTrue: + [^integerPart asScaledDecimal: scale]. - neg - ifTrue: [integerPart := integerPart negated]. - self readExponent - ifTrue: [^integerPart * (base raisedToInteger: exponent)]. - (self readScaleWithDefaultNumberOfDigits: 0) - ifTrue: [^integerPart asScaledDecimal: scale]. ^ integerPart!
packages@lists.squeakfoundation.org