returnValue check
authorClaus Gittinger <cg@exept.de>
Wed, 12 Dec 2001 16:27:26 +0100
changeset 1231 637e0e215633
parent 1230 b7d9f80d6e36
child 1232 2113cc4dd269
returnValue check
Parser.st
--- a/Parser.st	Wed Dec 12 12:29:20 2001 +0100
+++ b/Parser.st	Wed Dec 12 16:27:26 2001 +0100
@@ -3556,6 +3556,16 @@
 "/        self parseError:'nothing more expected here' position:tokenPosition to:tokenPosition.
 "/        ^ #Error
 "/    ].
+    (stats notNil
+    and:[stats ~~ #Error]) ifTrue:[
+        stats last isReturnNode ifFalse:[
+            "/ remember a returned self here.
+            selfNode isNil ifTrue:[ 
+                selfNode := SelfNode value:selfValue
+            ].
+            self rememberReturnedValue:selfNode
+        ].
+    ].
     ^ stats
 
     "Modified: 27.4.1996 / 16:57:56 / cg"
@@ -3963,14 +3973,7 @@
         node home:self blockHome:currentBlock.
         (lineNumberInfo == #full) ifTrue:[node lineNumber:lnr].
 
-        returnedValues isNil ifTrue:[returnedValues := Set new].
-
-        expr isAssignment ifTrue:[
-            expr := expr expression.
-        ].
-        (expr isConstant or:[expr isSelf]) ifTrue:[
-            returnedValues add:expr
-        ].
+        self rememberReturnedValue:expr.
         ^ node
     ].
 
@@ -6232,6 +6235,20 @@
 
 !
 
+rememberReturnedValue:anExpressionNode 
+    |expr|
+
+    returnedValues isNil ifTrue:[returnedValues := Set new].
+
+    expr := anExpressionNode.
+    expr isAssignment ifTrue:[
+        expr := expr expression.
+    ].
+    (expr isConstant or:[expr isSelf]) ifTrue:[
+        returnedValues add:expr
+    ].
+!
+
 rememberSelectorUsed:sel
     messagesSent isNil ifTrue:[
         messagesSent := IdentitySet new.
@@ -6281,6 +6298,6 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.321 2001-12-12 11:29:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.322 2001-12-12 15:27:26 cg Exp $'
 ! !
 Parser initialize!