--- a/Parser.st Wed Jan 23 15:00:21 2008 +0100
+++ b/Parser.st Thu Jan 24 13:57:03 2008 +0100
@@ -27,7 +27,7 @@
beginOfBodyPosition startOfBlockPosition primitiveContextInfo
usedLocalVars modifiedLocalVars alreadyWarnedUninitializedVars
alreadyWarnedUnimplementedSelectors returnedValues currentPackage
- doItTemporaries inFunctionCallArgument
+ doItTemporaries moreSharedPools inFunctionCallArgument
didWarnAboutSTXNameSpaceUse didWarnAboutSTXHereExtensionUsed
parenthesisLevel didWarnAboutBadSupersend
didWarnAboutSqueakExtensions'
@@ -1965,6 +1965,10 @@
parserFlags implicitSelfSends:aBoolean
!
+moreSharedPools:aCollection
+ moreSharedPools := aCollection
+!
+
primitiveNumber
"return the ST-80 style primitiveNumber or nil (valid after parsing)"
@@ -6942,8 +6946,25 @@
return a node-tree, nil or #Error.
Does not advance to next token."
- |varIndex aClass searchBlock args vars sharedPools
- tokenSymbol space classVarIndex holder node|
+ |varIndex aClass searchBlock args vars
+ tokenSymbol space classVarIndex holder node
+ checkSharedPoolAction|
+
+ checkSharedPoolAction :=
+ [:eachPoolName |
+ |sharedPool|
+
+ sharedPool := Smalltalk classNamed:eachPoolName.
+ sharedPool isNil ifTrue:[
+ Transcript showCR:'No such pool: ' , eachPoolName.
+ "/ self warning:('No such pool: ' , eachPoolName).
+ ] ifFalse:[
+ (sharedPool includesKey:varName) ifTrue:[
+ parseForCode ifFalse:[self rememberGlobalUsed:(sharedPool name , ':' , varName)].
+ ^ VariableNode type:#PoolVariable class:sharedPool name:varName
+ ].
+ ].
+ ].
"is it a block-arg or block-var ?"
searchBlock := currentBlock.
@@ -7109,19 +7130,12 @@
].
" is it a pool-variable ?"
- classToCompileFor theNonMetaclass realSharedPools do:[:eachPoolName |
- |sharedPool|
-
- sharedPool := Smalltalk classNamed:eachPoolName.
- sharedPool isNil ifTrue:[
- Transcript showCR:'No such pool: ' , eachPoolName.
-"/ self warning:('No such pool: ' , eachPoolName).
- ] ifFalse:[
- (sharedPool includesKey:varName) ifTrue:[
- parseForCode ifFalse:[self rememberGlobalUsed:(sharedPool name , ':' , varName)].
- ^ VariableNode type:#PoolVariable class:sharedPool name:varName
- ].
- ].
+ classToCompileFor theNonMetaclass realSharedPools do:checkSharedPoolAction.
+ ].
+
+ (self isDoIt) ifTrue:[
+ moreSharedPools notNil ifTrue:[
+ moreSharedPools do:checkSharedPoolAction.
].
].
@@ -9132,7 +9146,7 @@
!Parser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.560 2008-01-21 17:00:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.561 2008-01-24 12:57:03 cg Exp $'
! !
Parser initialize!