--- a/Java.st Fri Sep 20 00:10:48 2013 +0200
+++ b/Java.st Sun Sep 22 21:12:02 2013 +0200
@@ -1209,41 +1209,13 @@
!
removeClass:aJavaClass
- "/ remove it from myself
-
- |javaName sym cls p ns|
-
-"/ self breakPoint: #jv.
-"/ self breakPoint: #mh.
-
- javaName := aJavaClass fullName.
+ "Remove the class from the system, as well as all its subclasses
+ (or users of the interface, if class is interface)"
- sym := javaName asSymbolIfInterned.
- sym notNil ifTrue:[
- cls := JavaVM classForName: sym definedBy: aJavaClass classLoader.
- ].
- (cls notNil and:[cls == aJavaClass]) ifTrue:[
- self updateClassRefsFrom:aJavaClass to:nil.
- ].
- Smalltalk removeKey:('JAVA::' , javaName) asSymbol.
- Smalltalk removeKey:javaName asSymbol.
- Smalltalk removeKey:((javaName , '') copyReplaceAll:$/ with:$.) asSymbol.
+ JavaVM unloadClass: aJavaClass.
- "/ remove myself from the JAVA::-::-:: namespace
- "/ (which exists for convenient smalltalk access only)
-
- p := aJavaClass nameSpacePath.
- p knownAsSymbol ifTrue:[
- ns := Smalltalk at:p asSymbol.
- (ns notNil and:[ns isNameSpace]) ifTrue:[
- Smalltalk removeKey:(p , '::' , aJavaClass lastName) asSymbol
- ]
- ].
-
- JavaVM registry unregisterClass: aJavaClass.
-
- "Modified: / 17-04-2013 / 21:29:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-07-2013 / 19:48:40 / cg"
+ "Modified: / 19-10-1998 / 20:58:49 / cg"
+ "Modified (comment): / 14-09-2013 / 23:51:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
unresolvedClassRefFor:aClassName
@@ -1275,125 +1247,139 @@
!Java class methodsFor:'source management'!
-classSource:filename package:package in:dirOrZipFile
- |fn pn zar f |
+classSourceStreamFor: aClass
+ | jpackage dirName sourceFileName sourceFile loader codeBaseURL protocol codeBaseURLIdx src |
- fn := dirOrZipFile asFilename.
- pn := dirOrZipFile asString.
- fn isDirectory
- ifTrue:
- [ package notNil
- ifTrue:[ (f:= fn / package / filename) exists ifTrue:[ ^ f contents asString ]. ].
- (f := fn / filename) exists ifTrue:[ ^ f contents asString ]. ]
- ifFalse:
- [ ((pn last == $p and: [fn hasSuffix:'zip']) or:
- [(pn last == $r and: [fn hasSuffix:'jar'])])
- ifTrue:
- [ zar := SourceArchiveCache
- at: dirOrZipFile
- ifAbsentPut:[ZipArchive oldFileNamed:fn pathName].
- zar notNil
- ifTrue:
- [ package notNil
- ifTrue:[
- OperatingSystem fileSeparator ~~ $/ ifTrue: [
- f := (package copyReplaceAll: OperatingSystem fileSeparator with: $/) , '/' , filename
- ] ifFalse:[
- f := package , '/' , filename.
- ]]
- ifFalse:[ f := filename].
- (zar findMember: f) ifNotNil:
- [
- "Kludge because of broken ZipArchive"
- | cache |
- cache := Java cacheDirectory / Release name / 'src'.
- cache exists ifFalse:[cache recursiveMakeDirectory].
- (cache / f) exists ifTrue:[^(cache / f) contents asString].
- OperatingSystem
- executeCommand:('unzip "%1" "%2"' bindWith: fn asAbsoluteFilename asString
- with: f asString)
- inDirectory: cache asString.
- (f := cache / f) exists ifTrue:[^f contents asString]
- ].
- zar closeFile.
- ]]].
-
- ^ nil
-
- "
- Java classSource: 'Object.java' package:'java/lang' in:'/home/jv/Projects/JavaX/java-6-openjdk/src'
- Java classSource: 'Object.java' package:'java/lang' in:'/usr/lib/jvm/java-6-openjdk/src.zip'
-
- "
-
- "Modified: / 29-03-1998 / 21:46:40 / cg"
- "Created: / 30-11-2010 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 04-12-2012 / 00:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-classSourceOf:aClass
- |jpackage dirName sourceFileName sourceFile loader codeBaseURL protocol codeBaseURLIdx src |
-
- aClass isNil ifTrue:[
+ aClass isNil ifTrue: [
^ nil
].
+
"/ look at the cache"
- SourceCache at: aClass ifPresent: [:src|^src].
-
"/ maybe it was loaded by a java classLoader ...
- (loader := aClass classLoader) notNil ifTrue:[
- codeBaseURLIdx := loader class instVarOffsetOf:'codeBaseURL'.
- codeBaseURLIdx notNil ifTrue:[
- (codeBaseURL := loader instVarAt:codeBaseURLIdx) notNil ifTrue:[
- (protocol := codeBaseURL instVarNamed:'protocol') notNil ifTrue:[
- (Java as_ST_String:protocol) = 'file' ifTrue:[
- dirName := Java as_ST_String:(codeBaseURL instVarNamed:'file').
+
+ (loader := aClass classLoader) notNil ifTrue: [
+ codeBaseURLIdx := loader class instVarOffsetOf: 'codeBaseURL'.
+ codeBaseURLIdx notNil ifTrue: [
+ (codeBaseURL := loader instVarAt: codeBaseURLIdx) notNil ifTrue: [
+ (protocol := codeBaseURL instVarNamed: 'protocol') notNil ifTrue: [
+ (Java as_ST_String: protocol) = 'file' ifTrue: [
+ dirName := Java as_ST_String: (codeBaseURL instVarNamed: 'file').
dirName := dirName asFilename.
- dirName exists ifTrue:[
- aClass sourceFile notNil ifTrue:[
- sourceFile := sourceFileName := dirName construct:aClass sourceFile.
+ dirName exists ifTrue: [
+ aClass sourceFile notNil ifTrue: [
+ sourceFile := sourceFileName := dirName construct: aClass sourceFile.
]
]
]
]
]
].
+
"/ HACK HACK HACK: The eXpecco JImport plugin load the Java class and
"/ sets fake classloader - an instance of Expecco::JIClassLoaderPlaceholder
"/ which in turn references codelibrary in an instvar. If that's the case,
"/ ask that library for source
- loader class name == #'Expecco::JIClassLoaderPlaceholder' ifTrue:[
- ^ loader library classSourceOf: aClass name.
+
+ loader class name == #'Expecco::JIClassLoaderPlaceholder' ifTrue: [
+ ^ (loader library classSourceOf: aClass name) readStream.
]
].
-
+
"/ if that fails, look in standard places
-
- (sourceFile isNil or:[sourceFile exists not]) ifTrue:[
+
+ (sourceFile isNil or: [ sourceFile exists not ]) ifTrue: [
sourceFile := aClass sourceFile.
- sourceFile isNil ifTrue:[
+ sourceFile isNil ifTrue: [
"Hmm, hmm...just a guess"
sourceFile := (aClass lastName upTo: $$) , '.java'.
].
jpackage := aClass javaPackageAsDirname.
- self effectiveSourceDirectories do:[:dir|
- src := self classSource: sourceFile package: jpackage in: dir.
- src notNil ifTrue:[ SourceCache at: aClass put: src. ^ src]
+ self effectiveSourceDirectories do: [:dir |
+ src := self
+ classSourceStreamForFile: sourceFile
+ package: jpackage
+ in: dir.
+ src notNil ifTrue: [
+ ^ src
+ ]
]
].
-
- sourceFile isFilename ifFalse:[^nil].
+ sourceFile isFilename ifFalse: [
+ ^ nil
+ ].
src := sourceFile contentsOfEntireFile asString.
- SourceCache at: aClass put: src.
^ src
"
- Java classSourceOf: JAVA::java::lang::Object
- "
+ Java classSourceOf: JAVA::java::lang::Object"
"Modified: / 27-01-1999 / 20:40:30 / cg"
- "Modified: / 08-09-2013 / 10:38:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 12:48:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classSourceStreamForFile: filename package: jpackage in: dirOrZipFile
+ | fn pn zar f |
+
+ fn := dirOrZipFile asFilename.
+ pn := dirOrZipFile asString.
+ fn isDirectory ifTrue: [
+ jpackage notNil ifTrue: [
+ (f := fn / jpackage / filename) exists ifTrue: [
+ ^ f readStream
+ ].
+ ].
+ (f := fn / filename) exists ifTrue: [
+ ^ f readStream
+ ].
+ ] ifFalse: [
+ ((pn last == $p and: [ fn hasSuffix: 'zip' ])
+ or: [ (pn last == $r and: [ fn hasSuffix: 'jar' ]) ])
+ ifTrue: [
+ zar := SourceArchiveCache at: dirOrZipFile
+ ifAbsentPut: [ ZipArchive oldFileNamed: fn pathName ].
+ zar notNil ifTrue: [
+ jpackage notNil ifTrue: [
+ OperatingSystem fileSeparator ~~ $/ ifTrue: [
+ f := (jpackage copyReplaceAll: OperatingSystem fileSeparator with: $/)
+ , '/' , filename
+ ] ifFalse: [
+ f := jpackage , '/' , filename.
+ ]
+ ] ifFalse: [
+ f := filename
+ ].
+ (zar findMember: f) notNil ifTrue: [
+ | "Kludge because of broken ZipArchive" cache |
+
+ cache := Java cacheDirectory / Release name / 'src'.
+ cache exists ifFalse: [
+ cache recursiveMakeDirectory
+ ].
+ (cache / f) exists ifTrue: [
+ ^ (cache / f) readStream
+ ].
+ OperatingSystem
+ executeCommand: ('unzip "%1" "%2"' bindWith: fn asAbsoluteFilename asString
+ with: f asString)
+ inDirectory: cache asString.
+ (f := cache / f) exists ifTrue: [
+ ^ f readStream
+ ]
+ ].
+ zar closeFile.
+ ]
+ ]
+ ].
+ ^ nil
+
+ "
+ Java classSource: 'Object.java' package:'java/lang' in:'/home/jv/Projects/JavaX/java-6-openjdk/src'
+ Java classSource: 'Object.java' package:'java/lang' in:'/usr/lib/jvm/java-6-openjdk/src.zip'"
+
+ "Modified: / 29-03-1998 / 21:46:40 / cg"
+ "Created: / 30-11-2010 / 12:32:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 12:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
sourceDirectories
--- a/JavaClass.st Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaClass.st Sun Sep 22 21:12:02 2013 +0200
@@ -696,9 +696,10 @@
enclosingMethodAttr isNil ifTrue:[ ^ nil ].
enclosingMethodAttr second isNil ifTrue:[ ^ nil ].
enclosingClass := enclosingMethodAttr first resolve: false.
- enclosingClass compiledMethodAt: enclosingMethodAttr second selector
+ ^ enclosingClass compiledMethodAt: enclosingMethodAttr second selector
"Created: / 13-09-2013 / 01:28:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 22-09-2013 / 12:14:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
ensureHasAnnotations
@@ -876,9 +877,18 @@
!
source
- ^ sourceString notNil
- ifTrue: [ sourceString ]
- ifFalse:[ Java classSourceOf:self ]
+ | stream |
+ sourceString notNil ifTrue: [ ^ sourceString ].
+ ^ [
+ stream := self sourceStream.
+ stream notNil ifTrue:[
+ stream contents asString.
+ ] ifFalse:[
+ nil
+ ].
+ ] ensure:[
+ stream notNil ifTrue:[stream close]
+ ].
"
(Java at:'java.awt.Frame') source
@@ -887,13 +897,27 @@
"
"Modified: / 30-07-1997 / 14:31:01 / cg"
- "Modified: / 18-02-2012 / 19:10:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-09-2013 / 03:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
sourceFile
^ sourceFile
!
+sourceStream
+ ^ sourceString notNil
+ ifTrue:[ sourceString readStream ]
+ ifFalse:[Java classSourceStreamFor: self ]
+
+ "
+ (Java at:'java.awt.Frame') source
+ (Java at:'ArcTest') source
+ (Java at:'ArcCanvas') source
+ "
+
+ "Created: / 19-09-2013 / 12:41:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
sourceString
^sourceString
--- a/JavaClassReloader.st Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaClassReloader.st Sun Sep 22 21:12:02 2013 +0200
@@ -303,7 +303,7 @@
simply copy methods and other info from new class to old one.
References must be flushed anyway!!"
- | oldMethods newMethods problems |
+ | oldMethods newMethods |
oldMethods := oldClass methodDictionary.
newMethods := newClass methodDictionary copy.
@@ -329,18 +329,8 @@
"Flush all proxies, they mau refer to old static methods"
oldClass class setMethodDictionary: MethodDictionary new.
- "Also, transfer all problems of newClass to newClass so
- the highligher shows them..."
- JavaCompiler notNil ifTrue:[
- problems := JavaCompiler problems at: newClass ifAbsent:[nil].
- problems notNil ifTrue:[
- JavaCompiler problems removeKey: newClass.
- JavaCompiler problems at: oldClass put: problems.
- ]
- ].
-
"Created: / 16-12-2012 / 17:36:52 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 11-08-2013 / 13:54:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-09-2013 / 13:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaClassReloader::SingleClassReloader methodsFor:'reloading'!
--- a/JavaConstantPool.st Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaConstantPool.st Sun Sep 22 21:12:02 2013 +0200
@@ -78,7 +78,7 @@
invalidateForClass: internalJavaClassName
"Only alias, everybody calls invalidateForClass so why not me :)"
- ^self invalidateReferencesToClass: internalJavaClassName.
+ ^ self invalidateReferencesToClass: internalJavaClassName.
"Created: / 08-04-2011 / 16:52:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
!
@@ -152,24 +152,6 @@
"Created: / 13-05-2011 / 09:05:34 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
! !
-!JavaConstantPool methodsFor:'invalidation'!
-
-invalidateForClass: slashedJavaClassName
- "Invalidate all resolved references to given class.
- Returns true if at least one ref has been invalidated,
- false otherwise"
-
- | anyInvalidated |
- anyInvalidated := false.
- self do:[:ref|
- (ref notNil and:[ref isString not and:[ref isNumber not]]) ifTrue:[
- anyInvalidated := anyInvalidated | (ref invalidateForClass: slashedJavaClassName)].
- ].
- ^anyInvalidated
-
- "Created: / 08-04-2011 / 16:11:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
- "Modified: / 22-02-2012 / 20:53:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
!JavaConstantPool methodsFor:'printing & storing'!
--- a/JavaVM.st Fri Sep 20 00:10:48 2013 +0200
+++ b/JavaVM.st Sun Sep 22 21:12:02 2013 +0200
@@ -1717,13 +1717,15 @@
'libmanagement.so' "/ Management Beans - req'd by Tomcat
'libjpeg.so' 'liblcms.so' "/ Some UI stuff - req'd by Tomcat !!?!!
'libfontmanager.so' "/ req'd by java.text.Bidi
+ 'libj2pkcs11.so' "/ req'd by Smack and some crypto stuff
).
^ self.
].
OperatingSystem isMSWINDOWSlike ifTrue: [
SimulatedNativeLibs := #( 'awt.dll' 'net.dll' 'cmm.dll' 'zip.dll' 'nio.so'
- 'management.dll' "/ Management Beans - req'd by Tomcat
- 'fontmanager.dll' "/ req'd by java.text.Bidi
+ 'management.dll' "/ Management Beans - req'd by Tomcat
+ 'fontmanager.dll' "/ req'd by java.text.Bidi
+ 'j2pkcs11.dll' "/ req'd by Smack and some crypto stuff
).
^ self.
].
@@ -1735,7 +1737,7 @@
"Modified: / 27-01-1998 / 18:43:10 / cg"
"Modified: / 03-11-2011 / 19:00:39 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
"Modified: / 21-12-2011 / 23:03:35 / jv"
- "Modified: / 12-05-2012 / 12:52:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 22-09-2013 / 12:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
initializeSimulatedNativeMemory
@@ -2747,6 +2749,18 @@
"Created: / 14-09-2013 / 23:06:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 15-09-2013 / 00:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unloadClass: class
+ "Remove given `class` from the system, i.e., remove it from
+ the class registry as well as from system dictionary (Smalltalk).
+
+ Note, that this method also removes all dependent classes and
+ invalidates all references"
+
+ ClassRegistry unregisterClass: class.
+
+ "Created: / 14-09-2013 / 23:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaVM class methodsFor:'debugging support'!
--- a/Make.proto Fri Sep 20 00:10:48 2013 +0200
+++ b/Make.proto Sun Sep 22 21:12:02 2013 +0200
@@ -21,7 +21,7 @@
INCLUDE_TOP=$(TOP)/..
# subdirectories where targets are to be made:
-SUBDIRS= experiments tools
+SUBDIRS= examples experiments tools examples/jabber
# subdirectories where Makefiles are to be made:
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport/fdlibm -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview
+LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport/fdlibm -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libview
# if you need any additional defines for embedded C code,
@@ -144,6 +144,8 @@
cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
--- a/bc.mak Fri Sep 20 00:10:48 2013 +0200
+++ b/bc.mak Sun Sep 22 21:12:02 2013 +0200
@@ -34,7 +34,7 @@
-LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport\fdlibm -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview
+LOCALINCLUDES=-I$(ZLIB_DIR) -Isupport\fdlibm -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libview
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -54,6 +54,8 @@
pushd ..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
--- a/bmake.bat Fri Sep 20 00:10:48 2013 +0200
+++ b/bmake.bat Sun Sep 22 21:12:02 2013 +0200
@@ -10,6 +10,20 @@
make.exe -N -f bc.mak %DEFINES% %*
@echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call bmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call bmake %1 %2
+@cd ..
+
+@echo "***********************************"
@echo "Buildung stx/libjava/tools
@echo "***********************************"
@cd tools
--- a/experiments/JavaCompilerProblemRegistry.st Fri Sep 20 00:10:48 2013 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +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:#JavaCompilerProblemRegistry
- instanceVariableNames:'problems'
- classVariableNames:''
- poolDictionaries:''
- category:'Languages-Java-Support-Compiling'
-!
-
-JavaCompilerProblemRegistry class instanceVariableNames:'theOneAndOnlyInstance'
-
-"
- No other class instance variables are inherited by this class.
-"
-!
-
-!JavaCompilerProblemRegistry 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.
-
-"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'instance creation'!
-
-flush
- "flushes the cached singleton"
-
- theOneAndOnlyInstance := nil
-
- "
- self flushSingleton
- "
-
- "Created: / 06-08-2013 / 10:19:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-instance
- "returns a singleton"
-
- theOneAndOnlyInstance isNil ifTrue:[
- theOneAndOnlyInstance := self basicNew initialize.
- ].
- ^ theOneAndOnlyInstance.
-
- "Created: / 06-08-2013 / 10:19:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-new
- "returns a singleton"
-
- ^ self instance.
-
- "Modified: / 06-08-2013 / 10:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'accessing'!
-
-problemsFor: jclass
- ^ self instance problemsFor: jclass.
-
- "Created: / 06-08-2013 / 10:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsFor: jclass put: problems
- ^ self instance problemsFor: jclass put: problems
-
- "Created: / 06-08-2013 / 10:29:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry methodsFor:'accessing'!
-
-problemsFor: jclass
- ^ problems at: jclass ifAbsent:[nil]
-
- "Created: / 06-08-2013 / 10:24:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsFor: jclass put: problemsForClass
- problemsForClass isNil ifTrue:[
- problems removeKey: jclass ifAbsent:[nil].
- ] ifFalse:[
- problems at: jclass put: problemsForClass.
- ].
- self changed: #problems with: jclass.
-
- "Created: / 06-08-2013 / 10:25:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry methodsFor:'initialization'!
-
-initialize
- "Invoked when a new instance is created."
-
- problems := WeakIdentityDictionary new.
-
- "Modified: / 06-08-2013 / 10:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompilerProblemRegistry class methodsFor:'documentation'!
-
-version_CVS
- ^ '$Header: /cvs/stx/stx/libjava/experiments/JavaCompilerProblemRegistry.st,v 1.1 2013-09-06 00:44:04 vrany Exp $'
-! !
-
--- a/experiments/Make.proto Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/Make.proto Sun Sep 22 21:12:02 2013 +0200
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/goodies/sunit
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libjava -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libjava/tools
# if you need any additional defines for embedded C code,
@@ -134,12 +134,20 @@
# build all mandatory prerequisite packages (containing superclasses) for this package
prereq:
cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../goodies/petitparser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../tools && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
@@ -160,7 +168,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)JavaCompilerProblemRegistry.$(O) JavaCompilerProblemRegistry.$(H): JavaCompilerProblemRegistry.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)
@@ -168,7 +175,7 @@
$(OUTDIR)SetSample.$(O) SetSample.$(H): SetSample.st $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)stx_libjava_experiments.$(O) stx_libjava_experiments.$(H): stx_libjava_experiments.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaByteCodeSteppableInterpreter.$(O) JavaByteCodeSteppableInterpreter.$(H): JavaByteCodeSteppableInterpreter.st $(INCLUDE_TOP)/stx/libjava/experiments/JavaByteCodeInterpreter.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libjava/JavaClassContentRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstantPool.$(H) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libjava/JavaNameAndType2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaStringRef2.$(H) $(INCLUDE_TOP)/stx/libjava/Java.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassReloader.$(H) $(INCLUDE_TOP)/stx/libjava/JavaVM.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libjava/JavaClassContentRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaConstantPool.$(H) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libjava/JavaNameAndType2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaStringRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaClassReloader.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/experiments/Make.spec Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/Make.spec Sun Sep 22 21:12:02 2013 +0200
@@ -51,7 +51,6 @@
COMMON_CLASSES= \
JavaByteCodeInterpreter \
- JavaCompilerProblemRegistry \
JavaMethodWrapperCompiler \
NoReflectionObject \
PersonSample \
@@ -65,7 +64,6 @@
COMMON_OBJS= \
$(OUTDIR_SLASH)JavaByteCodeInterpreter.$(O) \
- $(OUTDIR_SLASH)JavaCompilerProblemRegistry.$(O) \
$(OUTDIR_SLASH)JavaMethodWrapperCompiler.$(O) \
$(OUTDIR_SLASH)NoReflectionObject.$(O) \
$(OUTDIR_SLASH)PersonSample.$(O) \
--- a/experiments/abbrev.stc Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/abbrev.stc Sun Sep 22 21:12:02 2013 +0200
@@ -5,7 +5,6 @@
JavaByteCodeInterpreter JavaByteCodeInterpreter stx:libjava/experiments 'Languages-Java-Bytecode' 0
JavaByteCodeInterpreterTests JavaByteCodeInterpreterTests stx:libjava/experiments 'Languages-Java-Tests' 1
JavaClassReloaderTests JavaClassReloaderTests stx:libjava/experiments 'Languages-Java-Tests-ClassReloading' 1
-JavaCompilerProblemRegistry JavaCompilerProblemRegistry stx:libjava/experiments 'Languages-Java-Support-Compiling' 1
JavaCompilerTests JavaCompilerTests stx:libjava/experiments 'Languages-Java-Tests-Compiling' 1
JavaMethodWrapperCompiler JavaMethodWrapperCompiler stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
NoReflectionObject NoReflectionObject stx:libjava/experiments 'Languages-Java-Experiments-Lookup' 0
--- a/experiments/bc.mak Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/bc.mak Sun Sep 22 21:12:02 2013 +0200
@@ -34,7 +34,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\goodies\sunit
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libjava -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libjava\tools
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -varPrefix=$(LIBNAME)
@@ -51,12 +51,20 @@
# build all mandatory prerequisite packages (containing superclasses) for this package
prereq:
pushd ..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\goodies\petitparser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\tools & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -84,7 +92,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)JavaCompilerProblemRegistry.$(O) JavaCompilerProblemRegistry.$(H): JavaCompilerProblemRegistry.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)
@@ -92,7 +99,7 @@
$(OUTDIR)SetSample.$(O) SetSample.$(H): SetSample.st $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)stx_libjava_experiments.$(O) stx_libjava_experiments.$(H): stx_libjava_experiments.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaByteCodeSteppableInterpreter.$(O) JavaByteCodeSteppableInterpreter.$(H): JavaByteCodeSteppableInterpreter.st $(INCLUDE_TOP)\stx\libjava\experiments\JavaByteCodeInterpreter.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libjava\JavaClassContentRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstantPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libjava\JavaNameAndType2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaStringRef2.$(H) $(INCLUDE_TOP)\stx\libjava\Java.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassReloader.$(H) $(INCLUDE_TOP)\stx\libjava\JavaVM.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libjava\JavaClassContentRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaConstantPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libjava\JavaNameAndType2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaStringRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaClassReloader.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/experiments/extensions.st Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/extensions.st Sun Sep 22 21:12:02 2013 +0200
@@ -1,17 +1,5 @@
"{ Package: 'stx:libjava/experiments' }"!
-!Java class methodsFor:'registering java classes'!
-
-removeClass:aJavaClass
- "Remove the class from the system, as well as all its subclasses
- (or users of the interface, if class is interface)"
-
- JavaVM unloadClass: aJavaClass.
-
- "Modified: / 19-10-1998 / 20:58:49 / cg"
- "Modified (comment): / 14-09-2013 / 23:51:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
!JavaClassContentRef2 methodsFor:'resolving'!
invalidateForClass: class
@@ -77,26 +65,6 @@
"Modified: / 22-02-2012 / 20:53:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!JavaConstantPool class methodsFor:'special'!
-
-invalidateForClass: internalJavaClassName
- "Only alias, everybody calls invalidateForClass so why not me :)"
-
- ^ self invalidateReferencesToClass: internalJavaClassName.
-
- "Created: / 08-04-2011 / 16:52:52 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
-!JavaConstantPool class methodsFor:'special'!
-
-invalidateReferencesToClass: internalJavaClassName
- "Go over all constant pools and call invalidateForClass on all
- references. (usable when given class was unloaded etc)"
- ConstantPools do: [:each | each invalidateForClass: internalJavaClassName].
-
- "Created: / 08-04-2011 / 16:09:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-! !
-
!JavaNameAndType2 methodsFor:'* As yet uncategorized *'!
invalidateForClass: aSymbol
@@ -135,20 +103,6 @@
"Modified: / 22-02-2012 / 20:52:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-!JavaVM class methodsFor:'class loading/unloading'!
-
-unloadClass: class
- "Remove given `class` from the system, i.e., remove it from
- the class registry as well as from system dictionary (Smalltalk).
-
- Note, that this method also removes all dependent classes and
- invalidates all references"
-
- ClassRegistry unregisterClass: class.
-
- "Created: / 14-09-2013 / 23:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
!stx_libjava_experiments class methodsFor:'documentation'!
extensionsVersion_HG
--- a/experiments/libInit.cc Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/libInit.cc Sun Sep 22 21:12:02 2013 +0200
@@ -28,7 +28,6 @@
OBJ snd; struct __vmData__ *__pRT__; {
__BEGIN_PACKAGE2__("libstx_libjava_experiments", _libstx_libjava_experiments_Init, "stx:libjava/experiments");
_JavaByteCodeInterpreter_Init(pass,__pRT__,snd);
-_JavaCompilerProblemRegistry_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 Fri Sep 20 00:10:48 2013 +0200
+++ b/experiments/stx_libjava_experiments.st Sun Sep 22 21:12:02 2013 +0200
@@ -186,7 +186,6 @@
JavaByteCodeInterpreter
(JavaByteCodeInterpreterTests autoload)
(JavaClassReloaderTests autoload)
- JavaCompilerProblemRegistry
(JavaCompilerTests autoload)
JavaMethodWrapperCompiler
NoReflectionObject
@@ -201,7 +200,7 @@
extensionMethodNames
"lists the extension methods which are to be included in the project.
- Entries are 2-element array literals, consisting of class-name and selector."
+ Entries are pairwise elements, consisting of class-name and selector."
^ #(
JavaClassContentRef2 invalidateForClass:
@@ -210,11 +209,7 @@
JavaNameAndType2 invalidateForClass:
JavaRef2 invalidateForClass:
JavaStringRef2 invalidateForClass:
- 'Java class' removeClass:
'JavaClassReloader class' unload:
- 'JavaConstantPool class' invalidateForClass:
- 'JavaConstantPool class' invalidateReferencesToClass:
- 'JavaVM class' unloadClass:
)
! !
--- a/lccmake.bat Fri Sep 20 00:10:48 2013 +0200
+++ b/lccmake.bat Sun Sep 22 21:12:02 2013 +0200
@@ -6,6 +6,20 @@
make.exe -N -f bc.mak -DUSELCC=1 %*
@echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call lccmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call lccmake %1 %2
+@cd ..
+
+@echo "***********************************"
@echo "Buildung stx/libjava/tools
@echo "***********************************"
@cd tools
--- a/libjava.rc Fri Sep 20 00:10:48 2013 +0200
+++ b/libjava.rc Sun Sep 22 21:12:02 2013 +0200
@@ -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", "Mon, 16 Sep 2013 12:58:24 GMT\0"
+ VALUE "ProductDate", "Fri, 20 Sep 2013 01:02:02 GMT\0"
END
END
--- a/mingwmake.bat Fri Sep 20 00:10:48 2013 +0200
+++ b/mingwmake.bat Sun Sep 22 21:12:02 2013 +0200
@@ -14,6 +14,20 @@
make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
@echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call mingwmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call mingwmake %1 %2
+@cd ..
+
+@echo "***********************************"
@echo "Buildung stx/libjava/tools
@echo "***********************************"
@cd tools
--- a/stx_libjava.st Fri Sep 20 00:10:48 2013 +0200
+++ b/stx_libjava.st Sun Sep 22 21:12:02 2013 +0200
@@ -160,6 +160,7 @@
(the browser has a menu function for that)"
^ #(
+ #'stx:goodies/sunit' "TestAsserter - superclass of JavaByteCodeProcessorTests "
#'stx:libbasic' "AbstractNumberVector - extended "
#'stx:libbasic2' "BitArray - extended "
#'stx:libbasic3' "WrappedMethod - extended "
@@ -176,7 +177,6 @@
exclude individual packages in the #excludedFromPreRequisites method."
^ #(
- #'stx:goodies/sunit' "TestSuite - referenced by JavaTestsLoader class>>buildSuiteFrom: "
#'stx:libcomp' "BlockNode - referenced by JavaNativeMethod>>numberOfArgs: "
#'stx:libhtml' "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
#'stx:libtool' "DebugView - referenced by Java class>>flushClasses "
@@ -193,8 +193,10 @@
for those, redefine requiredPrerequisites"
^ #(
+ #'stx:libjava/examples'
#'stx:libjava/experiments'
#'stx:libjava/tools'
+ #'stx:libjava/examples/jabber'
)
! !
--- a/tools/JavaCompiler.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaCompiler.st Sun Sep 22 21:12:02 2013 +0200
@@ -29,18 +29,11 @@
Object subclass:#JavaCompiler
instanceVariableNames:'className imports packageName sourceCode sourceDir requestor
classloader problems'
- classVariableNames:'Problems'
+ classVariableNames:'SynchronizationSemaphore'
poolDictionaries:''
category:'Languages-Java-Support-Compiling'
!
-JavaParserII subclass:#ClassSourceAnalyzer
- instanceVariableNames:'source package imports name terminator'
- classVariableNames:''
- poolDictionaries:''
- privateIn:JavaCompiler
-!
-
!JavaCompiler class methodsFor:'documentation'!
copyright
@@ -105,9 +98,9 @@
"/ please change as required (and remove this comment)
- Problems := WeakIdentityDictionary new.
+ SynchronizationSemaphore := Semaphore forMutualExclusion
- "Modified: / 15-04-2013 / 21:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 10:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaCompiler class methodsFor:'instance creation'!
@@ -117,26 +110,14 @@
"Created: / 15-12-2012 / 16:48:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 15-04-2013 / 20:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-newAnalyzer
- ^ClassSourceAnalyzer new
-
- "Created: / 15-12-2012 / 16:58:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaCompiler class methodsFor:'accessing'!
-problems
- ^Problems
+synchronizationSemaphore
+ ^ SynchronizationSemaphore
- "Created: / 15-04-2013 / 21:39:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-problemsForClass: aClass
- ^Problems at: aClass ifAbsent:[#()].
-
- "Created: / 15-04-2013 / 22:07:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 19-09-2013 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaCompiler class methodsFor:'compiler interface'!
@@ -296,8 +277,10 @@
]
].
- javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter') new:
+ JavaCompiler synchronized:[
+ javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter') new:
classloader.
+ ].
javac compile: source.
@@ -319,164 +302,7 @@
"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>"
- "Modified: / 16-09-2013 / 13:54:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer class methodsFor:'accessing'!
-
-ignoredNames
- ^super ignoredNames , self instVarNames
-
- "Created: / 15-12-2012 / 17:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 29-03-2013 / 23:08:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer 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: #imports / 08-12-2012 / 20:01:41 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: #imports / 09-12-2012 / 09:21:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
-!
-
-version_SVN
- ^ 'Id:: '
-! !
-
-!JavaCompiler::ClassSourceAnalyzer class methodsFor:'instance creation'!
-
-analyze: javaSourceCode
-
- ^ self new analyze: javaSourceCode.
-
- "Created: / 08-12-2012 / 18:47:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified (format): / 15-12-2012 / 16:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-new
- ^self newStartingAt: #compilationUnit
-
- "Created: / 15-12-2012 / 17:15:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'accessing'!
-
-className
- <resource: #obsolete>
- ^ name
-
- "Created: / 08-12-2012 / 18:53:53 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 15-12-2012 / 17:04:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-fullName
- ^package isNil
- ifTrue:[name]
- ifFalse:[package , '.' , name]
-
- "Created: / 29-03-2013 / 23:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-imports
- ^imports ? #()
-
- "Created: / 08-12-2012 / 20:01:41 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 09-12-2012 / 09:21:09 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 15-12-2012 / 17:20:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-name
- ^ name
-!
-
-package
- ^ package
-!
-
-packageName
- <resource: #obsolete>
- ^package
-
- "Created: / 08-12-2012 / 18:50:26 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 15-12-2012 / 17:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar'!
-
-importDeclaration
-"
- ^ ((self importKW) , (self staticKW) optional , qualifiedNameForImport
- , (self tokenFor:';')).
- "
- ^ super importDeclaration ==> [:nodes |
- imports isNil ifTrue:[imports := OrderedCollection new].
- imports add: (nodes at:3) value.
- ].
-
- "Created: / 15-12-2012 / 17:28:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-packageDeclaration
-
-"/ ^ (self packageKW) , qualifiedName , (self tokenFor:';')
- ^super packageDeclaration ==> [:nodes| package := nodes second ].
-
- "Created: / 15-12-2012 / 22:44:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar-classes'!
-
-typeNameIdentifier
- "
- ^identifier
- "
- ^super typeNameIdentifier ==> [:ident |
- name := ident.
- terminator value
- ]
-
- "Created: / 15-04-2013 / 21:24:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaCompiler::ClassSourceAnalyzer methodsFor:'parsing'!
-
-analyze: aString
- source := aString.
- terminator := [ ^ self ].
- self parse: source.
-
- "Created: / 08-12-2012 / 18:48:56 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
- "Modified: / 15-12-2012 / 17:04:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 10:57:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaCompiler class methodsFor:'documentation'!
--- a/tools/JavaLintHighlighter.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaLintHighlighter.st Sun Sep 22 21:12:02 2013 +0200
@@ -46,7 +46,10 @@
!
problems:aCollection
+ self reset.
problems := aCollection.
+
+ "Modified: / 20-09-2013 / 03:16:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaLintHighlighter methodsFor:'accessing-emphasis'!
@@ -168,14 +171,14 @@
!JavaLintHighlighter methodsFor:'formatting-private'!
format: text
- ^ (class isNil"not yet accepted" or:[class isJavaClass]) ifTrue:[
+ ^ problems notEmptyOrNil ifTrue:[
self format: text problems: problems
] ifFalse:[
text
]
"Created: / 04-08-2011 / 23:51:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-09-2013 / 10:04:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-09-2013 / 05:07:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
format: source problem: problem
--- a/tools/JavaLintService.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaLintService.st Sun Sep 22 21:12:02 2013 +0200
@@ -148,11 +148,11 @@
| lang |
((lang := codeView language) isNil or:[lang isJava not]) ifTrue:[ ^ self ].
- highlighter reset.
+"/ highlighter reset.
super sourceChanged:force.
"Created: / 18-02-2012 / 22:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-09-2013 / 09:41:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-09-2013 / 03:14:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaLintService methodsFor:'event handling'!
@@ -275,7 +275,10 @@
compiler := JavaCompiler new.
newProblems := compiler check: oldCode.
- rehighlight := newProblems notEmpty or:[ problems notEmpty ].
+ rehighlight := newProblems notEmptyOrNil or:[ problems notEmptyOrNil ].
+ rehighlight ifTrue:[
+ problems := newProblems.
+ ].
highlighter problem: problems ? #()
].
rehighlight ifTrue:[
@@ -292,7 +295,7 @@
]
"Created: / 24-01-2012 / 12:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 17-09-2013 / 00:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-09-2013 / 03:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
rehighlight: delayed
@@ -303,13 +306,13 @@
service := self service: Tools::CodeHighlightingService name
].
service notNil ifTrue:[
- highlighter reset.
+ "/highlighter reset.
highlighter problems: problems.
service sourceChanged: true.
]
"Created: / 27-01-2012 / 17:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-09-2013 / 13:33:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 20-09-2013 / 03:12:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
showInfoWindowForLine: lineNo
--- a/tools/JavaParseNode.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaParseNode.st Sun Sep 22 21:12:02 2013 +0200
@@ -104,12 +104,12 @@
| v |
v := self instVarAt: i.
- (v isKindOf: JavaParseNode) ifTrue:[
+ (v isKindOf: ParseNode) ifTrue:[
aBlock value: n value: v
] ifFalse:[
(v isSequenceable) ifTrue:[
v withIndexDo:[ :v2 :i2|
- (v2 isKindOf: JavaParseNode) ifTrue:[
+ (v2 isKindOf: ParseNode) ifTrue:[
aBlock value: (n, '[' , i2 printString , ']') value: v2.
]
]
@@ -117,7 +117,7 @@
]
]
- "Modified: / 25-08-2013 / 10:50:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 18:18:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaParseNode methodsFor:'evaluation'!
--- a/tools/JavaSourceDocument.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaSourceDocument.st Sun Sep 22 21:12:02 2013 +0200
@@ -88,17 +88,17 @@
^ javaClass
!
-javaClass:aJavaClass
+javaClass:aJavaClass
aJavaClass == javaClass ifTrue:[
^ self
].
- javaClass notNil ifTrue:[
- self error: 'Class already set!!'
- ].
+ self assert: javaClass isNil message: 'javaClass already set'.
+ self assert: aJavaClass isJavaClass message: 'aJavaClass not a Java class'.
+
javaClass := aJavaClass.
self initializeSourceTree.
- "Modified: / 06-09-2013 / 17:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-09-2013 / 04:42:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
sourceLineToOffset: lineNr
@@ -239,13 +239,16 @@
initializeSourceRefsInMethods
| enclosingMethod typeName typeNode |
+
enclosingMethod := javaClass enclosingMethod.
(enclosingMethod isNil and:[javaClass isAnonymous]) ifTrue:[
enclosingMethod := javaClass topEnclosingClass compiledMethodAt: #'<clinit>()V'.
].
enclosingMethod notNil ifTrue:[
javaClass methodDictionary keysAndValuesDo: [:selector :method |
- method setSource: (enclosingMethod source; getSource).
+ "/ ensure class is parsed...
+ enclosingMethod sourceDocument sourceTree.
+ method setSource: (enclosingMethod getSource).
].
^ self
].
@@ -341,7 +344,7 @@
]
"Created: / 07-09-2013 / 01:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-09-2013 / 11:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 22-09-2013 / 12:19:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
initializeSourceTree
@@ -357,8 +360,10 @@
source notNil ifTrue: [
unit := (Java classForName: 'stx.libjava.tools.Source') new.
unit setContents: source.
- parser := (Java classForName: 'stx.libjava.tools.parser.Parser')
- new.
+ JavaCompiler synchronized:[
+ parser := (Java classForName: 'stx.libjava.tools.parser.Parser')
+ new.
+ ].
sourceTree := parser parse: unit diet: true resolve: false.
sourceLineEnds := parser scanner getLineEnds.
self initializeSourceRefsInMethods.
@@ -372,7 +377,7 @@
task resume.
"Created: / 06-09-2013 / 17:50:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 13-09-2013 / 17:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 19-09-2013 / 10:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSourceDocument methodsFor:'printing & storing'!
--- a/tools/JavaSourceHighlighter.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/JavaSourceHighlighter.st Sun Sep 22 21:12:02 2013 +0200
@@ -96,6 +96,18 @@
!JavaSourceHighlighter class methodsFor:'formatting'!
+_formatClassDefinition:newCode line: ln number: lnr in:cls
+ ^self new formatClassDefinition:newCode line: ln number: lnr in:cls.
+
+ "Created: / 21-09-2013 / 04:22:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
+ ^ self new formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
+
+ "Created: / 21-09-2013 / 04:22:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
formatClass: javaClass
^self new formatClassDefinition: javaClass source in: javaClass
@@ -117,12 +129,6 @@
"Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-formatClassDefinition:newCode line: ln number: lnr in:cls
- ^self new formatClassDefinition:newCode line: ln number: lnr in:cls.
-
- "Created: / 04-08-2013 / 00:25:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
formatExpression:source in:class
^self new formatExpression:source in:class
@@ -156,32 +162,11 @@
^self new formatMethod:mth source:source in:class using: preferences elementsInto: elements
"Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
- ^ self new formatMethod:mthd source:newCode line: ln number: lnr in:cls using:syntaxPreferences
-
- "Created: / 04-08-2013 / 00:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSourceHighlighter methodsFor:'formatting'!
-formatClassDefinition:source in:class
-
- ^ self format: source kind: #start in: class
-
- "Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatClassDefinition:source in:class elementsInto: els
-
- sourceIndex := els.
- ^self formatClassDefinition:source in:class
-
- "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-formatClassDefinition:newCode line: line number: lnr in:cls
+_formatClassDefinition:newCode line: line number: lnr in:cls
| scanner |
line isEmptyOrNil ifTrue:[ ^ nil ].
@@ -199,8 +184,44 @@
].
^ sourceText
- "Created: / 04-08-2013 / 00:25:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified (format): / 05-09-2013 / 02:54:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 21-09-2013 / 04:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_formatMethod:mthd source:newCode line: line number: lnr in:cls using:syntaxPreferences
+ | scanner |
+
+ line isEmptyOrNil ifTrue:[ ^ nil ].
+
+ sourceText := line asText.
+ preferences := syntaxPreferences.
+ preferences isNil ifTrue:[
+ preferences := UserPreferences current.
+ ].
+ scanner := Scanner for: line asString.
+ scanner highlighter: self.
+ [
+ [ scanner nextToken ~~ #EOF ] whileTrue.
+ ] on: Error do:[
+
+ ].
+ ^ sourceText
+
+ "Created: / 21-09-2013 / 04:20:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+formatClassDefinition:source in:class
+
+ ^ self format: source kind: #start in: class
+
+ "Created: / 04-08-2011 / 23:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+formatClassDefinition:source in:class elementsInto: els
+
+ sourceIndex := els.
+ ^self formatClassDefinition:source in:class
+
+ "Created: / 04-08-2011 / 23:44:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
formatExpression:source in:class
@@ -315,7 +336,7 @@
preferences isNil ifTrue:[
preferences := UserPreferences current.
].
- cacheIt := kind == #start and: [class notNil].
+ cacheIt := kind == #start and: [class notNil and:[class isJavaClass]].
cacheIt ifTrue:[
document := JavaSourceDocument cachedDocumentFor: class theNonMetaclass.
document notNil ifTrue:[
@@ -350,7 +371,9 @@
] ifFalse:[
sourceUnit := (Java classForName:'stx.libjava.tools.Source') new.
sourceUnit setContents: source string.
- parser := (Java classForName:'stx.libjava.tools.text.Highlighter') new.
+ JavaCompiler synchronized:[
+ parser := (Java classForName:'stx.libjava.tools.text.Highlighter') new.
+ ].
parser setMarker: marker.
(sourceIndex notNil and:[sourceIndex isKindOf: SmallSense::ParseTreeIndex]) ifTrue:[
| indexer |
@@ -375,7 +398,7 @@
]
"Created: / 17-03-2012 / 14:02:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 17-09-2013 / 01:31:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-09-2013 / 04:46:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!JavaSourceHighlighter methodsFor:'queries'!
--- a/tools/Make.proto Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/Make.proto Sun Sep 22 21:12:02 2013 +0200
@@ -141,9 +141,10 @@
cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../goodies/petitparser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+ cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
- cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
- cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
@@ -167,6 +168,7 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
$(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintPopupWindow.$(O) JavaLintPopupWindow.$(H): JavaLintPopupWindow.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -192,7 +194,6 @@
$(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)JavaSourceFile.$(O) JavaSourceFile.$(H): JavaSourceFile.st $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(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)JavaMethodLikeDeclarationNode.$(O) JavaMethodLikeDeclarationNode.$(H): JavaMethodLikeDeclarationNode.st $(INCLUDE_TOP)/stx/libjava/tools/JavaDeclarationNode.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaParseNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
$(OUTDIR)JavaSourceHighlighter.$(O) JavaSourceHighlighter.$(H): JavaSourceHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScanner.$(H) $(INCLUDE_TOP)/stx/libjava/tools/JavaScannerBase.$(H) $(STCHDR)
--- a/tools/Make.spec Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/Make.spec Sun Sep 22 21:12:02 2013 +0200
@@ -52,6 +52,7 @@
COMMON_CLASSES= \
JavaCodeBundleEditor \
JavaCodeLibraryEditor \
+ JavaCompiler \
JavaLintAnnotation \
JavaLintHighlighter \
JavaLintPopupWindow \
@@ -77,7 +78,6 @@
JavaParserII \
JavaScanner \
JavaSourceFile \
- JavaCompiler \
JavaMethodLikeDeclarationNode \
JavaParser \
JavaSourceHighlighter \
@@ -96,6 +96,7 @@
COMMON_OBJS= \
$(OUTDIR_SLASH)JavaCodeBundleEditor.$(O) \
$(OUTDIR_SLASH)JavaCodeLibraryEditor.$(O) \
+ $(OUTDIR_SLASH)JavaCompiler.$(O) \
$(OUTDIR_SLASH)JavaLintAnnotation.$(O) \
$(OUTDIR_SLASH)JavaLintHighlighter.$(O) \
$(OUTDIR_SLASH)JavaLintPopupWindow.$(O) \
@@ -121,7 +122,6 @@
$(OUTDIR_SLASH)JavaParserII.$(O) \
$(OUTDIR_SLASH)JavaScanner.$(O) \
$(OUTDIR_SLASH)JavaSourceFile.$(O) \
- $(OUTDIR_SLASH)JavaCompiler.$(O) \
$(OUTDIR_SLASH)JavaMethodLikeDeclarationNode.$(O) \
$(OUTDIR_SLASH)JavaParser.$(O) \
$(OUTDIR_SLASH)JavaSourceHighlighter.$(O) \
--- a/tools/abbrev.stc Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/abbrev.stc Sun Sep 22 21:12:02 2013 +0200
@@ -3,6 +3,7 @@
# it provides information about a classes filename, category and especially namespace.
JavaCodeBundleEditor JavaCodeBundleEditor stx:libjava/tools 'Languages-Java-Tools' 1
JavaCodeLibraryEditor JavaCodeLibraryEditor stx:libjava/tools 'Languages-Java-Tools' 1
+JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
JavaLintAnnotation JavaLintAnnotation stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
JavaLintHighlighter JavaLintHighlighter stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 0
JavaLintPopupWindow JavaLintPopupWindow stx:libjava/tools 'Languages-Java-Tools-Editor-Lint' 1
@@ -34,7 +35,6 @@
JavaParserII JavaParserII stx:libjava/tools 'Languages-Java-Parser' 0
JavaScanner JavaScanner stx:libjava/tools 'Languages-Java-Parser' 3
JavaSourceFile JavaSourceFile stx:libjava/tools 'Languages-Java-Parser-AST' 0
-JavaCompiler JavaCompiler stx:libjava/tools 'Languages-Java-Support-Compiling' 0
JavaMethodLikeDeclarationNode JavaMethodLikeDeclarationNode stx:libjava/tools 'Languages-Java-Parser-AST' 0
JavaParser JavaParser stx:libjava/tools 'Languages-Java-Parser' 0
JavaSourceHighlighter JavaSourceHighlighter stx:libjava/tools 'Languages-Java-Tools-Source' 0
--- a/tools/bc.mak Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/bc.mak Sun Sep 22 21:12:02 2013 +0200
@@ -58,9 +58,10 @@
pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\goodies\petitparser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+ pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
- pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
- pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
@@ -91,6 +92,7 @@
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
$(OUTDIR)JavaCodeBundleEditor.$(O) JavaCodeBundleEditor.$(H): JavaCodeBundleEditor.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
$(OUTDIR)JavaCodeLibraryEditor.$(O) JavaCodeLibraryEditor.$(H): JavaCodeLibraryEditor.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaCompiler.$(O) JavaCompiler.$(H): JavaCompiler.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintAnnotation.$(O) JavaLintAnnotation.$(H): JavaLintAnnotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintHighlighter.$(O) JavaLintHighlighter.$(H): JavaLintHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaLintPopupWindow.$(O) JavaLintPopupWindow.$(H): JavaLintPopupWindow.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -116,7 +118,6 @@
$(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)JavaSourceFile.$(O) JavaSourceFile.$(H): JavaSourceFile.st $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(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)JavaMethodLikeDeclarationNode.$(O) JavaMethodLikeDeclarationNode.$(H): JavaMethodLikeDeclarationNode.st $(INCLUDE_TOP)\stx\libjava\tools\JavaDeclarationNode.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaParseNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaParser.$(O) JavaParser.$(H): JavaParser.st $(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
$(OUTDIR)JavaSourceHighlighter.$(O) JavaSourceHighlighter.$(H): JavaSourceHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScanner.$(H) $(INCLUDE_TOP)\stx\libjava\tools\JavaScannerBase.$(H) $(STCHDR)
--- a/tools/libInit.cc Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/libInit.cc Sun Sep 22 21:12:02 2013 +0200
@@ -29,6 +29,7 @@
__BEGIN_PACKAGE2__("libstx_libjava_tools", _libstx_libjava_tools_Init, "stx:libjava/tools");
_JavaCodeBundleEditor_Init(pass,__pRT__,snd);
_JavaCodeLibraryEditor_Init(pass,__pRT__,snd);
+_JavaCompiler_Init(pass,__pRT__,snd);
_JavaLintAnnotation_Init(pass,__pRT__,snd);
_JavaLintHighlighter_Init(pass,__pRT__,snd);
_JavaLintPopupWindow_Init(pass,__pRT__,snd);
@@ -54,7 +55,6 @@
_JavaParserII_Init(pass,__pRT__,snd);
_JavaScanner_Init(pass,__pRT__,snd);
_JavaSourceFile_Init(pass,__pRT__,snd);
-_JavaCompiler_Init(pass,__pRT__,snd);
_JavaMethodLikeDeclarationNode_Init(pass,__pRT__,snd);
_JavaParser_Init(pass,__pRT__,snd);
_JavaSourceHighlighter_Init(pass,__pRT__,snd);
--- a/tools/stx_libjava_tools.st Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/stx_libjava_tools.st Sun Sep 22 21:12:02 2013 +0200
@@ -27,7 +27,7 @@
(the browser has a menu function for that)"
^ #(
- #'stx:goodies/petitparser' "PPCompositeParser - superclass of JavaCompiler::ClassSourceAnalyzer "
+ #'stx:goodies/petitparser' "PPCompositeParser - superclass of JavaParser "
#'stx:libbasic' "Autoload - superclass of JavaParserIITests "
#'stx:libcomp' "ParseNode - superclass of JavaAnnotationDeclarationNode "
#'stx:libjava' "JavaObject - extended "
@@ -146,6 +146,7 @@
"<className> or (<className> attributes...) in load order"
JavaCodeBundleEditor
JavaCodeLibraryEditor
+ JavaCompiler
JavaLintAnnotation
JavaLintHighlighter
JavaLintPopupWindow
@@ -177,7 +178,6 @@
JavaParserII
JavaScanner
JavaSourceFile
- JavaCompiler
JavaMethodLikeDeclarationNode
JavaParser
JavaSourceHighlighter
--- a/tools/tools.rc Fri Sep 20 00:10:48 2013 +0200
+++ b/tools/tools.rc Sun Sep 22 21:12:02 2013 +0200
@@ -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", "Tue, 17 Sep 2013 10:11:48 GMT\0"
+ VALUE "ProductDate", "Sat, 21 Sep 2013 04:20:50 GMT\0"
END
END
--- a/vcmake.bat Fri Sep 20 00:10:48 2013 +0200
+++ b/vcmake.bat Sun Sep 22 21:12:02 2013 +0200
@@ -18,6 +18,20 @@
@echo "***********************************"
+@echo "Buildung stx/libjava/examples/jabber
+@echo "***********************************"
+@cd examples\jabber
+@call vcmake %1 %2
+@cd ..\..
+
+@echo "***********************************"
+@echo "Buildung stx/libjava/examples
+@echo "***********************************"
+@cd examples
+@call vcmake %1 %2
+@cd ..
+
+@echo "***********************************"
@echo "Buildung stx/libjava/tools
@echo "***********************************"
@cd tools