--- a/MessageNode.st Wed Apr 20 12:15:34 2005 +0200
+++ b/MessageNode.st Wed Apr 20 16:41:54 2005 +0200
@@ -2823,91 +2823,39 @@
!MessageNode methodsFor:'printing & storing'!
-printOn:aStream indent:i
- |needParen selectorParts index index2 arg|
-
- (#(whileTrue: whileFalse:) includes:selector) ifTrue:[
+printOn:aStream indent:i
+ |selectorParts|
+
+ (#( whileTrue: whileFalse: ) includes:selector) ifTrue:[
receiver isBlock ifTrue:[
^ self printWhileOn:aStream indent:i
].
].
-
- index := 1.
- selectorParts := OrderedCollection new.
- [index == 0] whileFalse:[
- index2 := selector indexOf:$: startingAt:index.
- index2 ~~ 0 ifTrue:[
- selectorParts add:(selector copyFrom:index to:index2).
- index2 := index2 + 1
- ].
- index := index2
- ].
-
- needParen := false.
- receiver isMessage ifTrue:[
- receiver isUnaryMessage ifFalse:[
- receiver isBinaryMessage ifFalse:[
- needParen := true
- ].
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- receiver printOn:aStream indent:i.
- needParen ifTrue:[
- aStream nextPutAll:')'
- ].
-
- 1 to:(argArray size) do:[:argIndex |
- aStream cr.
- aStream spaces:i+4.
- (selectorParts at:argIndex) printOn:aStream.
-"/ aStream space.
- arg := argArray at:argIndex.
- needParen := false.
- arg isMessage ifTrue:[
- arg isBinaryMessage ifFalse:[
- arg isUnaryMessage ifFalse:[
- needParen := true
- ]
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- arg printOn:aStream indent:i+4.
- needParen ifTrue:[
- aStream nextPutAll:') '
- ].
- ]
+ selectorParts := selector asCollectionOfSubstringsSeparatedBy:$:.
+ receiver printOn:aStream indent:i parenthized:(receiver precedence <= self precedence).
+ argArray with:selectorParts
+ do:[:arg :selPart |
+ aStream
+ cr;
+ spaces:i + 4;
+ nextPutAll:(selPart , ':').
+ arg printOn:aStream indent:i + 4 parenthized:(arg precedence <= self precedence).
+ ]
+
+ "Modified: / 20-04-2005 / 14:29:16 / cg"
!
printWhileOn:aStream indent:i
- |needParen arg|
-
"special handling of whileTrue/whileFalse"
+ |arg|
+
aStream nextPutAll:'['.
receiver statements printOn:aStream indent:i.
- aStream nextPutAll:'] whileTrue: '.
+ aStream nextPutAll:'] ',selector,' '.
arg := argArray at:1.
- needParen := false.
- arg isMessage ifTrue:[
- arg isBinaryMessage ifFalse:[
- arg isUnaryMessage ifFalse:[
- needParen := true
- ]
- ].
- ].
- needParen ifTrue:[
- aStream nextPutAll:'('
- ].
- arg printOn:aStream indent:i.
- needParen ifTrue:[
- aStream nextPutAll:') '
- ].
+ arg printOn:aStream indent:i parenthized:(arg precedence <= self precedence).
! !
!MessageNode methodsFor:'queries'!
@@ -2944,6 +2892,12 @@
^ argArray size
!
+precedence
+ ^ 10
+
+ "Created: / 20-04-2005 / 14:10:59 / cg"
+!
+
realReceiver
receiver isCascade ifTrue:[
^ receiver realReceiver
@@ -2960,5 +2914,5 @@
!MessageNode class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.143 2005-04-20 10:15:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.144 2005-04-20 14:40:39 cg Exp $'
! !