Merge commit.
--- 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