experiments/JavaCompiler.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 09 Aug 2013 01:22:51 +0100
branchdevelopment
changeset 2648 f871848ecfa8
parent 2645 b7a540a27521
child 2711 a00302fe5083
child 2728 658220e93dc9
permissions -rw-r--r--
Fixes in syntax highlighting and support for accepting code in the debugger.
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,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
                         SWING Research Group, Czech Technical University 
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
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
"{ Package: 'stx:libjava/experiments' }"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
Object subclass:#JavaCompiler
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
    30
	instanceVariableNames:'analyzer className imports packageName sourceCode sourceDir
2481
7281d4922170 Pass a class loader to ECJ's CompilerAdapter.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2479
diff changeset
    31
		requestor classloader'
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
    32
	classVariableNames:'Problems'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
	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
    35
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
JavaParserII subclass:#ClassSourceAnalyzer
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
	instanceVariableNames:'source package imports name terminator'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
	classVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
	privateIn:JavaCompiler
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
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
!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
    45
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
copyright
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
                         SWING Research Group, Czech Technical University 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
                         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
    51
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
 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
    53
 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
    54
 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
    55
 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
    56
 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
    57
 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
    58
 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
    59
 conditions:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
 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
    62
 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
    63
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
 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
    65
 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
    66
 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
    67
 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
    68
 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
    69
 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
    70
 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
    71
 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
    72
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
documentation
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
"
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
    78
    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
    79
    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
    80
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
    81
    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
    82
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    [author:]
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
        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
    85
        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
    86
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    [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
    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
    [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
    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
    [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
    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
"
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
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
history
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "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
    99
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   101
!JavaCompiler class methodsFor:'initialization'!
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   102
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   103
initialize
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   104
    "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
   105
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   106
    "/ please change as required (and remove this comment)
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   107
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   108
    Problems := WeakIdentityDictionary new.
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   109
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   110
    "Modified: / 15-04-2013 / 21:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   111
! !
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   112
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
!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
   114
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
new
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   116
    ^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
   117
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    "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
   119
    "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
   120
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
newAnalyzer
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
    ^ClassSourceAnalyzer new
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    "Created: / 15-12-2012 / 16:58:46 / 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
   126
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   128
!JavaCompiler class methodsFor:'accessing'!
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   129
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   130
problems
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   131
    ^Problems
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   132
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   133
    "Created: / 15-04-2013 / 21:39:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   134
!
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   135
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   136
problemsForClass: aClass
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   137
    ^Problems at: aClass ifAbsent:[#()].
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   138
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   139
    "Created: / 15-04-2013 / 22:07:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   140
! !
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   141
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   142
!JavaCompiler class methodsFor:'compiler interface'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   143
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   144
compile: source
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   145
    "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
   146
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   147
    ^self new compile: source.
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
    "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
   150
!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   151
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
   152
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
   153
    ^ 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
   154
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   155
    "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
   156
!
f871848ecfa8 Fixes in syntax highlighting and support for accepting code in the debugger.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2645
diff changeset
   157
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   158
compile: source forClass: class inCategory: category notifying: requestor install: doInstall
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   159
    "We allways compile whole class"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   160
    ^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
   161
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   162
    "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
   163
    "Modified: / 03-04-2013 / 00:11:32 / 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
   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
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
   167
                 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
   168
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   169
    "HACK.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   170
     Problem:
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   171
     SmalltalkChunkFileReader always uses class's compiler to compile source. 
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   172
     However, when filing in Smalltalk extensions to Java classes, a Smalltalk 
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   173
     code is passed to me.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   174
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   175
     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
   176
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   177
     Workaround:
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   178
     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
   179
     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
   180
     "
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   181
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   182
    (requestor isKindOf: SourceFileLoader) ifTrue:[
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   183
        ^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
   184
                 install:install skipIfSame:skipIfSame silent:silent
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   185
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   186
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   187
    self breakPoint:#jv.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   188
    self error: 'Not (yet) supported'
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   189
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   190
    "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
   191
!
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   193
compile: source register: register notifying: requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   194
    "Called when a class is accepted"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   195
    | 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
   196
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   197
    classes := self new
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   198
                requestor: requestor;
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   199
                compile: source.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   200
    register ifTrue:[
2643
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   201
        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
   202
        "/ 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
   203
        "/ 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
   204
        "/ is immediately thrown away. Thus, refetch classes...
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   205
        classes := classes collect:[:cls|JavaVM registry classNamed: cls name loader: cls classLoader].
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   206
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   207
    ^classes first.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   208
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   209
    "Created: / 03-04-2013 / 00:10:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2643
dc73ff5b258a Fix in JavaCompiler: refetch classes after registering them.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2588
diff changeset
   210
    "Modified: / 04-08-2013 / 14:10:47 / 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
   211
!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   212
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   213
evaluate: source notifying: requestor compile: doCompile
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   214
    "Called when a class is accepted"
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   215
    ^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
   216
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   217
    "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
   218
    "Modified: / 03-04-2013 / 00:11:22 / 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
   219
! !
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   220
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   221
!JavaCompiler methodsFor:'accessing'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   222
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   223
requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   224
    ^ requestor
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   225
!
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   227
requestor:anObject
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   228
    requestor := anObject.
2479
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   229
! !
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   230
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   231
!JavaCompiler methodsFor:'compiler interface'!
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   232
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   233
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
   234
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   235
    requestor class == SourceFileLoader ifTrue:[
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   236
        ^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
   237
    ].
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   238
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   239
    self error:'Not yet supported'.
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   240
76c5d94e3d4a JavaCompiler made API-compatible with ByteCodeCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2476
diff changeset
   241
    "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
   242
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
!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
   245
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
compile:source
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    "Compiles a java class in given source code (passed 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
   248
     Return an array of JavaClass which are not yet registered in Java 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
     class registry nor initialiized.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
     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
   252
     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
   253
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
     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
   255
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   257
    | javac classfiles classes problems |
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   258
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   259
    analyzer := self class newAnalyzer.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   260
    analyzer analyze: source.
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   261
    analyzer fullName isNil ifTrue:[
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   262
        self error:'Syntax error - cannot determine class name'.
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   263
        ^self.
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   264
    ].
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   265
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   266
    classloader isNil ifTrue:[
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   267
        classloader := JavaClassReader classLoaderQuerySignal query.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   268
        classloader isNil ifTrue:[
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   269
            classloader := JavaVM systemClassLoader.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   270
        ]
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   271
    ].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   272
2588
58b1e0fd20e7 Changed JavaVM>>classForName: to faster JavaVM>>classForName:definedBy:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2578
diff changeset
   273
    javac := (JavaVM classForName:'stx.libjava.tools.compiler.ecj.CompilerAdapter') new: 
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   274
               classloader.
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   275
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   276
    javac compile: analyzer fullName source: 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
   277
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   278
    "javac getResult hasErrors"
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   279
    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
   280
        ^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
   281
    ].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   282
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   283
    classfiles := javac getClassFiles.
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   284
    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
   285
        (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
   286
            classLoader: classloader;
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   287
            setSource: source;
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   288
            setClassfileBytes: each getBytes;
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   289
            yourself].
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   290
2645
b7a540a27521 Java compiler problem highlighting improved.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2643
diff changeset
   291
    problems := javac getResult getProblems asNilIfEmpty.
b7a540a27521 Java compiler problem highlighting improved.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2643
diff changeset
   292
    classes do:[:each|
b7a540a27521 Java compiler problem highlighting improved.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2643
diff changeset
   293
        JavaCompilerProblemRegistry problemsFor: each put: problems
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   294
    ].
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   295
    ^classes.
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   296
2512
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   297
    "Created: / 15-12-2012 / 23:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f2cbd771fc7b Removed Javac and JavacExternal implementation of JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2486
diff changeset
   298
    "Modified: / 16-12-2012 / 15:36:16 / Marcel Hlopko <marcel.hlopko@fit.cvut.cz>"
2645
b7a540a27521 Java compiler problem highlighting improved.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2643
diff changeset
   299
    "Modified: / 06-08-2013 / 10:45:50 / 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
   300
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
!JavaCompiler::ClassSourceAnalyzer class methodsFor:'accessing'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
ignoredNames
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    ^super ignoredNames , self instVarNames
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    "Created: / 15-12-2012 / 17:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2475
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   308
    "Modified: / 29-03-2013 / 23:08:54 / 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
   309
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
!JavaCompiler::ClassSourceAnalyzer 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
   312
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
copyright
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
 Copyright (c) 2010-2011 Jan Vrany, Jan Kurs & Marcel Hlopko,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
                         SWING Research Group, Czech Technical University 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
                         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
   318
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
 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
   320
 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
   321
 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
   322
 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
   323
 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
   324
 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
   325
 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
   326
 conditions:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
 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
   329
 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
   330
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
 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
   332
 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
   333
 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
   334
 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
   335
 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
   336
 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
   337
 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
   338
 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
   339
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
history
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
    "Created: #imports / 08-12-2012 / 20:01:41 / 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
   346
    "Modified: #imports / 09-12-2012 / 09:21:09 / 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
   347
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
version_SVN
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    ^ '§Id::                                                                                                                        §'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
!JavaCompiler::ClassSourceAnalyzer 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
   354
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
analyze: javaSourceCode
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    ^ self new analyze: javaSourceCode.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
    "Created: / 08-12-2012 / 18:47:26 / 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
   360
    "Modified (format): / 15-12-2012 / 16:59:36 / 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
   361
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
new
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    ^self newStartingAt: #compilationUnit
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
    "Created: / 15-12-2012 / 17:15:49 / 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
   367
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
!JavaCompiler::ClassSourceAnalyzer methodsFor:'accessing'!
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
className
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    <resource: #obsolete>
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
    ^ name
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
    "Created: / 08-12-2012 / 18:53:53 / 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
   376
    "Modified: / 15-12-2012 / 17:04:54 / 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
   377
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
2475
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   379
fullName
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   380
    ^package isNil 
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   381
        ifTrue:[name]
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   382
        ifFalse:[package , '.' , name]
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   383
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   384
    "Created: / 29-03-2013 / 23:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   385
!
27f0940ec023 Initial implementation of ECJ based JavaCompiler,
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   386
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
imports
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
    ^imports ? #()
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
    "Created: / 08-12-2012 / 20:01:41 / 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
   391
    "Modified: / 09-12-2012 / 09:21:09 / 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
   392
    "Modified: / 15-12-2012 / 17:20:06 / 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
   393
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
name
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
    ^ name
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
package
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
    ^ package
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
packageName
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
    <resource: #obsolete>
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
    ^package
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
    "Created: / 08-12-2012 / 18:50:26 / 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
   408
    "Modified: / 15-12-2012 / 17:56:22 / 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
   409
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
importDeclaration 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
    ^ ((self importKW) , (self staticKW) optional , qualifiedNameForImport 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
        , (self tokenFor:';')).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
        "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
    ^ super importDeclaration ==> [:nodes | 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
            imports isNil ifTrue:[imports := OrderedCollection new].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
            imports add: (nodes at:3) value.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
    "Created: / 15-12-2012 / 17:28:44 / 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
   424
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
packageDeclaration 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
"/        ^ (self  packageKW) , qualifiedName , (self tokenFor:';')
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
    ^super packageDeclaration ==> [:nodes| package := nodes second ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
    "Created: / 15-12-2012 / 22:44:08 / 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
   432
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
!JavaCompiler::ClassSourceAnalyzer methodsFor:'grammar-classes'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   436
typeNameIdentifier
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   437
    "    
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   438
    ^identifier
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
    "
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   440
    ^super typeNameIdentifier  ==> [:ident | 
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   441
            name := ident.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
            terminator value
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   443
    ]
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
2513
6669c7947f72 Bugfix in JavaCompiler - compile even syntactically incorrect code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2512
diff changeset
   445
    "Created: / 15-04-2013 / 21:24:37 / 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
   446
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
!JavaCompiler::ClassSourceAnalyzer methodsFor:'parsing'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
analyze: aString 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
    source := aString.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
    terminator := [ ^ self ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    self parse: source.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    "Created: / 08-12-2012 / 18:48:56 / 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
   456
    "Modified: / 15-12-2012 / 17:04:18 / 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
   457
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
!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
   460
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
version_CVS
2396
fadc6d7a2f5b Updated to rev 009a0df3afce
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2353
diff changeset
   462
    ^ '$Header: /cvs/stx/stx/libjava/experiments/JavaCompiler.st,v 1.2 2013-02-25 11:15:34 vrany Exp $'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
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
   466
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
    ^ '$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
   468
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
version_SVN
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
    ^ '§Id::                                                                                                                        §'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
2515
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   474
bcfe9f4dca6b Improvements in JavaCompiler.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2513
diff changeset
   475
JavaCompiler initialize!