[Pkg] The Trunk: Collections-ul.564.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 3 16:19:15 UTC 2014


Chris Muller uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ul.564.mcz

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

Name: Collections-ul.564
Author: ul
Time: 3 February 2014, 2:35:36.802 pm
UUID: 4b9a37ef-df86-40a0-a0dd-8e8b2c04d4ed
Ancestors: Collections-ul.563

Make sure that Array >> #isLiteral won't get into an infinite recursion, even if the receiver has an recursive structure.

=============== Diff against Collections-ul.563 ===============

Item was changed:
  ----- Method: Array>>isLiteral (in category 'testing') -----
  isLiteral
+ 	
+ 	^self class == Array and: [
+ 		self isLiteralIfContainedBy: IdentitySet new ]!
- 	^self class == Array and: [self allSatisfy: [:each | each isLiteral]]!

Item was added:
+ ----- Method: Array>>isLiteralIfContainedBy: (in category 'testing') -----
+ isLiteralIfContainedBy: parents
+ 	" Answer whether the receiver has a literal text form recognized by the compiler. Precondition: the receiver is an instance of Array. "
+ 
+ 	(parents includes: self) ifTrue: [ ^false ].
+ 	parents add: self.
+ 	1 to: self size do: [ :index |
+ 		| element |
+ 		element := self at: index.
+ 		(element class == Array
+ 			ifTrue: [ element isLiteralIfContainedBy: parents ]
+ 			ifFalse: [ element isLiteral ]) ifFalse: [ ^false ] ].
+ 	parents remove: self.
+ 	^true!



More information about the Packages mailing list