--- a/Collection.st Fri Mar 08 10:25:33 2013 +0100
+++ b/Collection.st Fri Mar 08 23:36:32 2013 +0100
@@ -259,6 +259,7 @@
^ self withSize:n
! !
+
!Collection class methodsFor:'Signal constants'!
emptyCollectionSignal
@@ -509,6 +510,7 @@
].
! !
+
!Collection methodsFor:'accessing'!
anElement
@@ -4147,6 +4149,25 @@
].
graph notEmpty ifTrue:[
+ "search for cycle"
+ |startNode checkBlock|
+
+ checkBlock := [:graphEntry :backTrace|
+ 2 to:graphEntry size do:[:i|
+ |eachChild eachChildGraph|
+ eachChild := graphEntry at:i.
+ (backTrace includesIdentical:eachChild) ifTrue:[
+ backTrace add:eachChild.
+ self error:('cycle in ordering: %1 -> %2' bindWith:startNode with:backTrace reversed) mayProceed:true.
+ ].
+ eachChildGraph := graph at:eachChild.
+ checkBlock value:eachChildGraph value:(backTrace copyWith:eachChild).
+ ].
+ ].
+ graph keysAndValuesDo:[:eachNode :eachGraph|
+ startNode := eachNode.
+ checkBlock value:eachGraph value:(OrderedCollection with:startNode).
+ ].
self error:'cycle in ordering' mayProceed:true.
].
@@ -4459,11 +4480,11 @@
!Collection class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.288 2013-01-25 10:14:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.289 2013-03-08 22:36:32 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.288 2013-01-25 10:14:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.289 2013-03-08 22:36:32 stefan Exp $'
! !