Parser.st
changeset 694 1ec57d3a2592
parent 692 78647d24f59a
child 705 e22927413fe5
--- a/Parser.st	Fri Apr 24 11:05:13 1998 +0200
+++ b/Parser.st	Sat Apr 25 16:04:42 1998 +0200
@@ -251,13 +251,15 @@
 flushNameCache
     "unconditional flush name caches"
 
-    PrevClass notNil ifTrue:[
-	PrevClass removeDependent:Parser
-    ].
-    PrevClass := nil.
-    PrevInstVarNames := nil.
-    PrevClassVarNames := nil.
-    PrevClassInstVarNames := nil.
+    [
+        PrevClass notNil ifTrue:[
+            PrevClass removeDependent:Parser
+        ].
+        PrevClass := nil.
+        PrevInstVarNames := nil.
+        PrevClassVarNames := nil.
+        PrevClassInstVarNames := nil.
+    ] valueUninterruptably
 
     "Parser flushNameCache"
 !
@@ -3534,6 +3536,8 @@
             ]
         ].
 
+        var == #Error ifTrue:[^ #Error].
+
         self markVariable:var from:pos to:pos+var name size - 1.
 
         ((tokenType == $_) or:[tokenType == #':=']) ifFalse:[
@@ -4338,10 +4342,21 @@
 classesClassInstVarNames
     "caching allInstVarNames for next compilation saves time ..."
 
-    PrevClassInstVarNames isNil ifTrue:[
-	PrevClassInstVarNames := classToCompileFor class allInstVarNames
-    ].
-    ^ PrevClassInstVarNames
+    |names|
+
+    [
+        (PrevClassInstVarNames isNil or:[PrevClass ~~ classToCompileFor]) ifTrue:[
+            PrevClass notNil ifTrue:[
+                PrevClass removeDependent:Parser
+            ].
+            PrevClass := classToCompileFor.
+
+            PrevClassInstVarNames := classToCompileFor class allInstVarNames.
+            PrevClass addDependent:Parser.
+        ].
+        names := PrevClassInstVarNames.
+    ] valueUninterruptably.
+    ^ names
 
     "Created: 14.10.1996 / 18:03:35 / cg"
 !
@@ -4349,19 +4364,26 @@
 classesClassVarNames
     "caching allClassVarNames for next compilation saves time ..."
 
-    |aClass|
-
-    PrevClassVarNames isNil ifTrue:[
-	aClass := classToCompileFor.
-	aClass isMeta ifTrue:[
-	    aClass := aClass soleInstance.
-	    aClass isNil ifTrue:[
-		aClass := classToCompileFor
-	    ]
-	].
-	PrevClassVarNames := aClass allClassVarNames
-    ].
-    ^ PrevClassVarNames
+    |aClass names|
+
+    [
+        (PrevClassVarNames isNil or:[PrevClass ~~ classToCompileFor]) ifTrue:[
+            PrevClass notNil ifTrue:[
+                PrevClass removeDependent:Parser
+            ].
+            aClass := PrevClass := classToCompileFor.
+            aClass isMeta ifTrue:[
+                aClass := aClass soleInstance.
+                aClass isNil ifTrue:[
+                    aClass := classToCompileFor
+                ]
+            ].
+            PrevClassVarNames := aClass allClassVarNames.
+            PrevClass addDependent:Parser.
+        ].
+        names := PrevClassVarNames.
+    ] valueUninterruptably.
+    ^ names
 
     "Modified: 17.6.1996 / 17:15:53 / stefan"
     "Modified: 21.6.1996 / 15:21:17 / cg"
@@ -4371,18 +4393,23 @@
 classesInstVarNames
     "caching allInstVarNames for next compilation saves time ..."
 
-    (PrevInstVarNames isNil or:[PrevClass ~~ classToCompileFor]) ifTrue:[
-	PrevClass notNil ifTrue:[
-	    PrevClass removeDependent:Parser
-	].
-	PrevClass := classToCompileFor.
-	PrevInstVarNames := classToCompileFor allInstVarNames.
-	PrevClassInstVarNames := nil.
-	PrevClassVarNames := nil.
-	PrevClass addDependent:Parser
-    ].
-
-    ^ PrevInstVarNames
+    |names|
+
+    [
+        (PrevInstVarNames isNil or:[PrevClass ~~ classToCompileFor]) ifTrue:[
+            PrevClass notNil ifTrue:[
+                PrevClass removeDependent:Parser
+            ].
+            PrevClass := classToCompileFor.
+            PrevInstVarNames := classToCompileFor allInstVarNames.
+            PrevClassInstVarNames := nil.
+            PrevClassVarNames := nil.
+            PrevClass addDependent:Parser
+        ].
+        names := PrevInstVarNames
+    ] valueUninterruptably.
+
+    ^ names
 
     "Created: 14.10.1996 / 18:00:26 / cg"
 !
@@ -4613,6 +4640,6 @@
 !Parser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.169 1998-04-24 08:31:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.170 1998-04-25 14:04:42 cg Exp $'
 ! !
 Parser initialize!