--- a/Cons.st Mon Apr 01 17:17:55 2019 +0200
+++ b/Cons.st Wed Apr 03 08:33:16 2019 +0200
@@ -566,25 +566,36 @@
^ self.
].
- (car isLazyValue not and:[ car isCons ]) ifTrue:[
- aStream nextPutAll:'('.
- car printOn:aStream.
- aStream nextPutAll:')'.
- ] ifFalse:[
- car printOn:aStream.
+ aStream nextPutAll:'('.
+ self printRestOn:aStream.
+
+ "Modified: / 18-05-2010 / 10:25:49 / cg"
+ "Modified: / 02-04-2019 / 23:59:15 / Claus Gittinger"
+!
+
+printRestOn:aStream
+ thisContext isRecursive ifTrue:[
+ 'Cons [error]: printOn: of self referencing collection.' errorPrintCR.
+ aStream nextPutAll:'#("recursive")'.
+ ^ self.
].
- aStream nextPutAll:'!!'.
-
- (cdr isLazyValue not and:[ cdr isCons ]) ifTrue:[
- aStream nextPutAll:'('.
- cdr printOn:aStream.
+ car printOn:aStream.
+ cdr isNil ifTrue:[
aStream nextPutAll:')'.
- ] ifFalse:[
- cdr printOn:aStream.
+ ^ self.
+ ].
+ (cdr isLazyValue not and:[ cdr isCons ]) ifTrue:[
+ aStream nextPutAll:' '.
+ cdr printRestOn:aStream.
+ ^ self.
].
+
+ aStream nextPutAll:' . '.
+ cdr printOn:aStream.
+ aStream nextPutAll:')'.
- "Modified: / 18-05-2010 / 10:25:49 / cg"
+ "Created: / 02-04-2019 / 23:55:05 / Claus Gittinger"
! !
!Cons methodsFor:'queries'!