#BUGFIX by cg expecco_2_11_1
authorClaus Gittinger <cg@exept.de>
Tue, 08 Aug 2017 18:49:01 +0200
changeset 4184 e86cf3691f8c
parent 4183 4e9dedb504ca
child 4185 e178b64ce95d
#BUGFIX by cg class: CascadeNode added: #printMessagePartOn:indent: changed: #printOn:indent: avoid recursion error also when printing
CascadeNode.st
--- a/CascadeNode.st	Tue Aug 08 18:22:43 2017 +0200
+++ b/CascadeNode.st	Tue Aug 08 18:49:01 2017 +0200
@@ -257,14 +257,12 @@
 
 !CascadeNode methodsFor:'printing & storing'!
 
-printOn:aStream indent:i 
+printMessagePartOn:aStream indent:i 
     |selectorParts|
 
     selectorParts := selector asCollectionOfSubstringsSeparatedBy:$:.
     selectorParts last isEmpty ifTrue:[selectorParts := selectorParts copyButLast:1].
 
-    receiver printOn:aStream indent:i.
-    aStream nextPutAll:'; '.
     argArray size == 0 ifTrue:[
         selector printOn:aStream
     ] ifFalse:[
@@ -275,11 +273,44 @@
                     space;
                     nextPutAll:selPart;
                     nextPutAll:': '.
-                arg printOn:aStream indent:i + 4 parenthized:(arg precedence <= self precedence).
+                arg 
+                    printOn:aStream 
+                    indent:i + 4 
+                    parenthized:(arg precedence <= self precedence).
             ]
     ]
 
-    "Modified: / 12-09-2011 / 09:46:45 / cg"
+    "Created: / 08-08-2017 / 18:24:11 / cg"
+!
+
+printOn:aStream indent:i 
+    |leftMostExpression sequence|
+
+    "/ new code:
+
+    leftMostExpression := receiver.
+    sequence := OrderedCollection new.
+    [leftMostExpression isCascade] whileTrue:[
+        sequence addFirst:leftMostExpression.
+        leftMostExpression := leftMostExpression receiver.
+    ].
+
+    leftMostExpression printOn:aStream indent:i.
+    aStream nextPutAll:'; '.
+
+    sequence do:[:eachCascadeMessage |
+        eachCascadeMessage printMessagePartOn:aStream indent:i.
+        aStream nextPutAll:'; '.
+    ].
+    self printMessagePartOn:aStream indent:i
+
+    "/ old code:
+    
+    "/ receiver printOn:aStream indent:i.
+    "/ aStream nextPutAll:'; '.
+    "/ self printMessagePartOn:aStream indent:i
+
+    "Modified: / 08-08-2017 / 18:27:21 / cg"
 ! !
 
 !CascadeNode methodsFor:'testing'!