--- 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'!