tools/JavaCompiler.st
author Claus Gittinger <cg@exept.de>
Tue, 28 Aug 2018 16:14:10 +0200
branchcvs_MAIN
changeset 3831 18ebe0c2c00f
parent 3724 8184529b4866
permissions -rw-r--r--
care for unsupported release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
     3
                         SWING Research Group, Czech Technical University
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
                         in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 Permission is hereby granted, free of charge, to any person
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 obtaining a copy of this software and associated documentation
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 files (the 'Software'), to deal in the Software without
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 restriction, including without limitation the rights to use,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 copy, modify, merge, publish, distribute, sublicense, and/or sell
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 copies of the Software, and to permit persons to whom the
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 Software is furnished to do so, subject to the following
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 conditions:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 The above copyright notice and this permission notice shall be
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 included in all copies or substantial portions of the Software.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
 OTHER DEALINGS IN THE SOFTWARE.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
2729
ac412f6ea6d4 More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2728
diff changeset
    27
"{ Package: 'stx:libjava/tools' }"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
3723
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
    29
"{ NameSpace: Smalltalk }"
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
    30
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
Object subclass:#JavaCompiler
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
    32
	instanceVariableNames:'className imports packageName sourceCode sourceDir requestor
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
    33
		classloader problems'
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
    34
	classVariableNames:'SynchronizationLock'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
	category:'Languages-Java-Support-Compiling'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!JavaCompiler class methodsFor:'documentation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
copyright
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
    44
                         SWING Research Group, Czech Technical University
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
                         in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
 Permission is hereby granted, free of charge, to any person
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 obtaining a copy of this software and associated documentation
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
 files (the 'Software'), to deal in the Software without
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
 restriction, including without limitation the rights to use,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
 copy, modify, merge, publish, distribute, sublicense, and/or sell
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
 copies of the Software, and to permit persons to whom the
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
 Software is furnished to do so, subject to the following
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
 conditions:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
 The above copyright notice and this permission notice shall be
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
 included in all copies or substantial portions of the Software.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
 OTHER DEALINGS IN THE SOFTWARE.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
documentation
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
"
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
    73
    An facade to Java compiler to compile Java classed from
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    source (given as string).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
    76
    Internally, it uses ECJ. See stx.libjava.compiler.ecj.CompilerAdapter.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    [author:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        Jan Vrany <jan.vrany@fit.cvut.cz>
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
        Marcel Hlopko <marcel.hlopko@fit.cvut.cz>
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    [instance variables:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    [class variables:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    [see also:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
history
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    "Created: #dotJavaPathname / 13-12-2012 / 00:02:03 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
    96
!JavaCompiler class methodsFor:'initialization'!
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
    97
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
    98
initialize
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
    99
    "Invoked at system start or when the class is dynamically loaded."
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   100
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   101
    "/ please change as required (and remove this comment)
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   102
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   103
    SynchronizationLock := RecursionLock new.
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   104
2738
a633a2e8e67e Make sure eclipse Parser is initialized before actually start parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   105
    "Modified: / 19-09-2013 / 10:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   106
! !
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   107
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
!JavaCompiler class methodsFor:'instance creation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
new
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   111
    ^self basicNew initialize
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    "Created: / 15-12-2012 / 16:48:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   114
    "Modified: / 15-04-2013 / 20:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   117
!JavaCompiler class methodsFor:'accessing'!
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   118
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   119
SynchronizationLock
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   120
    ^ SynchronizationLock
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   121
2738
a633a2e8e67e Make sure eclipse Parser is initialized before actually start parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   122
    "Created: / 19-09-2013 / 10:55:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   123
! !
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   124
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   125
!JavaCompiler class methodsFor:'compiler interface'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   126
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   127
compile: source
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   128
    "Compiles a new Groovy class given the source code"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   129
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   130
    ^self new compile: source.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   131
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   132
    "Created: / 27-02-2012 / 23:27:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   133
!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   134
2648
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   135
compile:source forClass: class inCategory:cat notifying: requestor
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   136
    ^ self compile:source forClass: class inCategory:cat notifying: requestor install: true.
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   137
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   138
    "Created: / 08-08-2013 / 23:48:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   139
!
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   140
2729
ac412f6ea6d4 More support for method's source display. Not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2728
diff changeset
   141
compile: source forClass: class inCategory: cat notifying: requestor install: doInstall
3723
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
   142
    "We always compile whole classes"
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   143
    ^self compile: source register: true notifying: requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   144
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   145
    "Created: / 21-02-2012 / 11:10:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   146
    "Modified: / 03-04-2013 / 00:11:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3723
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
   147
    "Modified (comment): / 07-06-2017 / 18:12:33 / mawalch"
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   148
!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   149
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   150
compile:aString forClass:aClass inCategory:cat notifying:requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   151
                 install:install skipIfSame:skipIfSame silent:silent
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   153
    "HACK.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   154
     Problem:
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   155
     SmalltalkChunkFileReader always uses class's compiler to compile source.
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   156
     However, when filing in Smalltalk extensions to Java classes, a Smalltalk
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   157
     code is passed to me.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   158
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   159
     See ClassCategoryReader>>fileInFrom:notifying:passChunk:single:silent:
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   160
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   161
     Workaround:
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   162
     Detect such a situation and compile using Smalltalk compiler...bad, I know.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   163
     Better to move logic from Stream>>fileIn into SmalltalkChunkSourceFileReader.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   164
     "
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   165
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   166
    (requestor isKindOf: SourceFileLoader) ifTrue:[
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   167
        ^Compiler compile:aString forClass:aClass inCategory:cat notifying:requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   168
                 install:install skipIfSame:skipIfSame silent:silent
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   169
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   170
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   171
    self breakPoint:#jv.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   172
    self error: 'Not (yet) supported'
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   173
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   174
    "Created: / 07-09-2012 / 10:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   175
!
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   177
compile: source register: register notifying: requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   178
    "Called when a class is accepted"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   179
    | classes |
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   181
    classes := self new
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   182
                requestor: requestor;
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   183
                compile: source.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   184
    register ifTrue:[
2643
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   185
        JavaVM registry registerClasses: classes andWait: true.
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   186
        "/ Register class may eventually reload a class. When only methods are changed,
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   187
        "/ reloader only updates method dictionary and constant pools and the new class
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   188
        "/ is immediately thrown away. Thus, refetch classes...
2862
7bd41088bd64 Fix in JavaCompiler>>#compile:register:notifying: (send #binaryName instead of #name)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2859
diff changeset
   189
        classes := classes collect:[:cls|JavaVM registry classNamed: cls binaryName loader: cls classLoader].
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   190
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   191
    ^classes first.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   192
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   193
    "Created: / 03-04-2013 / 00:10:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2862
7bd41088bd64 Fix in JavaCompiler>>#compile:register:notifying: (send #binaryName instead of #name)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2859
diff changeset
   194
    "Modified: / 15-10-2013 / 17:57:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   195
!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   196
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   197
evaluate: source notifying: requestor compile: doCompile
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   198
    "Called when a class is accepted"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   199
    ^self compile: source register: true notifying: requestor
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   201
    "Created: / 04-04-2012 / 10:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   202
    "Modified: / 03-04-2013 / 00:11:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2859
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   203
!
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   204
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   205
recompile: aJavaClass
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   206
    "Recompiles given Java class.
2859
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   207
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   208
     Raises an error if no source is available for that class"
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   209
2871
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   210
    | source recompiledClass |
2859
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   211
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   212
    source := aJavaClass source.
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   213
    source isNil ifTrue:[
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   214
        self error:'No source available, cannot recompile ', aJavaClass binaryName.
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   215
    ].
2871
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   216
    JavaClassReader classLoaderQuerySignal answer: aJavaClass classLoader do:[
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   217
        recompiledClass := self compile: source register: true notifying: nil
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   218
    ].
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   219
    ^ recompiledClass
2859
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   220
af4e7f1dd33e Implemented JavaClassReloader>>#requestReload & #requestRecompile (part 3)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2855
diff changeset
   221
    "Created: / 15-10-2013 / 00:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2871
948160ac3435 Fix in JavaCompiler>>#recompile: when recompiling, use class's original class loader.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2862
diff changeset
   222
    "Modified: / 17-10-2013 / 02:14:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2872
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   223
!
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   224
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   225
recompileErroneousClassesReferringTo: aJavaClass
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   226
    "Recompiles all classes with compilation errors/unresolved classes that refer to given Java class.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   227
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   228
     Classes with no source are silently ignored"
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   229
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   230
    self recompileErroneousClassesReferringTo: aJavaClass ignoring: nil.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   231
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   232
    "Created: / 17-10-2013 / 02:30:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   233
    "Modified: / 17-10-2013 / 09:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   234
!
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   235
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   236
recompileErroneousClassesReferringTo: aJavaClass ignoring: classToIgnore
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   237
    "Recompiles all classes with compilation errors/unresolved classes that refer to given Java class.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   238
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   239
     Classes with no source are silently ignored"
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   240
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   241
    JavaVM booted ifFalse:[ ^ self ].
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   242
    JavaVM registry classes do:[:each |
2942
c39cbf09ea3d Fixes for Java reflection on Smalltalk classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2872
diff changeset
   243
        (each isJavaClass and:[(each binaryName ~= 'stx/libjava/tools/compiler/CompileError') and:[each ~~ classToIgnore]]) ifTrue:[
2872
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   244
            (each constantPool contains: [:entry | entry isJavaClassRef and:[entry name = 'stx/libjava/tools/compiler/CompileError']]) ifTrue:[
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   245
                | source |
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   246
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   247
                source := each source.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   248
                (source notNil and:[source includesSubString: aJavaClass lastName]) ifTrue:[
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   249
                    JavaClassReloader requestRecompile: each.
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   250
                ]
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   251
            ]
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   252
        ].
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   253
    ].
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   254
3ed529d88338 Recompilation fixed (avoid endless recursion)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2871
diff changeset
   255
    "Created: / 17-10-2013 / 09:51:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2942
c39cbf09ea3d Fixes for Java reflection on Smalltalk classes.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2872
diff changeset
   256
    "Modified: / 20-11-2013 / 16:08:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   257
! !
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   258
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   259
!JavaCompiler methodsFor:'accessing'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   260
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   261
problems
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   262
    ^ problems
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   263
!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   264
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   265
requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   266
    ^ requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   267
!
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   269
requestor:anObject
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   270
    requestor := anObject.
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   271
! !
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   272
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   273
!JavaCompiler methodsFor:'checking'!
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   274
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   275
check:source
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   276
    "Dry-compile a java class in given source code (passed as String).
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   277
     Return a list of compiler problems. **DOES** not actually produce any
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   278
     bytecode.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   279
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   280
     Upon error, throws an exception"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   281
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   282
    | javac |
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   283
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   284
    classloader isNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   285
        classloader := JavaClassReader classLoaderQuerySignal query.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   286
        classloader isNil ifTrue:[
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   287
            classloader := JavaVM systemClassLoader.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   288
        ]
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   289
    ].
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   290
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   291
    javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter') new:
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   292
               classloader.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   293
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   294
    javac compile: source generate: false.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   295
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   296
    problems := javac getResult getProblems asNilIfEmpty.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   297
    ^ problems.
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   298
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   299
    "Created: / 16-09-2013 / 09:50:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   300
! !
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   301
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   302
!JavaCompiler methodsFor:'compiler interface'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   303
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   304
compile:source in: class notifying: requestor ifFail: block
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   305
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   306
    requestor class == SourceFileLoader ifTrue:[
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   307
        ^Compiler compile:source in: class notifying: requestor ifFail: block
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   308
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   309
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   310
    self error:'Not yet supported'.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   311
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   312
    "Created: / 04-09-2012 / 23:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
!JavaCompiler methodsFor:'compiling'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
compile:source
3724
8184529b4866 #DOCUMENTATION by mawalch
mawalch
parents: 3723
diff changeset
   318
    "Compiles a Java class in given source code (passed as String).
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   319
     Return an array of JavaClass which are not yet registered in Java
3724
8184529b4866 #DOCUMENTATION by mawalch
mawalch
parents: 3723
diff changeset
   320
     class registry nor initialized.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
     To make it accessible for Java code, caller must register returned
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
     classes himself.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
     Upon error, throws an exception"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
2734
f56049613ff3 Initial support for live code checker / lint.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2732
diff changeset
   328
    | javac classfiles classes |
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   329
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   330
    classloader isNil ifTrue:[
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   331
        classloader := JavaClassReader classLoaderQuerySignal query.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   332
        classloader isNil ifTrue:[
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   333
            classloader := JavaVM systemClassLoader.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   334
        ]
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   335
    ].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   336
3085
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   337
    JavaCompiler synchronized:[
78e1d19eb584 Fixed JavaCompiler>>synchronizationSemaphore.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2942
diff changeset
   338
        javac := (JavaVM classForName:'stx.libjava.tools.compiler.CompilerAdapter' definedBy: JavaVM systemClassLoader) new:
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   339
               classloader.
2738
a633a2e8e67e Make sure eclipse Parser is initialized before actually start parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2734
diff changeset
   340
    ].
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   341
2855
cfd4ec1ffa22 Reverted back Marcel's change in JavaCompiler: pass plain Smalltalk string.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2826
diff changeset
   342
    javac compile: source.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   344
    "javac getResult hasErrors"
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   345
    javac getClassFiles size == 0 ifTrue:[
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   346
        ^self error:'Compilation failed - nothing compiled'
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   347
    ].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   348
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   349
    classfiles := javac getClassFiles.
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   350
    classes := classfiles collect:[:each|
2578
fc6186a4961f Performance optimization: rewrote 'JavaVM classNamed:' to 'JavaVM classNamed:...definedBy:...'.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2515
diff changeset
   351
        (JavaClassReader readStream: each getBytes readStream loader: classloader)
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   352
            classLoader: classloader;
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   353
            setSource: source;
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   354
            yourself].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   355
2645
b7a540a27521 Java compiler problem highlighting improved.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2643
diff changeset
   356
    problems := javac getResult getProblems asNilIfEmpty.
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   357
    ^classes.
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   358
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   359
    "Created: / 15-12-2012 / 23:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2826
a31c3f2902d7 jv please revide, I probably broke something and this only fixes a symptom.
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 2738
diff changeset
   360
    "Modified: / 13-10-2013 / 12:27:10 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
3173
26dd7e06c4bb Removed classFileBytes from JavaClass.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3085
diff changeset
   361
    "Modified: / 24-07-2014 / 21:06:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3724
8184529b4866 #DOCUMENTATION by mawalch
mawalch
parents: 3723
diff changeset
   362
    "Modified (comment): / 08-06-2017 / 14:03:51 / mawalch"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
!JavaCompiler class methodsFor:'documentation'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
version_CVS
3723
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
   368
    ^ '$Header$'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
version_HG
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    ^ '$Changeset: <not expanded> $'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
version_SVN
3723
5c4a0207e549 #DOCUMENTATION by mawalch
mawalch
parents: 3412
diff changeset
   377
    ^ '$Id$'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   380
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   381
JavaCompiler initialize!