--- a/Parser.st Thu Aug 03 03:25:58 1995 +0200
+++ b/Parser.st Tue Aug 08 03:06:10 1995 +0200
@@ -42,7 +42,7 @@
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
-$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.46 1995-07-23 02:23:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.47 1995-08-08 01:06:10 claus Exp $
'!
!Parser class methodsFor:'documentation'!
@@ -63,7 +63,7 @@
version
"
-$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.46 1995-07-23 02:23:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.47 1995-08-08 01:06:10 claus Exp $
"
!
@@ -1960,8 +1960,8 @@
must check for variable first, to be backward compatible
with other smalltalks.
"
- self variableOrError == #Error ifTrue:[
- tokenName = 'here' ifTrue:[
+ tokenName = 'here' ifTrue:[
+ self variableOrError == #Error ifTrue:[
tokenType := #Here.
warnSTXHereExtensionUsed ifTrue:[
self warning:'here-sends are a nonstandard feature of ST/X'
@@ -1976,6 +1976,8 @@
].
(tokenType == #Identifier) ifTrue:[
+ name := tokenName.
+
var := self variable.
(var == #Error) ifTrue:[
errorFlag := true
@@ -1984,6 +1986,19 @@
(tokenType == $_) ifFalse:[
^ var
].
+ "/ careful: it could already be an implicit self send
+ ImplicitSelfSends ifTrue:[
+ var isMessage ifTrue:[
+ self nextToken.
+ expr := self expression.
+ (errorFlag or:[expr == #Error]) ifTrue:[^ #Error].
+ selfNode isNil ifTrue:[
+ selfNode := SelfNode value:selfValue
+ ].
+ ^ MessageNode receiver:selfNode selector:('implicit_' , name , ':') asSymbol arg:expr.
+ ].
+ ].
+
(var ~~ #Error) ifTrue:[
t := var type.
(t == #MethodArg) ifTrue:[
@@ -2312,7 +2327,8 @@
selfNode := SelfNode value:selfValue
].
^ UnaryNode receiver:selfNode selector:('implicit_' , tokenName) asSymbol.
- ]
+ ].
+ ^ #Error
]
].
^ VariableNode type:#GlobalVariable name:tokenName asSymbol