[squeak-dev] The Trunk: Kernel-nice.399.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Feb 13 16:14:37 UTC 2010


Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.399.mcz

==================== Summary ====================

Name: Kernel-nice.399
Author: nice
Time: 13 February 2010, 5:14:04.309 pm
UUID: 426cc492-dbd7-ac48-9efb-d32c46007a76
Ancestors: Kernel-nice.398

Merge minor changes from Pharo.
Correct a bug (concatenating aString , aCharacter)

=============== Diff against Kernel-nice.398 ===============

Item was changed:
  ----- Method: SqNumberParser>>readNamedFloatOrFail (in category 'parsing-private') -----
  readNamedFloatOrFail
  	"This method is used when there is no digit encountered:
  	It try and read a named Float NaN or Infinity.
  	Negative sign for -Infinity has been read before sending this method, and is indicated in the neg inst.var.
  	Fail if no named Float is found"
  		
  	neg ifFalse: [(sourceStream nextMatchAll: 'NaN')
  			ifTrue: [^ Float nan]].
  	(sourceStream nextMatchAll: 'Infinity')
  		ifTrue: [^ neg
  			ifTrue: [Float infinity negated]
  			ifFalse: [Float infinity]].
+ 	^self expected: 'a digit between 0 and ' , (String with: (Character digitValue: base - 1))!
- 	^self expected: 'a digit between 0 and ' , (Character digitValue: base - 1)!

Item was changed:
  ----- Method: NumberParser>>readExponent (in category 'parsing-private') -----
  readExponent
  	"read the exponent if any (stored in instVar).
  	Answer true if found, answer false if none.
  	If exponent letter is not followed by a digit,
  	this is not considered as an error.
  	Exponent are always read in base 10."
  	
  	| eneg epos |
  	exponent := 0.
  	sourceStream atEnd ifTrue: [^ false].
  	(self exponentLetters includes: sourceStream peek)
  		ifFalse: [^ false].
  	sourceStream next.
  	eneg := sourceStream peekFor: $-.
  	epos := eneg not and: [self allowPlusSignInExponent and: [sourceStream peekFor: $+]].
  	exponent := self nextUnsignedIntegerOrNilBase: 10.
+ 	exponent ifNil: ["Oops, there was no digit after the exponent letter.Ungobble the letter"
- 	exponent isNil ifTrue: ["Oops, there was no digit after the exponent letter.Ungobble the letter"
  		exponent := 0.
  		sourceStream
  						skip: ((eneg or: [epos])
  								ifTrue: [-2]
  								ifFalse: [-1]).
  					^ false].
  	eneg ifTrue: [exponent := exponent negated].
  	^true!

Item was changed:
  ----- Method: SqNumberParser>>nextNumber (in category 'parsing-public') -----
  nextNumber
  	"main method for reading a number.
  	This one can read Float Integer and ScaledDecimal"
  	
  	| numberOfTrailingZeroInIntegerPart |
  	base := 10.
  	neg := self peekSignIsMinus.
  	integerPart := self nextUnsignedIntegerOrNilBase: base.
  	integerPart ifNil: [
  		"This is not a regular number beginning with a digit
  		It is time to check for exceptional condition NaN and Infinity"
  		^self readNamedFloatOrFail].
  	numberOfTrailingZeroInIntegerPart := nDigits - lastNonZero.
  	(sourceStream peekFor: $r)
  		ifTrue: ["<base>r<integer>"
  			(base := integerPart) < 2
  				ifTrue: [^ self expected: 'an integer greater than 1 as valid radix'].
+ 			self peekSignIsMinus
- 			(sourceStream peekFor: $-)
  				ifTrue: [neg := neg not].
  			integerPart := self nextUnsignedIntegerBase: base.
  			numberOfTrailingZeroInIntegerPart := nDigits - lastNonZero].
  	^ (sourceStream peekFor: $.)
  		ifTrue: [self readNumberWithFractionPartNumberOfTrailingZeroInIntegerPart: numberOfTrailingZeroInIntegerPart]
  		ifFalse: [self makeIntegerOrScaledInteger]!

Item was changed:
  ----- Method: NumberParser>>expected: (in category 'error') -----
  expected: errorString 
  	requestor isNil
  		ifFalse: [requestor
  				notify: errorString , ' ->'
  				at: sourceStream position
  				in: sourceStream].
+ 	^ self fail!
- 	self fail!

Item was changed:
  ----- Method: Number class>>readFrom: (in category 'instance creation') -----
  readFrom: stringOrStream 
  	"Answer a number as described on aStream.  The number may
  	be any accepted Smalltalk literal Number format.
  	It can include a leading radix specification, as in 16rFADE.
+ 	It can as well be NaN, Infinity or -Infinity for conveniency.
+ 	If stringOrStream does not start with a valid number description, fail."
- 	It can as well be NaN, Infinity or -Infinity for conveniency."
  	
  	^(SqNumberParser on: stringOrStream) nextNumber!

Item was changed:
  ----- Method: NumberParser>>on: (in category 'initialize-release') -----
+ on: aStringOrStream 
+ 	sourceStream := aStringOrStream isString 
+ 		ifTrue: [ aStringOrStream readStream ]
+ 		ifFalse: [ aStringOrStream ].
- on: aStringOrStream
- 	sourceStream := aStringOrStream isString
- 		ifTrue: [ReadStream on: aStringOrStream]
- 		ifFalse: [aStringOrStream].
  	base := 10.
  	neg := false.
  	integerPart := fractionPart := exponent := scale := 0.
+ 	requestor := failBlock := nil!
- 	requestor := failBlock := nil.!

Item was changed:
  ----- Method: NumberParser>>fail (in category 'error') -----
  fail
+ 	failBlock ifNotNil: [^failBlock value].
- 	failBlock isNil ifFalse: [^failBlock value].
  	self error: 'Reading a number failed'!




More information about the Squeak-dev mailing list