allow 0-args in #receiver:selector:args:fold:
authorClaus Gittinger <cg@exept.de>
Fri, 15 May 1998 15:33:30 +0200
changeset 715 408ac886ffc1
parent 714 09f35b01bbcf
child 716 3c0668dceb1e
allow 0-args in #receiver:selector:args:fold:
MessageNd.st
MessageNode.st
--- a/MessageNd.st	Thu May 14 20:53:18 1998 +0200
+++ b/MessageNd.st	Fri May 15 15:33:30 1998 +0200
@@ -217,50 +217,52 @@
     |numArgs arg1 arg1Val|
 
     folding notNil ifTrue:[
-	numArgs := argArray size.
-	arg1 := (argArray at:1).
-	(numArgs == 1) ifTrue:[
-	    ^ self receiver:recNode selector:selectorString arg:arg1 fold:folding 
-	].
+        numArgs := argArray size.
+        numArgs > 0 ifTrue:[
+            arg1 := (argArray at:1).
+            (numArgs == 1) ifTrue:[
+                ^ self receiver:recNode selector:selectorString arg:arg1 fold:folding 
+            ].
 
-	"/
-	"/ #perform:... with a constant selector
-	"/
-	numArgs <= 6 ifTrue:[
-	    (#(nil
-	       #'perform:with:'
-	       #'perform:with:with:'
-	       #'perform:with:with:with:'
-	       #'perform:with:with:with:with:'
-	       #'perform:with:with:with:with:with:'
-	       #'perform:with:with:with:with:with:with:'
-	    ) at:numArgs) = selectorString 
-	    ifTrue:[
-		arg1 isConstant ifTrue:[    
-		    arg1Val := arg1 evaluate.
-		    arg1Val isSymbol ifTrue:[
-			^ MessageNode 
-				receiver:recNode 
-				selector:arg1Val
-				args:(argArray copyFrom:2)
-				fold:folding
-		    ]
-		]
-	    ]
-	].
+            "/
+            "/ #perform:... with a constant selector
+            "/
+            numArgs <= 6 ifTrue:[
+                (#(nil
+                   #'perform:with:'
+                   #'perform:with:with:'
+                   #'perform:with:with:with:'
+                   #'perform:with:with:with:with:'
+                   #'perform:with:with:with:with:with:'
+                   #'perform:with:with:with:with:with:with:'
+                ) at:numArgs) = selectorString 
+                ifTrue:[
+                    arg1 isConstant ifTrue:[    
+                        arg1Val := arg1 evaluate.
+                        arg1Val isSymbol ifTrue:[
+                            ^ MessageNode 
+                                    receiver:recNode 
+                                    selector:arg1Val
+                                    args:(argArray copyFrom:2)
+                                    fold:folding
+                        ]
+                    ]
+                ]
+            ].
+        ].
 
-	(numArgs == 2) ifTrue:[
-	    ^ self receiver:recNode selector:selectorString arg1:arg1 arg2:(argArray at:2) fold:folding 
-	].
-	numArgs > Method maxNumberOfArguments ifTrue:[
-	    ^ 'too many arguments for current VM implementation'.
-	].
+        (numArgs == 2) ifTrue:[
+            ^ self receiver:recNode selector:selectorString arg1:arg1 arg2:(argArray at:2) fold:folding 
+        ].
+        numArgs > Method maxNumberOfArguments ifTrue:[
+            ^ 'too many arguments for current VM implementation'.
+        ].
     ].
 
     ^ (self basicNew) receiver:recNode selector:selectorString args:argArray lineno:0
 
     "Modified: / 3.9.1995 / 16:41:39 / claus"
-    "Modified: / 15.1.1998 / 15:20:00 / cg"
+    "Modified: / 15.5.1998 / 15:32:05 / cg"
 ! !
 
 !MessageNode methodsFor:'accessing'!
@@ -2299,5 +2301,5 @@
 !MessageNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.85 1998-04-02 17:09:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Attic/MessageNd.st,v 1.86 1998-05-15 13:33:30 cg Exp $'
 ! !
--- a/MessageNode.st	Thu May 14 20:53:18 1998 +0200
+++ b/MessageNode.st	Fri May 15 15:33:30 1998 +0200
@@ -217,50 +217,52 @@
     |numArgs arg1 arg1Val|
 
     folding notNil ifTrue:[
-	numArgs := argArray size.
-	arg1 := (argArray at:1).
-	(numArgs == 1) ifTrue:[
-	    ^ self receiver:recNode selector:selectorString arg:arg1 fold:folding 
-	].
+        numArgs := argArray size.
+        numArgs > 0 ifTrue:[
+            arg1 := (argArray at:1).
+            (numArgs == 1) ifTrue:[
+                ^ self receiver:recNode selector:selectorString arg:arg1 fold:folding 
+            ].
 
-	"/
-	"/ #perform:... with a constant selector
-	"/
-	numArgs <= 6 ifTrue:[
-	    (#(nil
-	       #'perform:with:'
-	       #'perform:with:with:'
-	       #'perform:with:with:with:'
-	       #'perform:with:with:with:with:'
-	       #'perform:with:with:with:with:with:'
-	       #'perform:with:with:with:with:with:with:'
-	    ) at:numArgs) = selectorString 
-	    ifTrue:[
-		arg1 isConstant ifTrue:[    
-		    arg1Val := arg1 evaluate.
-		    arg1Val isSymbol ifTrue:[
-			^ MessageNode 
-				receiver:recNode 
-				selector:arg1Val
-				args:(argArray copyFrom:2)
-				fold:folding
-		    ]
-		]
-	    ]
-	].
+            "/
+            "/ #perform:... with a constant selector
+            "/
+            numArgs <= 6 ifTrue:[
+                (#(nil
+                   #'perform:with:'
+                   #'perform:with:with:'
+                   #'perform:with:with:with:'
+                   #'perform:with:with:with:with:'
+                   #'perform:with:with:with:with:with:'
+                   #'perform:with:with:with:with:with:with:'
+                ) at:numArgs) = selectorString 
+                ifTrue:[
+                    arg1 isConstant ifTrue:[    
+                        arg1Val := arg1 evaluate.
+                        arg1Val isSymbol ifTrue:[
+                            ^ MessageNode 
+                                    receiver:recNode 
+                                    selector:arg1Val
+                                    args:(argArray copyFrom:2)
+                                    fold:folding
+                        ]
+                    ]
+                ]
+            ].
+        ].
 
-	(numArgs == 2) ifTrue:[
-	    ^ self receiver:recNode selector:selectorString arg1:arg1 arg2:(argArray at:2) fold:folding 
-	].
-	numArgs > Method maxNumberOfArguments ifTrue:[
-	    ^ 'too many arguments for current VM implementation'.
-	].
+        (numArgs == 2) ifTrue:[
+            ^ self receiver:recNode selector:selectorString arg1:arg1 arg2:(argArray at:2) fold:folding 
+        ].
+        numArgs > Method maxNumberOfArguments ifTrue:[
+            ^ 'too many arguments for current VM implementation'.
+        ].
     ].
 
     ^ (self basicNew) receiver:recNode selector:selectorString args:argArray lineno:0
 
     "Modified: / 3.9.1995 / 16:41:39 / claus"
-    "Modified: / 15.1.1998 / 15:20:00 / cg"
+    "Modified: / 15.5.1998 / 15:32:05 / cg"
 ! !
 
 !MessageNode methodsFor:'accessing'!
@@ -2299,5 +2301,5 @@
 !MessageNode class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.85 1998-04-02 17:09:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/MessageNode.st,v 1.86 1998-05-15 13:33:30 cg Exp $'
 ! !