.
authorclaus
Tue, 02 May 1995 01:04:40 +0200
changeset 84 ecb74f0507fd
parent 83 10c73a059351
child 85 31681583c44f
.
BCompiler.st
ByteCodeCompiler.st
Explainer.st
ImmArray.st
ImmutableArray.st
LazyMethod.st
ObjFLoader.st
ObjectFileLoader.st
Parser.st
SourceFileLoader.st
SrcFLoader.st
UnaryNd.st
UnaryNode.st
UndefVar.st
UndefinedVariable.st
--- a/BCompiler.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/BCompiler.st	Tue May 02 01:04:40 1995 +0200
@@ -26,7 +26,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.19 1995-03-18 05:08:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.20 1995-05-01 23:03:42 claus Exp $
 '!
 
 !ByteCodeCompiler class methodsFor:'documentation'!
@@ -47,7 +47,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.19 1995-03-18 05:08:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/BCompiler.st,v 1.20 1995-05-01 23:03:42 claus Exp $
 "
 !
 
@@ -109,73 +109,73 @@
 	    silent:false
 !
 
-compile:methodText forClass:classToCompileFor notifying:someOne
+compile:methodText forClass:classToCompileFor notifying:requestor
     "compile a source-string for a method in classToCompileFor.
-     Errors are forwarded to someOne."
+     Errors are forwarded to requestor."
 
     ^ self compile:methodText
 	  forClass:classToCompileFor
 	inCategory:'others'
-	 notifying:someOne
+	 notifying:requestor
 	   install:true
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
     "compile a source-string for a method in classToCompileFor.
-     errors are forwarded to someOne.
+     errors are forwarded to requestor.
      The method will get cat as category"
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:true
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne install:install
+compile:aString forClass:aClass inCategory:cat notifying:requestor install:install
     "compile a source-string for a method in classToCompileFor.
      The install-argument controls if the method is to be installed into the
      classes method-dictionary, or just to be compiled and a method object to be returned.
-     Errors are forwarded to someOne. The method will get cat as category"
+     Errors are forwarded to requestor. The method will get cat as category"
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:install
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
 		 install:install skipIfSame:skipIfSame
     "compile a source-string for a method in classToCompileFor.
      The install-argument controls if the method is to be installed into the
      classes method-dictionary, or just to be compiled and a method object to be returned.
-     Errors are forwarded to someOne. The method will get cat as category.
+     Errors are forwarded to requestor. The method will get cat as category.
      If skipIsSame is true, and the source is the same as an existing
      methods source, this is a noop (for fast fileIn)."
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:install
 	skipIfSame:skipIfSame
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
 		 install:install skipIfSame:skipIfSame silent:silent
 
     "the basic workhorse method for compiling:
      compile a source-string for a method in classToCompileFor.
-     errors are forwarded to someOne (report on Transcript and return
-     #Error, if someOne is nil).
+     errors are forwarded to requestor (report on Transcript and return
+     #Error, if requestor is nil).
 
      The new method will get cat as category. 
      If install is true, the method will go into the classes method-table, 
@@ -196,7 +196,8 @@
     "create a compiler, let it parse and create the parsetree"
 
     compiler := self for:(ReadStream on:aString) in:aClass.
-    compiler notifying:someOne.
+    compiler parseForCode.
+    compiler notifying:requestor.
     silent ifTrue:[
 "/        compiler ignoreErrors.
 	compiler ignoreWarnings
@@ -212,7 +213,7 @@
 		oldMethod source = aString ifTrue:[
 		    oldMethod isInvalid ifFalse:[
 			silencio ifFalse:[
-			    Transcript showCr:('unchanged: ',aClass name,' ',compiler selector)
+			    Transcript showCr:('    unchanged: ',aClass name,' ',compiler selector)
 			].
 			"
 			 same. however, category may be different
@@ -235,6 +236,7 @@
 
     (compiler errorFlag or:[tree == #Error]) ifTrue:[
 "/        compiler parseError:'syntax error'.
+	Transcript show:'    '.
 	compiler selector notNil ifTrue:[
 	    Transcript show:(compiler selector,' ')
 	].
@@ -256,7 +258,7 @@
 	^ compiler compileToMachineCode:aString 
 			       forClass:aClass 
 			     inCategory:cat 
-			      notifying:someOne
+			      notifying:requestor
 				install:install 
 			     skipIfSame:skipIfSame 
 				 silent:silent.
@@ -297,6 +299,7 @@
 	"
 	symbolicCodeArray := compiler genSymbolicCode.
 	(symbolicCodeArray == #Error) ifTrue:[
+	    Transcript show:'    '.
 	    compiler selector notNil ifTrue:[
 		Transcript show:(compiler selector,' ')
 	    ].
@@ -309,6 +312,7 @@
 	 (someone willin' to make machine code :-)
 	"
 	((compiler genByteCodeFrom:symbolicCodeArray) == #Error) ifTrue:[
+	    Transcript show:'    '.
 	    compiler selector notNil ifTrue:[
 		Transcript show:(compiler selector,' ')
 	    ].
@@ -354,7 +358,7 @@
     ].
 
     silencio ifFalse:[
-	Transcript showCr:('compiled: ',aClass name,' ',compiler selector)
+	Transcript showCr:('    compiled: ',aClass name,' ',compiler selector)
     ].
 
     ^ newMethod
@@ -1345,7 +1349,7 @@
 !ByteCodeCompiler methodsFor:'machine code generation'!
 
 compileToMachineCode:aString forClass:aClass inCategory:cat 
-			     notifying:someOne install:install skipIfSame:skipIfSame silent:silent
+			     notifying:requestor install:install skipIfSame:skipIfSame silent:silent
     "this is called to compile primitive code.
      This is EXPERIMENTAL and going to be changed to raise an error,
      an redefined in subclasses which can do it (either by direct compilation, or by calling
@@ -1481,7 +1485,7 @@
 	newMethod source:aString.
 	aClass addChangeRecordForMethod:newMethod.
 	(silent or:[Smalltalk silentLoading == true]) ifFalse:[
-	    Transcript showCr:('compiled: ', aClass name,' ',self selector,' - machine code')
+	    Transcript showCr:('    compiled: ', aClass name,' ',self selector,' - machine code')
 	].
 	^ newMethod.
     ].
--- a/ByteCodeCompiler.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/ByteCodeCompiler.st	Tue May 02 01:04:40 1995 +0200
@@ -26,7 +26,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/ByteCodeCompiler.st,v 1.19 1995-03-18 05:08:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/ByteCodeCompiler.st,v 1.20 1995-05-01 23:03:42 claus Exp $
 '!
 
 !ByteCodeCompiler class methodsFor:'documentation'!
@@ -47,7 +47,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/ByteCodeCompiler.st,v 1.19 1995-03-18 05:08:59 claus Exp $
+$Header: /cvs/stx/stx/libcomp/ByteCodeCompiler.st,v 1.20 1995-05-01 23:03:42 claus Exp $
 "
 !
 
@@ -109,73 +109,73 @@
 	    silent:false
 !
 
-compile:methodText forClass:classToCompileFor notifying:someOne
+compile:methodText forClass:classToCompileFor notifying:requestor
     "compile a source-string for a method in classToCompileFor.
-     Errors are forwarded to someOne."
+     Errors are forwarded to requestor."
 
     ^ self compile:methodText
 	  forClass:classToCompileFor
 	inCategory:'others'
-	 notifying:someOne
+	 notifying:requestor
 	   install:true
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
     "compile a source-string for a method in classToCompileFor.
-     errors are forwarded to someOne.
+     errors are forwarded to requestor.
      The method will get cat as category"
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:true
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne install:install
+compile:aString forClass:aClass inCategory:cat notifying:requestor install:install
     "compile a source-string for a method in classToCompileFor.
      The install-argument controls if the method is to be installed into the
      classes method-dictionary, or just to be compiled and a method object to be returned.
-     Errors are forwarded to someOne. The method will get cat as category"
+     Errors are forwarded to requestor. The method will get cat as category"
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:install
 	skipIfSame:false
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
 		 install:install skipIfSame:skipIfSame
     "compile a source-string for a method in classToCompileFor.
      The install-argument controls if the method is to be installed into the
      classes method-dictionary, or just to be compiled and a method object to be returned.
-     Errors are forwarded to someOne. The method will get cat as category.
+     Errors are forwarded to requestor. The method will get cat as category.
      If skipIsSame is true, and the source is the same as an existing
      methods source, this is a noop (for fast fileIn)."
 
     ^ self compile:aString
 	  forClass:aClass
 	inCategory:cat
-	 notifying:someOne
+	 notifying:requestor
 	   install:install
 	skipIfSame:skipIfSame
 	    silent:false
 !
 
-compile:aString forClass:aClass inCategory:cat notifying:someOne
+compile:aString forClass:aClass inCategory:cat notifying:requestor
 		 install:install skipIfSame:skipIfSame silent:silent
 
     "the basic workhorse method for compiling:
      compile a source-string for a method in classToCompileFor.
-     errors are forwarded to someOne (report on Transcript and return
-     #Error, if someOne is nil).
+     errors are forwarded to requestor (report on Transcript and return
+     #Error, if requestor is nil).
 
      The new method will get cat as category. 
      If install is true, the method will go into the classes method-table, 
@@ -196,7 +196,8 @@
     "create a compiler, let it parse and create the parsetree"
 
     compiler := self for:(ReadStream on:aString) in:aClass.
-    compiler notifying:someOne.
+    compiler parseForCode.
+    compiler notifying:requestor.
     silent ifTrue:[
 "/        compiler ignoreErrors.
 	compiler ignoreWarnings
@@ -212,7 +213,7 @@
 		oldMethod source = aString ifTrue:[
 		    oldMethod isInvalid ifFalse:[
 			silencio ifFalse:[
-			    Transcript showCr:('unchanged: ',aClass name,' ',compiler selector)
+			    Transcript showCr:('    unchanged: ',aClass name,' ',compiler selector)
 			].
 			"
 			 same. however, category may be different
@@ -235,6 +236,7 @@
 
     (compiler errorFlag or:[tree == #Error]) ifTrue:[
 "/        compiler parseError:'syntax error'.
+	Transcript show:'    '.
 	compiler selector notNil ifTrue:[
 	    Transcript show:(compiler selector,' ')
 	].
@@ -256,7 +258,7 @@
 	^ compiler compileToMachineCode:aString 
 			       forClass:aClass 
 			     inCategory:cat 
-			      notifying:someOne
+			      notifying:requestor
 				install:install 
 			     skipIfSame:skipIfSame 
 				 silent:silent.
@@ -297,6 +299,7 @@
 	"
 	symbolicCodeArray := compiler genSymbolicCode.
 	(symbolicCodeArray == #Error) ifTrue:[
+	    Transcript show:'    '.
 	    compiler selector notNil ifTrue:[
 		Transcript show:(compiler selector,' ')
 	    ].
@@ -309,6 +312,7 @@
 	 (someone willin' to make machine code :-)
 	"
 	((compiler genByteCodeFrom:symbolicCodeArray) == #Error) ifTrue:[
+	    Transcript show:'    '.
 	    compiler selector notNil ifTrue:[
 		Transcript show:(compiler selector,' ')
 	    ].
@@ -354,7 +358,7 @@
     ].
 
     silencio ifFalse:[
-	Transcript showCr:('compiled: ',aClass name,' ',compiler selector)
+	Transcript showCr:('    compiled: ',aClass name,' ',compiler selector)
     ].
 
     ^ newMethod
@@ -1345,7 +1349,7 @@
 !ByteCodeCompiler methodsFor:'machine code generation'!
 
 compileToMachineCode:aString forClass:aClass inCategory:cat 
-			     notifying:someOne install:install skipIfSame:skipIfSame silent:silent
+			     notifying:requestor install:install skipIfSame:skipIfSame silent:silent
     "this is called to compile primitive code.
      This is EXPERIMENTAL and going to be changed to raise an error,
      an redefined in subclasses which can do it (either by direct compilation, or by calling
@@ -1481,7 +1485,7 @@
 	newMethod source:aString.
 	aClass addChangeRecordForMethod:newMethod.
 	(silent or:[Smalltalk silentLoading == true]) ifFalse:[
-	    Transcript showCr:('compiled: ', aClass name,' ',self selector,' - machine code')
+	    Transcript showCr:('    compiled: ', aClass name,' ',self selector,' - machine code')
 	].
 	^ newMethod.
     ].
--- a/Explainer.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/Explainer.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1993 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Explainer.st,v 1.8 1995-02-11 16:44:10 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Explainer.st,v 1.9 1995-05-01 23:03:53 claus Exp $
 '!
 
 !Explainer class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Explainer.st,v 1.8 1995-02-11 16:44:10 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Explainer.st,v 1.9 1995-05-01 23:03:53 claus Exp $
 "
 !
 
@@ -50,7 +50,7 @@
 "
     a very simple explainer - much more should be added ...
     This one is involved, when the 'explain' function is used in a 
-    codeView.
+    codeView (popup or via CMD-E).
 "
 ! !
 
@@ -92,20 +92,25 @@
     ].
 
     "instvars"
-    variables := aClass allInstVarNames.
-    (variables notNil and:[variables includes:string]) ifTrue:[
-	"where is it"
-	c := aClass.
-	[c notNil] whileTrue:[
-	    v := c instVarNames.
-	    (v notNil and:[v includes:string]) ifTrue:[
-		^ string , ' is an instance variable in ' , c name
-	    ].
-	    c := c superclass
-	].
-	self error:'oops'
+    c := aClass whichClassDefinesInstVar:string.
+    c notNil ifTrue:[
+	^ string , ' is an instance variable in ' , c name
     ].
 
+"/    variables := aClass allInstVarNames.
+"/    (variables notNil and:[variables includes:string]) ifTrue:[
+"/        "where is it"
+"/        c := aClass.
+"/        [c notNil] whileTrue:[
+"/            v := c instVarNames.
+"/            (v notNil and:[v includes:string]) ifTrue:[
+"/                ^ string , ' is an instance variable in ' , c name
+"/            ].
+"/            c := c superclass
+"/        ].
+"/        self error:'oops'
+"/    ].
+
     "class instvars"
     variables := aClass class allInstVarNames.
     (variables notNil and:[variables includes:string]) ifTrue:[
@@ -160,6 +165,10 @@
 	^ self explainSuperIn:aClass
     ].
 
+    (string = 'here') ifTrue:[
+	^ self explainHereIn:aClass
+    ].
+
     (string = 'thisContext') ifTrue:[
 	^ 'thisContext is a pseudo variable (i.e. it is built in).
 
@@ -219,10 +228,19 @@
 
 However, when sending a message to super the search for methods
 implementing this message will start in the superclass (' , aClass superclass name , ')
-instead of selfs class (' , aClass name , ').
+instead of the receivers class (' , aClass name , ' or subclass).
 Thus, using super, a redefined method can call the original method in its superclass.'
 !
 
+explainHereIn:aClass
+    ^ 'like self, here refers to the object which received the message.
+
+However, when sending a message to here the search for methods
+implementing this message will start in the defining class (' , aClass name , ')
+instead of the receivers class (' , aClass name , ' or subclass).
+Thus, using here, redefined methods will NOT be reached with a here-send.'
+!
+
 commonSuperClassOf:listOfClassNames
     |common found|
 
@@ -393,7 +411,7 @@
 explainKnownSymbol:string
     "return explanation or nil"
 
-    |sym list count tmp commonSuperClass|
+    |sym list count tmp commonSuperClass val|
 
     sym := string asSymbol.
 
@@ -401,21 +419,23 @@
 
     (Smalltalk includesKey:sym) ifTrue:[
 	tmp := string , ' is a global variable.'.
-	(Smalltalk at:sym) isBehavior ifTrue:[
-	    (Smalltalk at:sym) name = string ifTrue:[
+	val := Smalltalk at:sym.
+	val isBehavior ifTrue:[
+	    val name = string ifTrue:[
 		tmp := tmp , '
 
-' , string , ' is a class in category ' , (Smalltalk at:sym) category , '.'
+' , string , ' is a class categorized as ' , val category , '
+in the ''' , val package , ''' package.'
 	    ] ifFalse:[
 		tmp := tmp , '
 
-' , string , ' is bound to the class ' , (Smalltalk at:sym) name ,
-' in category ' , (Smalltalk at:sym) category , '.'
+' , string , ' is bound to the class ' , val name ,
+' in category ' , val category , '.'
 	    ]
 	] ifFalse:[
 	    tmp := tmp , '
 
-Its current value is ' , (Smalltalk at:sym) classNameWithArticle , '.'
+Its current value is ' , val classNameWithArticle , '.'
 	].
 	^ tmp.
     ].
@@ -445,6 +465,7 @@
 	(count == 1) ifTrue:[
 	    ^ string , tmp , (list at:1) , '.'
 	].
+
 	(count == 2) ifTrue:[
 	    ^ string , tmp , (list at:1) , ' and ' , (list at:2) , '.'
 	].
@@ -463,6 +484,11 @@
 	"
 	commonSuperClass := self commonSuperClassOf:list.
 	commonSuperClass ~~ Object ifTrue:[
+	    (list includes:commonSuperClass) ifTrue:[
+		^ string , tmp, count printString , commonSuperClass name 
+			 , ' and redefined in ' , (count - 1) printString  
+			 , ' subclasses'
+	    ].
 	    ^ string , tmp, count printString , ' subclasses of ' , commonSuperClass name
 	].
 
--- a/ImmArray.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/ImmArray.st	Tue May 02 01:04:40 1995 +0200
@@ -37,7 +37,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/ImmArray.st,v 1.3 1995-02-22 01:16:48 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/ImmArray.st,v 1.4 1995-05-01 23:03:57 claus Exp $
 "
 !
 
@@ -69,7 +69,7 @@
 creator 
     "find the method that contains me"
 
-    Method allDerivedInstances do:[:aMethod |
+    Method allSubInstances do:[:aMethod |
 	|lits|
 
 	lits := aMethod literals.
--- a/ImmutableArray.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/ImmutableArray.st	Tue May 02 01:04:40 1995 +0200
@@ -37,7 +37,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/ImmutableArray.st,v 1.3 1995-02-22 01:16:48 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/ImmutableArray.st,v 1.4 1995-05-01 23:03:57 claus Exp $
 "
 !
 
@@ -69,7 +69,7 @@
 creator 
     "find the method that contains me"
 
-    Method allDerivedInstances do:[:aMethod |
+    Method allSubInstances do:[:aMethod |
 	|lits|
 
 	lits := aMethod literals.
--- a/LazyMethod.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/LazyMethod.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1994 by Claus Gittinger
 	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.8 1995-04-11 15:30:00 claus Exp $
+$Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.9 1995-05-01 23:04:00 claus Exp $
 '!
 
 !LazyMethod class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.8 1995-04-11 15:30:00 claus Exp $
+$Header: /cvs/stx/stx/libcomp/LazyMethod.st,v 1.9 1995-05-01 23:04:00 claus Exp $
 "
 !
 
@@ -67,8 +67,6 @@
 
 initialize
     CompilationFailedSignal isNil ifTrue:[
-"/        super initialize.
-
 	CompilationFailedSignal := ExecutionErrorSignal newSignalMayProceed:true.
 	CompilationFailedSignal nameClass:self message:#compilationFailedSignal.
 	CompilationFailedSignal notifierString:'compilation of lazy method failed'.
--- a/ObjFLoader.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/ObjFLoader.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1993 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Attic/ObjFLoader.st,v 1.18 1995-04-11 15:30:06 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/ObjFLoader.st,v 1.19 1995-05-01 23:04:07 claus Exp $
 '!
 
 !ObjectFileLoader class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/ObjFLoader.st,v 1.18 1995-04-11 15:30:06 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/ObjFLoader.st,v 1.19 1995-05-01 23:04:07 claus Exp $
 "
 !
 
@@ -1536,11 +1536,26 @@
 loadStatus
     "ask VM if class-hierarchy has been completely loaded"
 
-%{
-    RETURN (_MKSMALLINT(__check_registration__()));
+    |checker checkSymbol|
+
+    checker := self.
+    checkSymbol := #'superClassCheck:'.
+
+%{  /* NOREGISTER */
+    RETURN (_MKSMALLINT(__check_registration__(&checker, &checkSymbol)));
 %}
 !
 
+superClassCheck:aClass
+    "callBack from class registration code in VM: make certain, that aClass is
+     loaded too ..."
+
+    'checkCall for:' errorPrint. aClass name errorPrint. ' -> ' errorPrint.
+    aClass isBehavior ifFalse:['false' errorPrintNL. ^ false].
+    aClass autoload.
+    'true' errorPrintNL. ^ true
+!
+
 classNameThatFailed
     "ask VM for the name of the class that caused trouble"
 
--- a/ObjectFileLoader.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/ObjectFileLoader.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1993 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.18 1995-04-11 15:30:06 claus Exp $
+$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.19 1995-05-01 23:04:07 claus Exp $
 '!
 
 !ObjectFileLoader class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.18 1995-04-11 15:30:06 claus Exp $
+$Header: /cvs/stx/stx/libcomp/ObjectFileLoader.st,v 1.19 1995-05-01 23:04:07 claus Exp $
 "
 !
 
@@ -1536,11 +1536,26 @@
 loadStatus
     "ask VM if class-hierarchy has been completely loaded"
 
-%{
-    RETURN (_MKSMALLINT(__check_registration__()));
+    |checker checkSymbol|
+
+    checker := self.
+    checkSymbol := #'superClassCheck:'.
+
+%{  /* NOREGISTER */
+    RETURN (_MKSMALLINT(__check_registration__(&checker, &checkSymbol)));
 %}
 !
 
+superClassCheck:aClass
+    "callBack from class registration code in VM: make certain, that aClass is
+     loaded too ..."
+
+    'checkCall for:' errorPrint. aClass name errorPrint. ' -> ' errorPrint.
+    aClass isBehavior ifFalse:['false' errorPrintNL. ^ false].
+    aClass autoload.
+    'true' errorPrintNL. ^ true
+!
+
 classNameThatFailed
     "ask VM for the name of the class that caused trouble"
 
--- a/Parser.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/Parser.st	Tue May 02 01:04:40 1995 +0200
@@ -18,9 +18,11 @@
 			      methodVars methodVarNames 
 			      tree
 			      currentBlock
+			      parseForCode  
 			      usedInstVars usedClassVars usedVars
-			      modifiedInstVars modifiedClassVars
+			      modifiedInstVars modifiedClassVars modifiedGlobals
 			      usesSuper  
+			      usedGlobals usedSymbols usedMessages
 			      localVarDefPosition
 			      evalExitBlock
 			      selfNode superNode 
@@ -39,7 +41,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
 	     All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.36 1995-04-11 15:30:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.37 1995-05-01 23:04:17 claus Exp $
 '!
 
 !Parser class methodsFor:'documentation'!
@@ -60,7 +62,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.36 1995-04-11 15:30:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.37 1995-05-01 23:04:17 claus Exp $
 "
 !
 
@@ -379,6 +381,7 @@
 	parser := self for:(ReadStream on:aStringOrStream).
 	mustBackup := false
     ].
+    parser parseForCode. 
     parser setSelf:anObject.
     parser setContext:aContext.
     parser notifying:requestor.
@@ -900,7 +903,15 @@
 
     hasPrimitiveCode := false.
     warnSTXHereExtensionUsed := WarnSTXSpecials.
-    usesSuper := false
+    usesSuper := false.
+    parseForCode := false.
+!
+
+parseForCode
+    "turns off certain statistics (keeping referenced variables, modified vars etc.)
+     Use this when parsing for compilation or evaluation"
+
+    parseForCode := true
 !
 
 setClassToCompileFor:aClass
@@ -988,6 +999,12 @@
     ^ usedClassVars
 !
 
+usedGlobals
+    "return a collection with globalnames refd by method (valid after parsing)"
+
+    ^ usedGlobals
+!
+
 modifiedInstVars
     "return a collection with instvariablenames modified by method (valid after parsing)"
 
@@ -1000,6 +1017,12 @@
     ^ modifiedClassVars
 !
 
+modifiedGlobals
+    "return a collection with globalnames modified by method (valid after parsing)"
+
+    ^ modifiedGlobals
+!
+
 hasPrimitiveCode
     "return true if there was any ST/X style primitive code (valid after parsing)"
 
@@ -1590,6 +1613,7 @@
 		sel := self selectorCheck:tokenName for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
 		receiver := CascadeNode receiver:receiver selector:sel.
 		receiver lineNumber:tokenLineNr.
+		parseForCode ifFalse:[self rememberSelectorUsed:sel].
 		self nextToken.
 	    ] ifFalse:[
 		(tokenType == #BinaryOperator) ifTrue:[
@@ -1600,6 +1624,7 @@
 		    (arg == #Error) ifTrue:[^ #Error].
 		    receiver := CascadeNode receiver:receiver selector:sel arg:arg.
 		    receiver lineNumber:lno.
+		    parseForCode ifFalse:[self rememberSelectorUsed:sel].
 		] ifFalse:[
 		    (tokenType == #Keyword) ifTrue:[
 			pos := tokenPosition. 
@@ -1620,6 +1645,7 @@
 			sel := self selectorCheck:sel for:receiver position:pos to:pos2.
 			receiver := CascadeNode receiver:receiver selector:sel args:args.
 			receiver lineNumber:lno.
+			parseForCode ifFalse:[self rememberSelectorUsed:sel].
 		    ] ifFalse:[
 			(tokenType == #Error) ifTrue:[^ #Error].
 			self syntaxError:('invalid cascade; ' , tokenType printString , ' unexpected')
@@ -1697,7 +1723,8 @@
 	] ifFalse:[
 	    receiver := try
 	].
-	receiver lineNumber:lno
+	receiver lineNumber:lno.
+	parseForCode ifFalse:[self rememberSelectorUsed:sel].
     ].
     ^ receiver
 !
@@ -1786,6 +1813,7 @@
 	    receiver := try
 	].
 	receiver lineNumber:lno.
+	parseForCode ifFalse:[self rememberSelectorUsed:sel].
     ].
     ^ receiver
 !
@@ -1810,6 +1838,7 @@
 	    receiver := try
 	].
 	receiver lineNumber:tokenLineNr.
+	parseForCode ifFalse:[self rememberSelectorUsed:sel].
 	self nextToken.
     ].
     ^ receiver
@@ -1818,7 +1847,7 @@
 primary
     "parse a primary-expression; return a node-tree, nil or #Error"
 
-    |val var expr pos name t|
+    |val var expr pos name t cls|
 
     pos := tokenPosition.
     (tokenType == #Self) ifTrue:[
@@ -1872,27 +1901,35 @@
 		    errorFlag := true
 		] ifFalse:[
 		    (t == #InstanceVariable) ifTrue:[
-			modifiedInstVars isNil ifTrue:[
-			    modifiedInstVars := OrderedCollection new
-			].
 			name := PrevInstVarNames at:(var index).
-			(modifiedInstVars includes:name) ifFalse:[
+			parseForCode ifFalse:[
+			    modifiedInstVars isNil ifTrue:[
+				modifiedInstVars := Set new
+			    ].
 			    modifiedInstVars add:name
 			]
 		    ] ifFalse:[
 			(t == #ClassVariable) ifTrue:[
-			    modifiedClassVars isNil ifTrue:[
-				modifiedClassVars := OrderedCollection new
-			    ].
 			    name := var name.
 			    name := name copyFrom:((name indexOf:$:) + 1).
-			    (modifiedClassVars includes:name) ifFalse:[
+			    parseForCode ifFalse:[
+				modifiedClassVars isNil ifTrue:[
+				    modifiedClassVars := Set new
+				].
 				modifiedClassVars add:name
 			    ]
 			] ifFalse:[
 			    (t == #GlobalVariable) ifTrue:[
-				(Smalltalk classNamed:var name) notNil ifTrue:[
-				    self warning:'assignment to global which contains class' position:pos to:tokenPosition.
+				(cls := Smalltalk classNamed:var name) notNil ifTrue:[
+				    cls name = var name ifTrue:[
+					self warning:'assignment to global which contains class' position:pos to:tokenPosition.
+				    ]
+				].
+				parseForCode ifFalse:[
+				    modifiedGlobals isNil ifTrue:[
+					modifiedGlobals := Set new
+				    ].
+				    modifiedGlobals add:var name
 				]
 			    ]
 			]
@@ -2119,20 +2156,7 @@
 
 	instIndex := (self instVarNames) indexOf:varName startingAt:1.
 	instIndex ~~ 0 ifTrue:[
-	    usedInstVars isNil ifTrue:[
-		usedInstVars := OrderedCollection with:varName
-	    ] ifFalse:[
-		(usedInstVars includes:varName) ifFalse:[
-		    usedInstVars add:varName
-		]
-	    ].
-	    usedVars isNil ifTrue:[
-		usedVars := OrderedCollection with:varName
-	    ] ifFalse:[
-		(usedVars includes:varName) ifFalse:[
-		    usedVars add:varName
-		]
-	    ].
+	    parseForCode ifFalse:[self rememberInstVarUsed:varName].
 	    ^ VariableNode type:#InstanceVariable 
 			   name:varName
 			  index:instIndex
@@ -2145,20 +2169,7 @@
 	instIndex ~~ 0 ifTrue:[
 	    aClass := self inWhichClassIsClassInstVar:varName.
 	    aClass notNil ifTrue:[
-		usedClassVars isNil ifTrue:[
-		    usedClassVars := OrderedCollection with:varName
-		] ifFalse:[
-		    (usedClassVars includes:varName) ifFalse:[
-			usedClassVars add:varName
-		    ].
-		].
-		usedVars isNil ifTrue:[
-		    usedVars := OrderedCollection with:varName
-		] ifFalse:[
-		    (usedVars includes:varName) ifFalse:[
-			usedVars add:varName
-		    ]
-		].
+		parseForCode ifFalse:[self rememberClassVarUsed:varName].
 		^ VariableNode type:#ClassInstanceVariable
 			       name:varName
 			      index:instIndex
@@ -2172,20 +2183,7 @@
 	instIndex ~~ 0 ifTrue:[
 	    aClass := self inWhichClassIsClassVar:varName.
 	    aClass notNil ifTrue:[
-		usedClassVars isNil ifTrue:[
-		    usedClassVars := OrderedCollection with:varName
-		] ifFalse:[
-		    (usedClassVars includes:varName) ifFalse:[
-			usedClassVars add:varName
-		    ].
-		].
-		usedVars isNil ifTrue:[
-		    usedVars := OrderedCollection with:varName
-		] ifFalse:[
-		    (usedVars includes:varName) ifFalse:[
-			usedVars add:varName
-		    ].
-		].
+		parseForCode ifFalse:[self rememberClassVarUsed:varName].
 		^ VariableNode type:#ClassVariable 
 			       name:(aClass name , ':' , varName) asSymbol
 	    ]
@@ -2196,13 +2194,7 @@
     tokenSymbol := varName asSymbolIfInterned.
     tokenSymbol notNil ifTrue:[
 	(Smalltalk includesKey:tokenSymbol) ifTrue:[
-	    usedVars isNil ifTrue:[
-		usedVars := OrderedCollection with:varName
-	    ] ifFalse:[
-		(usedVars includes:varName) ifFalse:[
-		    usedVars add:varName
-		]
-	    ].
+	    parseForCode ifFalse:[self rememberGlobalUsed:varName].
 	    ^ VariableNode type:#GlobalVariable name:tokenSymbol
 	]
     ].
@@ -2218,6 +2210,7 @@
     (v == #Error) ifFalse:[^ v].
     v := self correctVariable.
     (v == #Error) ifFalse:[^ v].
+    parseForCode ifFalse:[self rememberGlobalUsed:tokenName].
     ^ VariableNode type:#GlobalVariable name:tokenName asSymbol
 !
 
@@ -2236,11 +2229,12 @@
 	    aClass := baseClass
 	]
     ].
-    [aClass notNil] whileTrue:[
-	(aClass classVarNames includes:aString) ifTrue:[ ^ aClass].
-	aClass := aClass superclass
-    ].
-    ^ nil
+    ^ aClass whichClassDefinesClassVar:aString
+"/    [aClass notNil] whileTrue:[
+"/        (aClass classVarNames includes:aString) ifTrue:[ ^ aClass].
+"/        aClass := aClass superclass
+"/    ].
+"/    ^ nil
 !
 
 inWhichClassIsClassInstVar:aString
@@ -2525,6 +2519,46 @@
     ^ #Error
 ! !
 
+!Parser methodsFor:'statistic'!
+
+rememberSelectorUsed:sel
+    usedMessages isNil ifTrue:[
+	usedMessages := IdentitySet new.
+    ].
+    usedMessages add:sel
+!
+
+rememberVariableUsed:name 
+    usedVars isNil ifTrue:[
+	usedVars := Set new
+    ].
+    usedVars add:name
+!
+
+rememberGlobalUsed:name 
+    usedGlobals isNil ifTrue:[
+	usedGlobals := Set new
+    ].
+    usedGlobals add:name.
+    self rememberVariableUsed:name
+!
+
+rememberClassVarUsed:name 
+    usedClassVars isNil ifTrue:[
+	usedClassVars := Set new
+    ].
+    usedClassVars add:name.
+    self rememberVariableUsed:name
+!
+
+rememberInstVarUsed:name 
+    usedInstVars isNil ifTrue:[
+	usedInstVars := Set new
+    ].
+    usedInstVars add:name.
+    self rememberVariableUsed:name
+! !
+
 !Parser methodsFor:'error correction'!
 
 correctByDeleting
@@ -2902,12 +2936,12 @@
 		    receiver isSuper ifTrue:[
 			receiver isHere ifFalse:[
 			    ((superCls := classToCompileFor superclass) notNil
-			    and:[(superCls whichClassImplements:sym) isNil]) ifTrue:[
+			    and:[(superCls whichClassIncludesSelector:sym) isNil]) ifTrue:[
 				err := ' is currently not implemented in any superclass'.
 				ok := false
 			    ]
 			] ifTrue:[
-			    (classToCompileFor whichClassImplements:sym) isNil ifTrue:[
+			    (classToCompileFor whichClassIncludesSelector:sym) isNil ifTrue:[
 				err := ' is currently not implemented in this class'.
 				ok := false
 			    ]
@@ -2918,7 +2952,7 @@
 		    and:[receiver selector == #class
 		    and:[receiver receiver type == #Self]]) ifTrue:[
 			"its a message to self class - can check this too ..."
-			(classToCompileFor class whichClassImplements:sym) isNil ifTrue:[
+			(classToCompileFor class whichClassIncludesSelector:sym) isNil ifTrue:[
 			    ok := false.
 			    classToCompileFor allSubclasses do:[:subclass |
 				(subclass class implements:sym) ifTrue:[
--- a/SourceFileLoader.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/SourceFileLoader.st	Tue May 02 01:04:40 1995 +0200
@@ -13,7 +13,7 @@
 'From Smalltalk/X, Version:2.10.4 on 24-feb-1995 at 3:12:23 am'!
 
 Object subclass:#SourceFileLoader
-	 instanceVariableNames:'myStream currentSource package'
+	 instanceVariableNames:'myStream currentSource package wantChangeLog'
 	 classVariableNames:''
 	 poolDictionaries:''
 	 category:'System-Compiler'
@@ -23,7 +23,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/SourceFileLoader.st,v 1.2 1995-04-11 15:30:32 claus Exp $
+$Header: /cvs/stx/stx/libcomp/SourceFileLoader.st,v 1.3 1995-05-01 23:04:30 claus Exp $
 "
 !
 
@@ -53,7 +53,7 @@
 !SourceFileLoader class methodsFor:'instance creation'!
 
 on:aStream
-    ^ self new reader:aStream
+    ^ self new reader:aStream wantChangeLog:false
 ! !
 
 !SourceFileLoader methodsFor:'error handling'!
@@ -74,7 +74,7 @@
     "
 "/    position printOn:Transcript.
 "/    Transcript show:' '.
-    Transcript showCr:aMessage.
+    Transcript show:'**  '; showCr:aMessage.
     ^ false
 
 !
@@ -89,8 +89,19 @@
 
 !SourceFileLoader methodsFor:'private access'!
 
-reader:aStream
-    myStream := aStream
+reader:aStream wantChangeLog:aBoolean
+    myStream := aStream.
+    wantChangeLog := aBoolean
+! !
+
+!SourceFileLoader methodsFor:'compiler queries'!
+
+wantChangeLog
+    "sent by the compiler to ask if a changeLog entry should
+     be written. Return false here, since SourceFileLaoders are
+     used to read existing source files"
+
+    ^ wantChangeLog
 ! !
 
 !SourceFileLoader methodsFor:'directve processing'!
--- a/SrcFLoader.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/SrcFLoader.st	Tue May 02 01:04:40 1995 +0200
@@ -13,7 +13,7 @@
 'From Smalltalk/X, Version:2.10.4 on 24-feb-1995 at 3:12:23 am'!
 
 Object subclass:#SourceFileLoader
-	 instanceVariableNames:'myStream currentSource package'
+	 instanceVariableNames:'myStream currentSource package wantChangeLog'
 	 classVariableNames:''
 	 poolDictionaries:''
 	 category:'System-Compiler'
@@ -23,7 +23,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/SrcFLoader.st,v 1.2 1995-04-11 15:30:32 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/SrcFLoader.st,v 1.3 1995-05-01 23:04:30 claus Exp $
 "
 !
 
@@ -53,7 +53,7 @@
 !SourceFileLoader class methodsFor:'instance creation'!
 
 on:aStream
-    ^ self new reader:aStream
+    ^ self new reader:aStream wantChangeLog:false
 ! !
 
 !SourceFileLoader methodsFor:'error handling'!
@@ -74,7 +74,7 @@
     "
 "/    position printOn:Transcript.
 "/    Transcript show:' '.
-    Transcript showCr:aMessage.
+    Transcript show:'**  '; showCr:aMessage.
     ^ false
 
 !
@@ -89,8 +89,19 @@
 
 !SourceFileLoader methodsFor:'private access'!
 
-reader:aStream
-    myStream := aStream
+reader:aStream wantChangeLog:aBoolean
+    myStream := aStream.
+    wantChangeLog := aBoolean
+! !
+
+!SourceFileLoader methodsFor:'compiler queries'!
+
+wantChangeLog
+    "sent by the compiler to ask if a changeLog entry should
+     be written. Return false here, since SourceFileLaoders are
+     used to read existing source files"
+
+    ^ wantChangeLog
 ! !
 
 !SourceFileLoader methodsFor:'directve processing'!
--- a/UnaryNd.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/UnaryNd.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
               All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.11 1995-02-18 01:25:46 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.12 1995-05-01 23:04:37 claus Exp $
 '!
 
 !UnaryNode class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.11 1995-02-18 01:25:46 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/UnaryNd.st,v 1.12 1995-05-01 23:04:37 claus Exp $
 "
 !
 
@@ -73,6 +73,22 @@
 "
     folding ifTrue:[
         "do constant folding ..."
+	r isGlobal ifTrue:[
+	    (r name = 'Character') ifTrue:[
+		recVal := r evaluate.
+		selector := selectorString asSymbolIfInterned.
+		selector notNil ifTrue:[
+                    (#( tab cr space) includes:selector)
+                    ifTrue:[
+		        (recVal respondsTo:selector) ifTrue:[
+                            result := recVal perform:selector.
+                            ^ ConstantNode type:(ConstantNode typeOfConstant:result)
+                                          value:result
+                        ]
+		    ]
+		]
+	    ]
+	].
         r isConstant ifTrue:[
             "check if we can do it ..."
             recVal := r evaluate.
--- a/UnaryNode.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/UnaryNode.st	Tue May 02 01:04:40 1995 +0200
@@ -21,7 +21,7 @@
 COPYRIGHT (c) 1989 by Claus Gittinger
               All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.11 1995-02-18 01:25:46 claus Exp $
+$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.12 1995-05-01 23:04:37 claus Exp $
 '!
 
 !UnaryNode class methodsFor:'documentation'!
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.11 1995-02-18 01:25:46 claus Exp $
+$Header: /cvs/stx/stx/libcomp/UnaryNode.st,v 1.12 1995-05-01 23:04:37 claus Exp $
 "
 !
 
@@ -73,6 +73,22 @@
 "
     folding ifTrue:[
         "do constant folding ..."
+	r isGlobal ifTrue:[
+	    (r name = 'Character') ifTrue:[
+		recVal := r evaluate.
+		selector := selectorString asSymbolIfInterned.
+		selector notNil ifTrue:[
+                    (#( tab cr space) includes:selector)
+                    ifTrue:[
+		        (recVal respondsTo:selector) ifTrue:[
+                            result := recVal perform:selector.
+                            ^ ConstantNode type:(ConstantNode typeOfConstant:result)
+                                          value:result
+                        ]
+		    ]
+		]
+	    ]
+	].
         r isConstant ifTrue:[
             "check if we can do it ..."
             recVal := r evaluate.
--- a/UndefVar.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/UndefVar.st	Tue May 02 01:04:40 1995 +0200
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -19,9 +19,9 @@
 
 UndefinedVariable comment:'
 COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/Attic/UndefVar.st,v 1.4 1994-08-22 12:41:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/UndefVar.st,v 1.5 1995-05-01 23:04:40 claus Exp $
 '!
 
 !UndefinedVariable class methodsFor:'documentation'!
@@ -29,7 +29,7 @@
 copyright
 "
  COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/Attic/UndefVar.st,v 1.4 1994-08-22 12:41:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/Attic/UndefVar.st,v 1.5 1995-05-01 23:04:40 claus Exp $
 "
 !
 
@@ -74,6 +74,28 @@
     self error:('trying to create subclass of undefined class: ', name)
 ! !
 
+!UndefinedVariable methodsFor:'file skipping'!
+
+fileInFrom:aStream notifying:someOne passChunk:passChunk
+    "this is sent, if you continue after a warning about
+     methods for undefined class.
+     It simply skips chunks and sends a warning to the Transcript."
+
+    |aString done|
+
+    done := false.
+    [done] whileFalse:[
+	done := aStream atEnd.
+	done ifFalse:[
+	    aString := aStream nextChunk.
+	    done := aString isNil or:[aString isEmpty].
+	    done ifFalse:[
+		Transcript showCr:'*** skipping method for undefined class: ' , name
+	    ]
+	]
+    ].
+! !
+
 !UndefinedVariable methodsFor:'catching messages'!
 
 class
@@ -97,17 +119,17 @@
 !
 
 variableByteSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 !
 
 variableSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 !
 
 variableWordSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 ! !
 
--- a/UndefinedVariable.st	Tue Apr 11 17:30:32 1995 +0200
+++ b/UndefinedVariable.st	Tue May 02 01:04:40 1995 +0200
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -19,9 +19,9 @@
 
 UndefinedVariable comment:'
 COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libcomp/UndefinedVariable.st,v 1.4 1994-08-22 12:41:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/UndefinedVariable.st,v 1.5 1995-05-01 23:04:40 claus Exp $
 '!
 
 !UndefinedVariable class methodsFor:'documentation'!
@@ -29,7 +29,7 @@
 copyright
 "
  COPYRIGHT (c) 1993 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libcomp/UndefinedVariable.st,v 1.4 1994-08-22 12:41:14 claus Exp $
+$Header: /cvs/stx/stx/libcomp/UndefinedVariable.st,v 1.5 1995-05-01 23:04:40 claus Exp $
 "
 !
 
@@ -74,6 +74,28 @@
     self error:('trying to create subclass of undefined class: ', name)
 ! !
 
+!UndefinedVariable methodsFor:'file skipping'!
+
+fileInFrom:aStream notifying:someOne passChunk:passChunk
+    "this is sent, if you continue after a warning about
+     methods for undefined class.
+     It simply skips chunks and sends a warning to the Transcript."
+
+    |aString done|
+
+    done := false.
+    [done] whileFalse:[
+	done := aStream atEnd.
+	done ifFalse:[
+	    aString := aStream nextChunk.
+	    done := aString isNil or:[aString isEmpty].
+	    done ifFalse:[
+		Transcript showCr:'*** skipping method for undefined class: ' , name
+	    ]
+	]
+    ].
+! !
+
 !UndefinedVariable methodsFor:'catching messages'!
 
 class
@@ -97,17 +119,17 @@
 !
 
 variableByteSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 !
 
 variableSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 !
 
 variableWordSubclass:t instanceVariableNames:f 
-                          classVariableNames:d poolDictionaries:s category:cat
+			  classVariableNames:d poolDictionaries:s category:cat
     self subclassingError
 ! !