--- a/Parser.st Tue Mar 31 18:44:20 1998 +0200
+++ b/Parser.st Tue Mar 31 19:55:31 1998 +0200
@@ -16,7 +16,7 @@
currentBlock parseForCode usedInstVars usedClassVars usedVars
modifiedInstVars modifiedClassVars modifiedGlobals usesSuper
usedGlobals usedSymbols usedMessages localVarDefPosition
- evalExitBlock selfNode superNode hasPrimitiveCode
+ evalExitBlock selfNode superNode nilNode hasPrimitiveCode
hasNonOptionalPrimitiveCode primitiveNr primitiveResource logged
warnedUndefVars warnSTXHereExtensionUsed correctedSource
foldConstants lineNumberInfo currentNamespace
@@ -1673,8 +1673,10 @@
!
release
- methodArgs := methodVars := tree := selfNode := superNode := nil.
+ methodArgs := methodVars := tree := selfNode := superNode := nilNode := nil.
super release.
+
+ "Modified: / 31.3.1998 / 19:45:58 / cg"
!
setNameSpace:aNameSpaceName
@@ -1760,6 +1762,12 @@
markSuperFrom:pos1 to:pos2
"Created: / 31.3.1998 / 17:40:20 / cg"
+!
+
+markUnknownIdentifierFrom:pos1 to:pos2
+
+ "Modified: / 31.3.1998 / 19:16:26 / cg"
+ "Created: / 31.3.1998 / 19:35:53 / cg"
! !
!Parser methodsFor:'error correction'!
@@ -3651,7 +3659,11 @@
self parseError:'assignment to nil' position:pos to:tokenPosition.
^ #Error
].
- ^ ConstantNode type:#Nil value:nil
+ self markConstantFrom:pos to:pos+2.
+ nilNode isNil ifTrue:[
+ nilNode := ConstantNode type:#Nil value:nil
+ ].
+ ^ nilNode
].
(tokenType == #True) ifTrue:[
self nextToken.
@@ -3792,7 +3804,7 @@
^ #Error
"Created: / 13.9.1995 / 12:50:50 / claus"
- "Modified: / 31.3.1998 / 18:08:37 / cg"
+ "Modified: / 31.3.1998 / 19:44:23 / cg"
!
statement
@@ -3975,7 +3987,7 @@
pos1 := tokenPosition.
v := self variableOrError:tokenName.
- (v == #Error) ifFalse:[
+ (v ~~ #Error) ifTrue:[
(v isMemberOf:VariableNode) ifTrue:[
type := v type.
(type == #BlockVariable
@@ -3991,8 +4003,12 @@
].
^ v
].
+
+ self markUnknownIdentifierFrom:pos1 to:pos1+tokenName size-1.
+
v := self correctVariable.
- (v == #Error) ifFalse:[^ v].
+ (v ~~ #Error) ifTrue:[^ v].
+
parseForCode ifFalse:[
self rememberGlobalUsed:tokenName
] ifTrue:[
@@ -4009,7 +4025,7 @@
self markGlobalIdentifierFrom:pos1 to:pos1+tokenName size-1.
^ VariableNode type:#GlobalVariable name:tokenName asSymbol
- "Modified: / 31.3.1998 / 18:15:17 / cg"
+ "Modified: / 31.3.1998 / 19:45:32 / cg"
!
variableOrError
@@ -4590,6 +4606,6 @@
!Parser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.157 1998-03-31 16:44:20 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.158 1998-03-31 17:55:31 cg Exp $'
! !
Parser initialize!