Merge commit. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Dec 2012 21:05:45 +0100
branchdevelopment
changeset 1901 02f4c2d0cebc
parent 1898 51de40865b71 (current diff)
parent 1895 2d30e588124c (diff)
child 1902 7edd54d4c29a
Merge commit.
experiments/JavaIncrementalCompiler.st
experiments/JavaIncrementalCompilerTests.st
--- a/JavaClassRegistry.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/JavaClassRegistry.st	Sun Dec 16 21:05:45 2012 +0100
@@ -259,10 +259,6 @@
 
 getClassesDefinedBy:classLoader 
     ^loaders at: classLoader ifAbsent: [nil].
-!
-
-removeClassLoader: aJavaClassLoader 
-    loaders removeKey: aJavaClassLoader.
 ! !
 
 !JavaClassRegistry methodsFor:'initialization'!
@@ -445,6 +441,12 @@
     ].
 
     "Created: / 04-04-2012 / 10:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unregisterClassLoader: aJavaClassLoader 
+    loaders removeKey: aJavaClassLoader ifAbsent: nil.
+
+    "Created: / 16-12-2012 / 16:39:45 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !JavaClassRegistry class methodsFor:'documentation'!
--- a/JavaClassReloader.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/JavaClassReloader.st	Sun Dec 16 21:05:45 2012 +0100
@@ -140,7 +140,10 @@
 
 migrate
     "Possibly migrate instances and class. Return the class that should
-     be installed in registry afterwards"
+     be installed in registry once reloader finishes his job.
+     
+     At this point, all references are already invalidated (see #reload)
+     "
 
     mustMigrateInstances ifTrue:[
         self migrateInstances.
@@ -154,10 +157,11 @@
         self migrateClass.
         ^newClass.
     ].
-    self update.
+    self updateOldClass.
     ^oldClass.
 
     "Created: / 20-02-2012 / 23:40:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 16-12-2012 / 17:39:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
 migrateClass
@@ -258,16 +262,17 @@
     "Created: / 21-02-2012 / 09:45:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-update
+updateOldClass
+    "at this point we know that both classes have same layout. So we can
+     simply copy methods and other info from new class to old one. 
+     References must be flushed anyway!!"
 
-    "Brute force, copy instvars directly"
-    self assert: oldClass class instSize == newClass class instSize.
 
-    1 to: newClass class instSize do:[:i|
-        newClass instVarAt: i put: (oldClass instVarAt: i).
-    ].
 
-    "Created: / 21-02-2012 / 11:04:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    oldClass setMethodDictionary: newClass methodDictionary.
+    oldClass setConstantPool: newClass constantPool.
+
+    "Created: / 16-12-2012 / 17:36:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !JavaClassReloader::SingleClassReloader methodsFor:'reloading'!
--- a/JavaFreshlyInitializedResource.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/JavaFreshlyInitializedResource.st	Sun Dec 16 21:05:45 2012 +0100
@@ -64,6 +64,11 @@
 
 !JavaFreshlyInitializedResource class methodsFor:'documentation'!
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
-    ^ '$Id$'
+    ^ '§Id§'
 ! !
--- a/experiments/ClassReloadingTests.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/ClassReloadingTests.st	Sun Dec 16 21:05:45 2012 +0100
@@ -27,7 +27,7 @@
 "{ Package: 'stx:libjava/experiments' }"
 
 TestCase subclass:#ClassReloadingTests
-	instanceVariableNames:''
+	instanceVariableNames:'testClassLoader'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Languages-Java-Tests-ClassReloading'
@@ -67,7 +67,114 @@
 
 history
 
-    "Created: #registerChangingClassParent / 08-12-2012 / 18:37:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: #changingClass / 16-12-2012 / 17:12:08 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+! !
+
+!ClassReloadingTests methodsFor:'private'!
+
+compile: sourceCode
+
+    ^ JavaCompiler compile: sourceCode.
+
+    "Created: / 16-12-2012 / 17:02:41 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+compileAndRegister: sourceCode
+    |compiledClass|
+
+    compiledClass := self compile: sourceCode.
+    ^ self register: compiledClass.
+
+    "Created: / 16-12-2012 / 16:59:19 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+performTest
+
+    JavaClassReader classLoaderQuerySignal answer: testClassLoader do:[
+        super performTest
+    ].
+
+    "Created: / 16-12-2012 / 16:35:01 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+register: compiledClass
+
+    JavaVM registry registerClass: compiledClass.
+    ^ compiledClass.
+
+    "Created: / 16-12-2012 / 17:02:04 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+testInfrastructure
+
+    |compiledClass|
+
+    self assert: (JavaClassReader classLoaderQuerySignal query = testClassLoader ) 
+        message: 'tests should run in testClassLoader sandbox'.
+    compiledClass := self compileAndRegister: '
+public class HelloSun {
+
+    public String hello() {
+        return "helloooo";
+    }
+
+}
+'.
+    self assert: compiledClass notNil message: 'Java compiler should be working for these tests to run'.
+    self assert: compiledClass classLoader = testClassLoader message: 'compiled classes should have testClassLoader as their defining cl'.
+    self assert: (JavaVM registry getClassesDefinedBy: testClassLoader) size = 1 message: 'only classes from these tests should use testClassLoader'.
+    self assert: (JavaVM registry getClassesDefinedBy: testClassLoader) anElement == compiledClass message: 'compiled classes should be registered in testClassLoader'.
+
+    "Created: / 16-12-2012 / 16:38:17 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+! !
+
+!ClassReloadingTests methodsFor:'registering classes'!
+
+registerChangingClassParent
+    | changingClassParent |
+    changingClassParent := self changingClassParent.
+   ^ self register: changingClassParent.
+
+    "Created: / 08-12-2012 / 18:37:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Modified: / 16-12-2012 / 17:06:30 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+registerClassWithAddedFooMethod
+    ^ self register: self classWithAddedFooMethod.
+
+    "Created: / 16-12-2012 / 16:29:13 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+registerClassWithFooMethodButDifferentSignature
+    ^ self register: self classWithFooMethodButDifferentSignature.
+
+    "Created: / 16-12-2012 / 16:35:58 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+registerClassWithModifiedFooMethod
+    ^ self register: self classWithModifiedFooMethod.
+
+    "Created: / 16-12-2012 / 17:01:08 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+registerClassWithoutFooMethod
+    ^ self register: self classWithoutFooMethod.
+
+    "Created: / 16-12-2012 / 17:04:12 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+! !
+
+!ClassReloadingTests methodsFor:'running'!
+
+setUp
+    testClassLoader := JAVA java lang ClassLoader new.
+
+    "Created: / 16-12-2012 / 16:32:32 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+tearDown
+    JavaVM registry unregisterClassLoader: testClassLoader.
+
+    "Created: / 16-12-2012 / 16:33:31 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !ClassReloadingTests methodsFor:'test helpers'!
@@ -102,26 +209,36 @@
 !
 
 changingClass
+
+    ^ JAVA classReloadingTests ChangingClass.
+
+    "Created: / 16-12-2012 / 17:12:08 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+changingClassParent
+     | compiledClass |
+     
+     compiledClass := self compile: '
+package classReloadingTests;
+public class ChangingClassParent {
+    public int foo() {
+        return 1;
+    }   
+}
+'.
+    compiledClass 
+        ifNil: [
+            self error: 'changingClassParent is expected to be not nil in these tests'
+        ].
+        ^ compiledClass.
+
+    "Created: / 16-12-2012 / 17:06:06 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+classWithAddedFooMethod
     | changingClass |
     self registerChangingClassParent.
-    changingClass := JavaCompiler 
-            compile: '
-package classReloadingTests;
-public class ChangingClass extends ChangingClassParent {}
-'.
-    changingClass 
-        ifNil: [ self error: 'changingClass is expected to be not nil in these tests' ].
-    ^ changingClass.
-
-    "Created: / 06-12-2012 / 21:41:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-12-2012 / 18:38:35 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-!
-
-changingClassWithAddedCallFooMethod
-    | changingClass |
-    self registerChangingClassParent.
-    changingClass := JavaCompiler 
-            compile: '
+    changingClass := self compile: '
 package classReloadingTests;
 public class ChangingClass extends ChangingClassParent {
     public int foo() {
@@ -133,15 +250,13 @@
         ifNil: [ self error: 'changingClass is expected to be not nil in these tests' ].
     ^ changingClass.
 
-    "Created: / 06-12-2012 / 21:41:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-12-2012 / 18:38:53 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: / 16-12-2012 / 16:07:18 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
-changingClassWithCallFooWithDifferentSignature
+classWithFooMethodButDifferentSignature
     | changingClass |
     self registerChangingClassParent.
-    changingClass := JavaCompiler 
-            compile: '
+    changingClass := self compile: '
 package classReloadingTests;
 public class ChangingClass extends ChangingClassParent {
     public String foo() {
@@ -153,15 +268,13 @@
         ifNil: [ self error: 'changingClass is expected to be not nil in these tests' ].
     ^ changingClass.
 
-    "Created: / 06-12-2012 / 21:50:02 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-12-2012 / 18:38:44 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: / 16-12-2012 / 16:07:42 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
-changingClassWithModifiedCallFooMethod
+classWithModifiedFooMethod
     | changingClass |
     self registerChangingClassParent.
-    changingClass := JavaCompiler 
-            compile: '
+    changingClass := self compile: '
 package classReloadingTests;
 public class ChangingClass extends ChangingClassParent {
     public int foo() {
@@ -173,28 +286,21 @@
         ifNil: [ self error: 'changingClass is expected to be not nil in these tests' ].
     ^ changingClass.
 
-    "Created: / 06-12-2012 / 21:49:19 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-12-2012 / 18:39:16 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: / 16-12-2012 / 16:07:57 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
-registerChangingClassParent
-    | changingClassParent |
-    changingClassParent := JavaCompiler 
-            compile: '
+classWithoutFooMethod
+    | changingClass |
+    self registerChangingClassParent.
+    changingClass := self compile: '
 package classReloadingTests;
-public class ChangingClassParent {
-    public int foo() {
-        return 1;
-    }   
-}
+public class ChangingClass extends ChangingClassParent {}
 '.
-    changingClassParent 
-        ifNil: [
-            self error: 'changingClassParent is expected to be not nil in these tests'
-        ].
-    JavaVM registry registerClass: changingClassParent.
+    changingClass 
+        ifNil: [ self error: 'changingClass is expected to be not nil in these tests' ].
+    ^ changingClass.
 
-    "Created: / 08-12-2012 / 18:37:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: / 16-12-2012 / 16:06:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !ClassReloadingTests class methodsFor:'documentation'!
--- a/experiments/JavaCompiler.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/JavaCompiler.st	Sun Dec 16 21:05:45 2012 +0100
@@ -376,7 +376,7 @@
     files := JAVA java util ArrayList new.
     files add: (JAVA java io File new: javafile pathName).
     units := manager getJavaFileObjectsFromFiles: files.
-    task := javac getTask: nil with: manager with: nil with: nil with: units.
+    task := javac getTask: nil with: manager with: nil with: nil with: nil with: units.
     task call ifFalse:[
         self error:'Compilation failed for whatever reason!!'.
     ].
@@ -386,6 +386,7 @@
     ^JavaClassReader readStream: classfile readStream.
 
     "Created: / 15-12-2012 / 23:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-12-2012 / 15:36:16 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !JavaCompiler::Javac methodsFor:'private'!
--- a/experiments/JavaCompilerTests.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/JavaCompilerTests.st	Sun Dec 16 21:05:45 2012 +0100
@@ -67,9 +67,7 @@
 
 history
 
-    "Created: #testCompilingFromStringWithInCodeDependencies / 09-12-2012 / 09:29:55 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: #registerFooBarSuperclass / 09-12-2012 / 20:35:03 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-    "Modified: #testCompilingFromStringWithInCodeDependencies / 09-12-2012 / 20:36:29 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Created: #testCompilingFromComplexStringWithComplexAssertions / 16-12-2012 / 15:38:56 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !JavaCompilerTests methodsFor:'analyzer - class name tests'!
@@ -231,6 +229,30 @@
 
 !JavaCompilerTests methodsFor:'tests'!
 
+testCompilingFromComplexStringWithComplexAssertions
+    | sourceCode  compiledClass |
+    self registerPackageVisibleClass.
+    sourceCode := '
+package stx.libjava.tests;
+import org.junit.Test;
+import static java.lang.String.*;
+public class Wohoo {
+
+    public int foo() {
+        return new PackageVisibleClass().foo();
+    }
+}
+'.
+    compiledClass := JavaCompiler compile: sourceCode.
+    self assert: compiledClass notNil message: 'compiler should return compiled class'.
+    self assert: compiledClass isJavaClass message: 'compiler should return java class'.
+    self assert: compiledClass javaName = 'stx.libjava.tests.Wohoo' message: 'class name is not correct'.
+    self assert: compiledClass javaPackage = 'stx.libjava.tests' message: 'java package is not correct'.
+    self assert: (compiledClass lookupMethodFor: #'foo()I') notNil message: 'compiled class should have the foo method'.
+
+    "Created: / 16-12-2012 / 15:38:56 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
 testCompilingFromString
     | sourceCode  compiledClass |
     sourceCode := '
--- a/experiments/JavaIncrementalCompiler.st	Sun Dec 16 17:23:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-"
-"{ Package: 'stx:libjava/experiments' }"
-
-Object subclass:#JavaIncrementalCompiler
-	instanceVariableNames:'javaClass'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Languages-Java-Support-Compiling'
-!
-
-!JavaIncrementalCompiler class methodsFor:'documentation'!
-
-copyright
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
-"
-!
-
-history
-
-    "Created: #addMethod: / 08-12-2012 / 18:18:02 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompiler class methodsFor:'instance creation'!
-
-for: aJavaClass
-^ self new for: aJavaClass.
-
-    "Created: / 08-12-2012 / 18:16:08 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompiler methodsFor:'initialization'!
-
-for: aJavaClass 
-    javaClass := aJavaClass.
-
-    "Created: / 08-12-2012 / 18:16:38 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompiler methodsFor:'methods'!
-
-addMethod: methodSource
-
-    "Created: / 08-12-2012 / 18:18:02 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompiler class methodsFor:'documentation'!
-
-version_HG
-
-    ^ '$Changeset: <not expanded> $'
-!
-
-version_SVN
-    ^ '§Id::                                                                                                                        §'
-! !
--- a/experiments/JavaIncrementalCompilerTests.st	Sun Dec 16 17:23:16 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-"
-"{ Package: 'stx:libjava/experiments' }"
-
-ClassReloadingTests subclass:#JavaIncrementalCompilerTests
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Languages-Java-Tests-ClassReloading'
-!
-
-!JavaIncrementalCompilerTests class methodsFor:'documentation'!
-
-copyright
-"
- Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
-                         SWING Research Group, Czech Technical University 
-                         in Prague
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
-"
-!
-
-history
-
-    "Created: #callFooMethodSource / 08-12-2012 / 18:13:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompilerTests class methodsFor:'resources'!
-
-resources
-    ^ Array with: JavaFreshlyInitializedResource.
-
-    "Created: / 06-12-2012 / 21:53:01 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
-!JavaIncrementalCompilerTests methodsFor:'tests'!
-
-testAddingMethod
-    | changingClass |
-    changingClass := self changingClass.
-    self assert: (changingClass lookupMethodFor: #'foo()V') javaClass 
-                ~= changingClass
-        message: 'Initially, changing class should not have the method defined'.
-    (JavaIncrementalCompiler for: changingClass) 
-        addMethod: self callFooMethodSource.
-    self assert: (changingClass lookupMethodFor: #'foo()V') javaClass 
-                = changingClass
-        message: 'Initially, changing class should not have the method defined'.
-
-    "Created: / 06-12-2012 / 22:12:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified (format): / 08-12-2012 / 18:40:55 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-! !
-
-!JavaIncrementalCompilerTests class methodsFor:'documentation'!
-
-version_SVN
-    ^ '$Id::                                                                                                                        $'
-! !
--- a/experiments/Make.proto	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/Make.proto	Sun Dec 16 21:05:45 2012 +0100
@@ -159,7 +159,6 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaByteCodeInterpreter.$(O) JavaByteCodeInterpreter.$(H): JavaByteCodeInterpreter.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParserII.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParserI.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(STCHDR)
-$(OUTDIR)JavaIncrementalCompiler.$(O) JavaIncrementalCompiler.$(H): JavaIncrementalCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWrapperCompiler.$(O) JavaMethodWrapperCompiler.$(H): JavaMethodWrapperCompiler.st $(INCLUDE_TOP)/stx/libjava/Java.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)NoReflectionObject.$(O) NoReflectionObject.$(H): NoReflectionObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PersonSample.$(O) PersonSample.$(H): PersonSample.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/experiments/Make.spec	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/Make.spec	Sun Dec 16 21:05:45 2012 +0100
@@ -59,7 +59,6 @@
 	JavaByteCodeInterpreter \
 	JavaByteCodeSteppableInterpreter \
 	JavaCompiler \
-	JavaIncrementalCompiler \
 
 
 
@@ -74,7 +73,6 @@
     $(OUTDIR)JavaByteCodeInterpreter.$(O) \
     $(OUTDIR)JavaByteCodeSteppableInterpreter.$(O) \
     $(OUTDIR)JavaCompiler.$(O) \
-    $(OUTDIR)JavaIncrementalCompiler.$(O) \
     $(OUTDIR)extensions.$(O) \
 
 
--- a/experiments/SingleClassReloadingTests.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/SingleClassReloadingTests.st	Sun Dec 16 21:05:45 2012 +0100
@@ -67,7 +67,7 @@
 
 history
 
-    "Created: #testAddingMethod / 06-12-2012 / 21:52:02 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Created: #testAddingInterface / 16-12-2012 / 17:40:40 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !SingleClassReloadingTests class methodsFor:'resources'!
@@ -78,58 +78,107 @@
     "Created: / 06-12-2012 / 18:22:13 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
+!SingleClassReloadingTests methodsFor:'interfaces'!
+
+testAddingInterface
+    self assert: false message: 'implement me!!'.
+
+    "Created: / 16-12-2012 / 17:40:40 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+! !
+
 !SingleClassReloadingTests methodsFor:'methods'!
 
-testAddingMethod
-    "changing class is a subclass of a class implementing callFoo. During the test callFoo method is overridden in changing class."
-    
+testAddingMethod    
+    "test compiles and registers the class, creates an instance of this class and calls 
+    foo()I method. Foo method is inherited from superclass and returns 1. Then the class 
+    is reloaded (new version is registered) and foo method is overridden and should return 2."
+
     | caller  changingObject |
     caller := self callerClass new.
-    changingObject := self changingClassWithAddedCallFooMethod new.
+     
+    self registerClassWithoutFooMethod.
+    changingObject := self changingClass new.
     self assert: (caller callFoo: changingObject) == 1
         message: 'initial changing class should not override callFoo method'.
-    JavaClassReloader reload: self changingClass
-        with: self changingClassWithCallFooWithDifferentSignature.
+
+    self registerClassWithAddedFooMethod.
     self assert: (caller callFoo: changingObject) == 2
-        message: 'changing class should override callFoo method after reloading'.
+        message: 'changing class should override callFoo method after reloading and return 2'.
 
     "Created: / 06-12-2012 / 21:52:02 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 16-12-2012 / 17:22:22 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
 testChangingSignatureOfMethod
-    "changing class is a subclass of a class implementing callFoo. During the test callFoo method is overridden in changing class."
+    "test compiles and registers the class with foo()I method, creates an instance of this class 
+    and calls foo()I method. Foo method returns 2. Then the class is reloaded (new version is registered)
+    and foo method is modified and should return string now (signature is foo()Ljava/lang/String;).."
     
     | caller  changingObject |
+
     caller := self callerClass new.
-    changingObject := self changingClassWithAddedCallFooMethod new.
+    self registerClassWithAddedFooMethod.
+    changingObject := self changingClass new.
     self assert: (caller callFoo: changingObject) == 2
-        message: 'initial changing class should not override callFoo method'.
-    JavaClassReloader reload: self changingClass
-        with: self changingClassWithCallFooWithDifferentSignature.
+        message: 'initial foo method should return 2'.
+
+    self registerClassWithFooMethodButDifferentSignature.
     self assert: (caller callFoo: changingObject) = 'different signature'
-        message: 'changing class should override callFoo method after reloading'.
+        message: 'after reloading, foo method should return string "different signature"'.
 
     "Created: / 06-12-2012 / 21:50:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 16-12-2012 / 17:22:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 !
 
 testModifyingMethod
-    "changing class is a subclass of a class implementing callFoo. During the test callFoo method is overridden in changing class."
+    "test compiles and registers the class with foo()I method, creates an instance of 
+    this class and calls foo()I method. Foo method returns 2. Then the class is reloaded 
+    (new version is registered) and foo method is modified and should return 2."
     
     | caller  changingObject |
+
     caller := self callerClass new.
-    changingObject := self changingClassWithAddedCallFooMethod new.
+    self registerClassWithAddedFooMethod.
+    changingObject := self changingClass new.
     self assert: (caller callFoo: changingObject) == 2
-        message: 'initial changing class should not override callFoo method'.
-    JavaClassReloader reload: self changingClass
-        with: self changingClassWithModifiedCallFooMethod.
+        message: 'initially, foo method should return 2'.
+
+    self registerClassWithModifiedFooMethod.
     self assert: (caller callFoo: changingObject) == 3
-        message: 'changing class should override callFoo method after reloading'.
+        message: 'after reload, foo method should be modified to return 3 instead'.
 
     "Created: / 06-12-2012 / 21:51:14 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
+    "Modified: / 16-12-2012 / 17:22:56 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
+testRemovingMethod   
+"test compiles and registers the class with foo()I method, creates an instance of 
+    this class and calls foo()I method. Foo method returns 2. Then the class is reloaded 
+    (new version is registered) and foo method is modified and should return 2."
+
+    | caller  changingObject |
+
+    caller := self callerClass new.
+    self registerClassWithAddedFooMethod.
+    changingObject := self changingClass new.
+    self assert: (caller callFoo: changingObject) == 2
+        message: 'initially, foo method should be overridden and return 2'.
+
+    self registerClassWithAddedFooMethod.
+    self assert: (caller callFoo: changingObject) == 1
+        message: 'after reloading (and thus removing the foo method), inherited version should be performed - the one returning 1'.
+
+    "Created: / 16-12-2012 / 16:01:58 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+    "Modified (format): / 16-12-2012 / 17:24:37 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
 ! !
 
 !SingleClassReloadingTests class methodsFor:'documentation'!
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
-    ^ '$Id::                                                                                                                        $'
+    ^ '§Id::                                                                                                                        §'
 ! !
--- a/experiments/abbrev.stc	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/abbrev.stc	Sun Dec 16 21:05:45 2012 +0100
@@ -14,6 +14,4 @@
 ClassReloadingTests ClassReloadingTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
 JavaCompiler JavaCompiler stx:libjava/experiments 'Languages-Java-Support-Compiling' 0
 JavaCompilerTests JavaCompilerTests stx:libjava/experiments 'Languages-Java-Tests-Compiling' 1
-JavaIncrementalCompiler JavaIncrementalCompiler stx:libjava/experiments 'Languages-Java-Support-Compiling' 0
-JavaIncrementalCompilerTests JavaIncrementalCompilerTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
 SingleClassReloadingTests SingleClassReloadingTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
--- a/experiments/bc.mak	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/bc.mak	Sun Dec 16 21:05:45 2012 +0100
@@ -84,7 +84,6 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)JavaByteCodeInterpreter.$(O) JavaByteCodeInterpreter.$(H): JavaByteCodeInterpreter.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParserII.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParserI.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(STCHDR)
-$(OUTDIR)JavaIncrementalCompiler.$(O) JavaIncrementalCompiler.$(H): JavaIncrementalCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodWrapperCompiler.$(O) JavaMethodWrapperCompiler.$(H): JavaMethodWrapperCompiler.st $(INCLUDE_TOP)\stx\libjava\Java.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)NoReflectionObject.$(O) NoReflectionObject.$(H): NoReflectionObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PersonSample.$(O) PersonSample.$(H): PersonSample.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/experiments/experiments.rc	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/experiments.rc	Sun Dec 16 21:05:45 2012 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Sat, 15 Dec 2012 22:23:35 GMT\0"
+      VALUE "ProductDate", "Sun, 16 Dec 2012 16:42:28 GMT\0"
     END
 
   END
--- a/experiments/libInit.cc	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/libInit.cc	Sun Dec 16 21:05:45 2012 +0100
@@ -29,7 +29,6 @@
 __BEGIN_PACKAGE2__("libstx_libjava_experiments", _libstx_libjava_experiments_Init, "stx:libjava/experiments");
 _JavaByteCodeInterpreter_Init(pass,__pRT__,snd);
 _JavaCompiler_Init(pass,__pRT__,snd);
-_JavaIncrementalCompiler_Init(pass,__pRT__,snd);
 _JavaMethodWrapperCompiler_Init(pass,__pRT__,snd);
 _NoReflectionObject_Init(pass,__pRT__,snd);
 _PersonSample_Init(pass,__pRT__,snd);
--- a/experiments/stx_libjava_experiments.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/experiments/stx_libjava_experiments.st	Sun Dec 16 21:05:45 2012 +0100
@@ -112,12 +112,8 @@
         (ClassReloadingTests autoload)
         JavaCompiler
         (JavaCompilerTests autoload)
-        JavaIncrementalCompiler
-        (JavaIncrementalCompilerTests autoload)
         (SingleClassReloadingTests autoload)
     )
-
-    "Modified: / 15-12-2012 / 17:55:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames
--- a/libjava.rc	Sun Dec 16 17:23:16 2012 +0100
+++ b/libjava.rc	Sun Dec 16 21:05:45 2012 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Sat, 15 Dec 2012 13:45:29 GMT\0"
+      VALUE "ProductDate", "Sun, 16 Dec 2012 16:43:29 GMT\0"
     END
 
   END
--- a/tools/JavaParserIITests.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/tools/JavaParserIITests.st	Sun Dec 16 21:05:45 2012 +0100
@@ -621,6 +621,19 @@
     "Created: / 16-03-2012 / 10:27:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+testClassDeclaration16
+    self should: [
+        self parse: '
+            void XXX
+            {  
+            } // trailing comment
+            '
+        rule: #compilationUnit
+    ] raise: Error.
+
+    "Created: / 16-12-2012 / 16:54:44 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
 testClassDeclaration2
 
         self parse: '
--- a/tools/JavaParserTests.st	Sun Dec 16 17:23:16 2012 +0100
+++ b/tools/JavaParserTests.st	Sun Dec 16 21:05:45 2012 +0100
@@ -279,6 +279,17 @@
 	'
 !
 
+testClassWithSyntaxError
+ "/   self should: [
+        ^ self assertParse: '
+    // this is one line comment
+        public void Object {
+    }'
+   "/ ] raise: Error.
+
+    "Created: / 16-12-2012 / 16:52:47 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
+!
+
 testEmptyAbstractClass
 	^ self assertParse: '
 		public abstract class Foo {}
@@ -6048,6 +6059,11 @@
 
 !JavaParserTests class methodsFor:'documentation'!
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
-    ^ '$Id$'
+    ^ '§Id§'
 ! !
--- a/tools/Make.proto	Sun Dec 16 17:23:16 2012 +0100
+++ b/tools/Make.proto	Sun Dec 16 21:05:45 2012 +0100
@@ -178,7 +178,7 @@
 $(OUTDIR)JavaMethodNode.$(O) JavaMethodNode.$(H): JavaMethodNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaParserII.$(O) JavaParserII.$(H): JavaParserII.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParserI.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaScanner.$(O) JavaScanner.$(H): JavaScanner.st $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaSyntaxHighlighter_Old.$(O) JavaSyntaxHighlighter_Old.$(H): JavaSyntaxHighlighter_Old.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNodeBuilder.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParser_Old.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(STCHDR)
+$(OUTDIR)JavaSyntaxHighlighter_Old.$(O) JavaSyntaxHighlighter_Old.$(H): JavaSyntaxHighlighter_Old.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParser_Old.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPCompositeParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPDelegateParser.$(H) $(INCLUDE_TOP)/stx/goodies/petitparser/PPParser.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNodeBuilder.$(H) $(STCHDR)
 $(OUTDIR)JavaTypeNode.$(O) JavaTypeNode.$(H): JavaTypeNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaArrayTypeNode.$(O) JavaArrayTypeNode.$(H): JavaArrayTypeNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaTypeNode.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaBooleanTypeNode.$(O) JavaBooleanTypeNode.$(H): JavaBooleanTypeNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaTypeNode.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/tools/bc.mak	Sun Dec 16 17:23:16 2012 +0100
+++ b/tools/bc.mak	Sun Dec 16 21:05:45 2012 +0100
@@ -103,7 +103,7 @@
 $(OUTDIR)JavaMethodNode.$(O) JavaMethodNode.$(H): JavaMethodNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaParserII.$(O) JavaParserII.$(H): JavaParserII.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParserI.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaScanner.$(O) JavaScanner.$(H): JavaScanner.st $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaSyntaxHighlighter_Old.$(O) JavaSyntaxHighlighter_Old.$(H): JavaSyntaxHighlighter_Old.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNodeBuilder.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParser_Old.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(STCHDR)
+$(OUTDIR)JavaSyntaxHighlighter_Old.$(O) JavaSyntaxHighlighter_Old.$(H): JavaSyntaxHighlighter_Old.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParser_Old.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPCompositeParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPDelegateParser.$(H) $(INCLUDE_TOP)\stx\goodies\petitparser\PPParser.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNodeBuilder.$(H) $(STCHDR)
 $(OUTDIR)JavaTypeNode.$(O) JavaTypeNode.$(H): JavaTypeNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaArrayTypeNode.$(O) JavaArrayTypeNode.$(H): JavaArrayTypeNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaTypeNode.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaBooleanTypeNode.$(O) JavaBooleanTypeNode.$(H): JavaBooleanTypeNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaTypeNode.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/tools/tools.rc	Sun Dec 16 17:23:16 2012 +0100
+++ b/tools/tools.rc	Sun Dec 16 21:05:45 2012 +0100
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Sun, 16 Dec 2012 09:31:24 GMT\0"
+      VALUE "ProductDate", "Sun, 16 Dec 2012 16:42:56 GMT\0"
     END
 
   END