--- 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!