#UI_ENHANCEMENT by cg
authorClaus Gittinger <cg@exept.de>
Wed, 03 Apr 2019 08:33:16 +0200
changeset 4932 571ac375933a
parent 4931 74466e5c61f6
child 4933 f6c830dda3b0
#UI_ENHANCEMENT by cg class: Cons added: #printRestOn: changed: #printOn:
Cons.st
--- 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'!