JavaCompilerForSmalltalkExtensionsOnly.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 26 Apr 2015 21:07:30 +0100
changeset 3442 e59716e00703
parent 3324 a58245c0e83a
child 3741 e9a9a1384efa
permissions -rw-r--r--
Oops, fix for commit 48320b2d4: Use first element of binding to read bound value For workspace variables it does not matter much as both values are valueholders, however in inspector and for debugger, binding contains block with fixed number of arguments.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2941
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2941
diff changeset
     2
 COPYRIGHT (c) 1996-2015 by Claus Gittinger
2941
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2941
diff changeset
     6
 COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
2941
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 This software is furnished under a license and may be used
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 only in accordance with the terms of that license and with the
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 be provided or otherwise made available to, or used by, any
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 other person.  No title to or ownership of the software is
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 hereby transferred.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
     see the differences between this version and version stx:libjava
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
     as of 1.9.2010
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
Object subclass:#JavaCompilerForSmalltalkExtensionsOnly
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:''
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:'SynchronizationSemaphore'
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'Languages-Java-Support-Compiling'
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!JavaCompilerForSmalltalkExtensionsOnly class methodsFor:'documentation'!
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
copyright
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
"
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2941
diff changeset
    34
 COPYRIGHT (c) 1996-2015 by Claus Gittinger
2941
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
 New code and modifications done at SWING Research Group [1]:
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
3324
a58245c0e83a Updated copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2941
diff changeset
    38
 COPYRIGHT (c) 2010-2015 by Jan Vrany, Jan Kurs and Marcel Hlopko
2941
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
                            SWING Research Group, Czech Technical University in Prague
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
 This software is furnished under a license and may be used
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
 only in accordance with the terms of that license and with the
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
 inclusion of the above copyright notice.   This software may not
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
 be provided or otherwise made available to, or used by, any
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
 other person.  No title to or ownership of the software is
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
 hereby transferred.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 [1] Code written at SWING Research Group contains a signature
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
     of one of the above copright owners. For exact set of such code,
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
     see the differences between this version and version stx:libjava
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
     as of 1.9.2010
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
!
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
documentation
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    A simple compiler for Java classes that can only compile
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    Smalltalk extensions to Java classes. This compiler is used
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    when full JavaCompiler is not available (i,e., when stx:libjava/tools
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    is not loaded).
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
    [author:]
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
        Jan Vrany <jan.vrany@fit.cvut.cz>
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    [instance variables:]
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    [class variables:]
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    [see also:]
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
! !
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!JavaCompilerForSmalltalkExtensionsOnly class methodsFor:'compiler interface'!
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
compile:aString forClass:aClass inCategory:cat notifying:requestor
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
                 install:install skipIfSame:skipIfSame silent:silent
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    "HACK.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
     Problem:
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
     SmalltalkChunkFileReader always uses class's compiler to compile source. 
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
     However, when filing in Smalltalk extensions to Java classes, a Smalltalk 
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
     code is passed to me.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
     See ClassCategoryReader>>fileInFrom:notifying:passChunk:single:silent:
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
     Workaround:
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
     Detect such a situation and compile using Smalltalk compiler...bad, I know.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
     Better to move logic from Stream>>fileIn into SmalltalkChunkSourceFileReader.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
     "
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    (requestor isKindOf: SourceFileLoader) ifTrue:[
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
        ^Compiler compile:aString forClass:aClass inCategory:cat notifying:requestor
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
                 install:install skipIfSame:skipIfSame silent:silent
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    ].
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    self breakPoint:#jv.
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    self error: 'Not (yet) supported'
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "Created: / 07-09-2012 / 10:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
! !
c342efcd1bcb Oops, added missing class JavaCompilerForSmalltalkExtensionsOnly.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103