added: RecursiveCollectionStoreStringSignal
authortm
Fri, 04 Aug 2000 18:44:15 +0200
changeset 5497 92bb94a53929
parent 5496 338c81a04468
child 5498 489dc2e6bd4f
added: RecursiveCollectionStoreStringSignal
ArrayedCollection.st
Collection.st
--- a/ArrayedCollection.st	Thu Aug 03 19:48:44 2000 +0200
+++ b/ArrayedCollection.st	Fri Aug 04 18:44:15 2000 +0200
@@ -10,6 +10,8 @@
  hereby transferred.
 "
 
+"{ Package: 'stx:libbasic' }"
+
 SequenceableCollection subclass:#ArrayedCollection
 	instanceVariableNames:''
 	classVariableNames:''
@@ -298,6 +300,7 @@
     |index "{ Class: SmallInteger }"|
 
     thisContext isRecursive ifTrue:[
+        RecursiveCollectionStoreStringSignal raiseRequestWith:self.
         'ArrayedCollection [error]: storeOn: of self referencing collection.' errorPrintCR.
         aStream nextPutAll:'#recursive'.
         ^ self
@@ -415,5 +418,5 @@
 !ArrayedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ArrayedCollection.st,v 1.44 1997-06-16 18:20:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ArrayedCollection.st,v 1.45 2000-08-04 16:44:15 tm Exp $'
 ! !
--- a/Collection.st	Thu Aug 03 19:48:44 2000 +0200
+++ b/Collection.st	Fri Aug 04 18:44:15 2000 +0200
@@ -15,7 +15,7 @@
 Object subclass:#Collection
 	instanceVariableNames:''
 	classVariableNames:'InvalidKeySignal EmptyCollectionSignal ValueNotFoundSignal
-		NotEnoughElementsSignal'
+		NotEnoughElementsSignal RecursiveCollectionStoreStringSignal'
 	poolDictionaries:''
 	category:'Collections-Abstract'
 !
@@ -86,6 +86,10 @@
         EmptyCollectionSignal := NotEnoughElementsSignal newSignalMayProceed:true.
         EmptyCollectionSignal nameClass:self message:#emptyCollectionSignal.
         EmptyCollectionSignal notifierString:'operation not allowed for empty collections'.
+
+        RecursiveCollectionStoreStringSignal := QuerySignal new.
+        RecursiveCollectionStoreStringSignal nameClass:self message:#recursiveCollectionStoreStringSignal.
+        RecursiveCollectionStoreStringSignal notifierString:'attempt to generate storeString of recursive collection'.
     ]
 
     "Modified: / 8.11.1997 / 19:18:17 / cg"
@@ -223,6 +227,33 @@
     ^ NotEnoughElementsSignal
 !
 
+recursiveCollectionStoreStringSignal
+    "return the query signal used to report storeString generation of recursive collections"
+
+    ^ RecursiveCollectionStoreStringSignal
+
+    "
+     Collection recursiveCollectionStoreStringSignal handle:[:ex |
+        self halt
+     ] do:[
+        |a|
+
+        a := Array new:1.
+        a at:1 put:a.
+        a storeOn:Transcript
+     ]
+    "
+
+    "
+     |a|
+
+     a := Array new:1.
+     a at:1 put:a.
+     a storeOn:Transcript
+    "
+
+!
+
 valueNotFoundSignal
     "return the signal used to report a nonexisting element."
 
@@ -1817,6 +1848,7 @@
     |notEmpty|
 
     thisContext isRecursive ifTrue:[
+        RecursiveCollectionStoreStringSignal raiseRequestWith:self.
         'Collection [error]: storeOn: of self referencing collection.' errorPrintCR.
         aStream nextPutAll:'#recursive'.
         ^ self
@@ -2106,6 +2138,6 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.98 2000-04-07 08:09:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Collection.st,v 1.99 2000-08-04 16:44:03 tm Exp $'
 ! !
 Collection initialize!