GSTFileReader.st
changeset 4355 75047ebdae6d
parent 4352 2683d261d4c8
--- a/GSTFileReader.st	Sun Sep 23 04:18:37 2018 +0200
+++ b/GSTFileReader.st	Sun Sep 23 04:18:46 2018 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 2018 by eXept Software AG
               All Rights Reserved
@@ -81,11 +83,15 @@
      category comment instVarNameString definitionSelector change
      readingClassAttributes|
 
-    superClassName := expr receiver name.
-    superClass := nameSpace classNamed:superClassName.
-    superClass isNil ifTrue:[
-        superClass := Smalltalk classNamed:superClassName.
-    ].    
+    (expr receiver isConstant and:[expr receiver value isNil]) ifTrue:[
+        superClass := nil.
+    ] ifFalse:[    
+        superClassName := expr receiver name.
+        superClass := nameSpace classNamed:superClassName.
+        superClass isNil ifTrue:[
+            superClass := Smalltalk classNamed:superClassName.
+        ].    
+    ].
     className := expr arg1 name.
 
     self assert:(parser tokenType == $[ ).
@@ -141,7 +147,7 @@
     change := ClassDefinitionChange new.
     change className:fullClassName.
     change definitionSelector:definitionSelector.
-    change superClassName:superClassName.
+    superClassName notNil ifTrue:[ change superClassName:superClassName ].
     change instanceVariableString:instVarNameString.
     "/ change classVariableString:arg evaluate.
     "/ change poolDictionaries:arg evaluate.
@@ -162,7 +168,7 @@
     "
 
     "Created: / 22-09-2018 / 22:50:24 / Claus Gittinger"
-    "Modified: / 23-09-2018 / 00:06:14 / Claus Gittinger"
+    "Modified: / 23-09-2018 / 02:12:04 / Claus Gittinger"
 !
 
 readDefinitions
@@ -205,8 +211,18 @@
                     parser nextToken.
                     className := fullClassName := (expr receiver receiver name),' class'.
                     self readMethods.
-                ] ifFalse:[    
-                     self halt.
+                ] ifFalse:[ 
+                    (expr isVariable and:[expr name = 'Eval']) ifTrue:[
+                        self assert:(parser tokenType == $[ ).
+                        parser nextToken.
+
+                        parser parseMethodBodyOrEmpty.
+
+                        self assert:(parser tokenType == $] ).
+                        parser nextToken.
+                    ] ifFalse:[    
+                        self halt.
+                    ].    
                 ].    
             ].    
         ].    
@@ -233,7 +249,7 @@
     "
 
     "Created: / 22-09-2018 / 22:48:24 / Claus Gittinger"
-    "Modified: / 23-09-2018 / 01:08:55 / Claus Gittinger"
+    "Modified: / 23-09-2018 / 01:59:24 / Claus Gittinger"
 !
 
 readMethods
@@ -316,7 +332,8 @@
 
         (expr isMessage 
           and:[ (expr selector == #'subclass:')
-          and:[ (expr receiver isGlobalVariable)
+          and:[ ((expr receiver isConstant and:[expr receiver value isNil])
+                or:[ expr receiver isGlobalVariable ])
           and:[ (expr arg1 isGlobalVariable) ]]]
         ) ifTrue:[
             self readClass:expr.
@@ -356,7 +373,7 @@
     "
 
     "Created: / 22-09-2018 / 22:49:59 / Claus Gittinger"
-    "Modified: / 22-09-2018 / 23:57:46 / Claus Gittinger"
+    "Modified: / 23-09-2018 / 02:09:14 / Claus Gittinger"
 ! !
 
 !GSTFileReader class methodsFor:'documentation'!