Parser.st
changeset 2062 c37a1f2d69a5
parent 2060 40a31deee971
child 2063 c4c1a547548d
--- 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!