mirah 0.1.1-java → 0.1.2-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/History.txt +133 -0
- data/Rakefile +78 -27
- data/javalib/mirah-bootstrap.jar +0 -0
- data/javalib/mirah-builtins.jar +0 -0
- data/javalib/mirah-compiler.jar +0 -0
- data/javalib/mirah-mirrors.jar +0 -0
- data/javalib/mirah-util.jar +0 -0
- data/lib/mirah/ast/scope.rb +4 -2
- data/lib/mirah/commands/run.rb +25 -20
- data/lib/mirah/env.rb +6 -0
- data/lib/mirah/errors.rb +4 -0
- data/lib/mirah/generator.rb +28 -7
- data/lib/mirah/jvm/compiler/jvm_bytecode.rb +1 -1
- data/lib/mirah/jvm/types/factory.rb +4 -10
- data/lib/mirah/util/argument_processor.rb +4 -0
- data/lib/mirah/version.rb +1 -1
- data/test/core/typer/assignable_type_future_test.rb +73 -0
- data/test/core/typer/error_type_test.rb +61 -0
- data/test/core/typer/simple_type_test.rb +69 -0
- data/test/jvm/blocks_test.rb +263 -3
- data/test/jvm/bytecode_test_helper.rb +17 -10
- data/test/jvm/jvm_commands_test.rb +10 -0
- data/test/jvm/string_builder_extensions_test.rb +49 -0
- data/test/jvm/{string_test.rb → string_extensions_test.rb} +32 -1
- data/test/mirrors/method_lookup_test.rb +2 -2
- data/test/mirrors/mirrors_test.rb +44 -7
- data/test/test_helper.rb +6 -0
- metadata +13 -19
- data/lib/mirah/jvm/types/methods.rb~ +0 -973
- data/lib/mirah/util/argument_processor.rb~ +0 -146
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 94bd269f142b48ceb3d74a18a8b55830d23abef4
|
4
|
+
data.tar.gz: db296eba09334207d811878f5c703ca7dafd8167
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 103411eeafff8608f3ee284ef2298fd85f14b065c70b69799ed94d5c2650e3a7806fa9aaabe327a3db73fdccb1e46c64d3d7161c0d971ec5bf35ee9210fb7af9
|
7
|
+
data.tar.gz: 591ed4759862e3ecf0b9c33a4332a87639ea82c761b925ea7b56a961610af0f0fb3a7efd8ccd1b2e3aef602d521fcac9b49bf05e4a2590b688984977e4870607
|
data/History.txt
CHANGED
@@ -1,3 +1,136 @@
|
|
1
|
+
=== 0.1.2 New Year, New Release / 2014-01-05
|
2
|
+
|
3
|
+
8421140 add desc'd rake task for building mirahc.jar
|
4
|
+
325ec54 replace deprecated import usage w/ java_import in test helper
|
5
|
+
f3c7911 move classpath-> Java URLs helper to Env module
|
6
|
+
7e738c3 add passed classpath to run classpath when running with mirah
|
7
|
+
1766599 split out test class file destinations for fixtures vs test classes
|
8
|
+
e4e6f49 don't use platform dependent path separator literals in jvm type factory classpath munging
|
9
|
+
223042f clean up run command
|
10
|
+
66f8b24 rm puts in jvm base compiler
|
11
|
+
0bb156e fix gem task definition ordering
|
12
|
+
c2e59b4 add apache 2 license to gemspec
|
13
|
+
3480594 move a few local variable assignments in the typer closer to their usage
|
14
|
+
68d883e clean up Rakefile & fix gem task so that it depends on bootstrap
|
15
|
+
e46edc7 add tests for type future classes, fix a couple associated bugs
|
16
|
+
860f87f do some c&p to maybe get CallCompiler reliably building on CI
|
17
|
+
8cf13b1 reorder call_compiler initializers to see if that'll fix it (annoyingly)
|
18
|
+
331005e reformat initialize args for CallCompiler
|
19
|
+
8e86d54 comment out non local return support so that this branch can be merged into master
|
20
|
+
cedd8c2 break out multi arg block tests into typed and untyped
|
21
|
+
9e19a49 have CallFuture log resolved target as well as args
|
22
|
+
c9321ae add custom inspect for MirahError
|
23
|
+
044f7ef improve scope inspect st it includes capture info
|
24
|
+
8ab9e91 try removing unused var / move replace self down
|
25
|
+
b8aac8a replace manually created lists with literals
|
26
|
+
89c71f7 refactor node replacement into an extracted method
|
27
|
+
ce7817a pull out more common code from macro expansion
|
28
|
+
ca1a4e0 begin cleaning up macro expansion in typer
|
29
|
+
8ced4e7 consolidate field type inference
|
30
|
+
bbf8356 extract common target type lookup for fields
|
31
|
+
81ec8ad extract helper for defaultExceptionTypeName
|
32
|
+
3dffc61 extract inferring annotations
|
33
|
+
d011167 extract inferring params
|
34
|
+
5dbd367 consolidate call method type future creation
|
35
|
+
71b731e consolidate workaround methods via widened type
|
36
|
+
39a66ee extract creating scopes w/ selfType
|
37
|
+
52723e9 extract adding nested scopes in typer
|
38
|
+
f2410e6 collapse a couple more getTypeOfs
|
39
|
+
88fe75a add widened getLocalType helper that works for any Named node
|
40
|
+
062b55a refactor typer method def: reorg declaration to usage
|
41
|
+
a38ae97 extract common call target inference
|
42
|
+
21b7307 remove unnecessary temp vars from Typer.getLocalType
|
43
|
+
5af117d pull out helper for adding new scope to typer
|
44
|
+
71616c9 use type helper in a couple non-obvious places
|
45
|
+
80cc787 wrap getting types from the typesystem in a helper
|
46
|
+
150b91c typer: rm unneeded temp vars named outer_scope
|
47
|
+
d2eff01 wrap scope getting w/ a helper method in typer
|
48
|
+
f4f25f2 extract helper for argument types that works for all but rest args
|
49
|
+
4f83d90 pushing more helper code around in typer
|
50
|
+
e301bab oops. types for getLocalType helper were wrong. Fixed them, and added scope back
|
51
|
+
114421a more reformatting of MethodDefinition typing
|
52
|
+
b4ebaa6 add helper for constructing local type for args
|
53
|
+
a632bae extract some helper methods for methoddefinition typing
|
54
|
+
951c7a3 add some newline formatting in the typer
|
55
|
+
e9e6b5e replace todos w/ methods noted w/ todos
|
56
|
+
a5f7e63 Merge branch 'master' into closure_changes
|
57
|
+
41640bc add cli help for new options
|
58
|
+
c0d557b Merge branch 'string_ext' of git://github.com/altamic/mirah
|
59
|
+
59fc3a8 closure work continues
|
60
|
+
ea86178 Minor patches + Merge branch 'master' into closure_changes :/
|
61
|
+
8e0f9b8 Fix jruby jar path
|
62
|
+
c7e537e Fix double expansion of macros in FunctionalCall
|
63
|
+
b61f5bf Fix return types.
|
64
|
+
b30d7eb Fix for field assignment as a method call.
|
65
|
+
084366d Add a pass to fix unitialized locals.
|
66
|
+
35abdad merge
|
67
|
+
b534cb6 Add a target to bootstrap using javalib/mirahc.jar.
|
68
|
+
c2f8bb9 Expose the correct type system to macros.
|
69
|
+
b783d57 Fix ambiguity for nil method parameters.
|
70
|
+
e7b7f2b More fixes to compile with the selfhosted mirahc.jar
|
71
|
+
3fe8e4b Fix vararg generic methods.
|
72
|
+
0429eb6 Typo
|
73
|
+
9b4655e Better error reporting.
|
74
|
+
8efd6b2 Bug fixes
|
75
|
+
e472901 ScriptCleanup is not reusable.
|
76
|
+
c9ce542 Fixes to get code compiling with mirahc.jar
|
77
|
+
1584448 Fix for macro compilation.
|
78
|
+
343ac03 Fix for overrides with optional arguments.
|
79
|
+
1c4dbde Fix calls to protected methods using super.
|
80
|
+
a6bac61 Fix for recompiling a class that is also on the classpath.
|
81
|
+
21fdfd9 add method def internal support, get a few more tests passing
|
82
|
+
fed5aa6 use bundled mirahc instead of just built mirahc
|
83
|
+
5ad5b1a added << operator to StringBuilder (somewhat fixes #40)
|
84
|
+
079ded9 Added include? method to String (closes #133)
|
85
|
+
41de27f added =~ operator to String (closes #160)
|
86
|
+
ab10d98 use the jruby jar in javalib instead of the in-use one
|
87
|
+
8dc1bd6 beginnings of a better way to build closures -- still has problems
|
88
|
+
068b248 rm the compiler jar on clean
|
89
|
+
ac45fa0 add more nlr tests
|
90
|
+
9c9eaa7 wrap rescue around parent node list
|
91
|
+
2cc0cd5 first pass at non local return
|
92
|
+
5bdeca4 download jruby jar instead of keeping it in git
|
93
|
+
02cee59 bump version to 0.1.2.dev
|
94
|
+
1b74e54 Hack to support covariant return types.
|
95
|
+
4f0ba15 Try to make debug info a little more sane
|
96
|
+
f356201 Optional arguments don't need a declaration.
|
97
|
+
a5cd63c Mirah methods should not return generic types
|
98
|
+
0c1feee Another missing import
|
99
|
+
1b326e2 Print the number of errors.
|
100
|
+
d863176 Fix some override bugs.
|
101
|
+
162848b Guard against concurrent modification in BaseType.notifyOfIncompatibleChange
|
102
|
+
36a0635 Fix test_method_requiring_subclass_of_abstract_class_finds_abstract_method
|
103
|
+
60dcf76 Add missing file
|
104
|
+
d895ad2 Better support for overridden methods.
|
105
|
+
82b089f Fix expansion order for macros.
|
106
|
+
4eabcc5 Ensure method changes from supertypes get propagated
|
107
|
+
5388d85 Don't consider macros when inferring overridden method types.
|
108
|
+
9036f24 More debug logging to track down unhelpful error messages during inference.
|
109
|
+
31c9cee bump history again
|
110
|
+
33afd17 bump bitescript dependency
|
111
|
+
98f57da bump 0.1.1 history
|
112
|
+
af66397 bump bitescript version to 0.1.3
|
113
|
+
776b74f when bundled in a jar, add the jar to the classpath
|
114
|
+
71d3b82 rm dynalink from zip/jar dist
|
115
|
+
383c615 bump version to 0.1.1; update history
|
116
|
+
97d46fc add tests to nail down super behavior
|
117
|
+
4ef8b3b add inherited lookup to static fields
|
118
|
+
dabe54d fix missing conversion for implicit returns in new backend
|
119
|
+
754cc38 fix primitive conversion errors in code generation for implicit return in methods
|
120
|
+
d565657 update maven release instructions
|
121
|
+
9d7529f the gem now relies on mirrors and the new backend
|
122
|
+
8a781fc Merge branch 'master' of https://github.com/mirah/mirah
|
123
|
+
0ef465c More missing imports
|
124
|
+
ac60613 bump history again
|
125
|
+
00e481f Missing import
|
126
|
+
ff8c5b3 Show inference error messages from multiple classes.
|
127
|
+
ea7a434 Support inferring overridden types when the same override is contained in multiple supertypes.
|
128
|
+
ba84b9c Better error handling in generic method processing
|
129
|
+
fc831a8 Guard against concurrent modification
|
130
|
+
b214f8f Typo
|
131
|
+
bdba3fc Support missing selfType in MethodLookup.
|
132
|
+
aeaa4bc Fix compilation of extensions inside a package.
|
133
|
+
|
1
134
|
=== 0.1.1 Summer Summit / 2013-08-05
|
2
135
|
|
3
136
|
e94e5be bump bitescript dependency
|
data/Rakefile
CHANGED
@@ -22,6 +22,11 @@ require 'java'
|
|
22
22
|
require 'jruby/compiler'
|
23
23
|
require 'ant'
|
24
24
|
|
25
|
+
# this definition ensures that the bootstrap tasks will be completed before
|
26
|
+
# building the .gem file. Otherwise, the gem may not contain the jars.
|
27
|
+
task :gem => [:bootstrap,
|
28
|
+
"javalib/mirah-compiler.jar",
|
29
|
+
"javalib/mirah-mirrors.jar"]
|
25
30
|
Gem::PackageTask.new Gem::Specification.load('mirah.gemspec') do |pkg|
|
26
31
|
pkg.need_zip = true
|
27
32
|
pkg.need_tar = true
|
@@ -29,14 +34,16 @@ end
|
|
29
34
|
|
30
35
|
bitescript_lib_dir = File.dirname Gem.find_files('bitescript').first
|
31
36
|
|
32
|
-
task :
|
33
|
-
|
37
|
+
task :bootstrap => ['javalib/mirah-bootstrap.jar',
|
38
|
+
'javalib/mirah-builtins.jar',
|
39
|
+
'javalib/mirah-util.jar']
|
34
40
|
|
35
41
|
|
36
42
|
task :default => :bytecode_ci
|
37
43
|
|
38
44
|
desc "run bytecode backend ci"
|
39
|
-
task :bytecode_ci => [:'test:core',
|
45
|
+
task :bytecode_ci => [:'test:core',
|
46
|
+
:'test:jvm:bytecode']
|
40
47
|
desc "run new backend ci"
|
41
48
|
task :new_ci => [:'test:core', :'test:jvm:new']
|
42
49
|
|
@@ -86,7 +93,9 @@ namespace :test do
|
|
86
93
|
task :test_setup => [:clean_tmp_test_directory, :build_test_fixtures]
|
87
94
|
|
88
95
|
desc "run jvm tests compiling to bytecode"
|
89
|
-
Rake::TestTask.new :bytecode => [:bootstrap,
|
96
|
+
Rake::TestTask.new :bytecode => [:bootstrap,
|
97
|
+
"javalib/mirah-compiler.jar",
|
98
|
+
:test_setup] do |t|
|
90
99
|
t.libs << 'test' <<'test/jvm'
|
91
100
|
t.ruby_opts.concat ["-r", "bytecode_test_helper"]
|
92
101
|
t.test_files = FileList["test/jvm/**/*test.rb"]
|
@@ -119,10 +128,12 @@ end
|
|
119
128
|
task :clean_tmp_test_directory do
|
120
129
|
FileUtils.rm_rf "tmp_test"
|
121
130
|
FileUtils.mkdir_p "tmp_test"
|
131
|
+
FileUtils.mkdir_p "tmp_test/test_classes"
|
132
|
+
FileUtils.mkdir_p "tmp_test/fixtures"
|
122
133
|
end
|
123
134
|
|
124
135
|
task :build_test_fixtures do
|
125
|
-
ant.javac 'destdir' => "tmp_test", 'srcdir' => 'test/fixtures',
|
136
|
+
ant.javac 'destdir' => "tmp_test/fixtures", 'srcdir' => 'test/fixtures',
|
126
137
|
'includeantruntime' => false, 'debug' => true, 'listfiles' => true
|
127
138
|
end
|
128
139
|
|
@@ -136,8 +147,10 @@ task :clean do
|
|
136
147
|
ant.delete 'quiet' => true, 'dir' => 'build'
|
137
148
|
ant.delete 'quiet' => true, 'dir' => 'dist'
|
138
149
|
rm_f 'javalib/mirah-bootstrap.jar'
|
150
|
+
rm_f 'javalib/mirah-compiler.jar'
|
139
151
|
rm_f 'javalib/mirah-builtins.jar'
|
140
152
|
rm_f 'javalib/mirah-util.jar'
|
153
|
+
rm_f 'javalib/mirah-mirrors.jar'
|
141
154
|
rm_rf 'tmp'
|
142
155
|
end
|
143
156
|
|
@@ -163,8 +176,11 @@ task :jar => :compile do
|
|
163
176
|
end
|
164
177
|
|
165
178
|
namespace :jar do
|
179
|
+
desc "build mirahc.jar"
|
180
|
+
task :mirahc => 'javalib/mirahc.jar'
|
181
|
+
|
166
182
|
desc "build self-contained, complete jar"
|
167
|
-
task :complete => :jar do
|
183
|
+
task :complete => [:jar, 'javalib/jruby-complete.jar'] do
|
168
184
|
ant.jar 'jarfile' => 'dist/mirah-complete.jar' do
|
169
185
|
zipfileset 'src' => 'dist/mirah.jar'
|
170
186
|
zipfileset 'src' => 'javalib/jruby-complete.jar'
|
@@ -174,9 +190,6 @@ namespace :jar do
|
|
174
190
|
end
|
175
191
|
end
|
176
192
|
end
|
177
|
-
|
178
|
-
desc "build bootstrap jar used by the gem"
|
179
|
-
task :bootstrap => 'javalib/mirah-bootstrap.jar'
|
180
193
|
end
|
181
194
|
|
182
195
|
desc "Build a distribution zip file"
|
@@ -201,6 +214,16 @@ end
|
|
201
214
|
desc "Build all redistributable files"
|
202
215
|
task :dist => [:gem, :zip]
|
203
216
|
|
217
|
+
file_create 'javalib/jruby-complete.jar' do
|
218
|
+
require 'open-uri'
|
219
|
+
puts "Downloading jruby-complete.jar"
|
220
|
+
open('http://jruby.org.s3.amazonaws.com/downloads/1.7.4/jruby-complete-1.7.4.jar', 'rb') do |src|
|
221
|
+
open('javalib/jruby-complete.jar', 'wb') do |dest|
|
222
|
+
dest.write(src.read)
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
204
227
|
file_create 'javalib/mirah-newast-transitional.jar' do
|
205
228
|
require 'open-uri'
|
206
229
|
puts "Downloading mirah-newast-transitional.jar"
|
@@ -243,6 +266,43 @@ file 'javalib/mirah-bootstrap.jar' => ['javalib/mirah-newast-transitional.jar',
|
|
243
266
|
end
|
244
267
|
end
|
245
268
|
|
269
|
+
file 'javalib/mirahc-2.jar' => ['javalib/mirahc.jar'] do
|
270
|
+
build_dir = 'build/bootstrap'
|
271
|
+
rm_rf build_dir
|
272
|
+
mkdir_p build_dir
|
273
|
+
|
274
|
+
# Compile annotations and class loader
|
275
|
+
ant.javac 'source' => '1.5', 'destdir' => build_dir, 'srcdir' => 'src',
|
276
|
+
'includeantruntime' => false, 'debug' => true, 'listfiles' => true
|
277
|
+
|
278
|
+
# Compile the Typer and Macro compiler
|
279
|
+
stage1_files = Dir['src/org/mirah/{builtins,jvm/types,macros,util,}/*.mirah',
|
280
|
+
'src/org/mirah/typer/**/*.mirah']
|
281
|
+
runjava('javalib/mirahc.jar',
|
282
|
+
'-d', build_dir,
|
283
|
+
'-classpath', 'javalib/mirah-parser.jar',
|
284
|
+
*stage1_files)
|
285
|
+
|
286
|
+
add_quote_macro
|
287
|
+
cp Dir['src/org/mirah/macros/*.tpl'], "#{build_dir}/org/mirah/macros"
|
288
|
+
|
289
|
+
stage2_files = Dir['src/org/mirah/jvm/{compiler,mirrors,model}/**/*.mirah',
|
290
|
+
'src/org/mirah/tool/*.mirah']
|
291
|
+
runjava('javalib/mirahc.jar',
|
292
|
+
'-d', build_dir,
|
293
|
+
'-classpath', "javalib/mirah-parser.jar:#{build_dir}",
|
294
|
+
*stage2_files)
|
295
|
+
|
296
|
+
# Build the jar
|
297
|
+
ant.jar 'jarfile' => 'javalib/mirahc-2.jar' do
|
298
|
+
fileset 'dir' => build_dir
|
299
|
+
zipfileset :src => 'javalib/jruby-complete.jar', :includes => 'org/jruby/org/objectweb/**/*'
|
300
|
+
zipfileset :src => 'javalib/mirah-parser.jar'
|
301
|
+
manifest do
|
302
|
+
attribute :name => 'Main-Class', :value => 'org.mirah.tool.Mirahc'
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
246
306
|
|
247
307
|
file 'javalib/mirah-util.jar' do
|
248
308
|
require 'mirah'
|
@@ -260,7 +320,7 @@ file 'javalib/mirah-util.jar' do
|
|
260
320
|
|
261
321
|
# compile ant stuff
|
262
322
|
ant_classpath = $CLASSPATH.grep(/ant/).map{|x| x.sub(/^file:/,'')}.join(File::PATH_SEPARATOR)
|
263
|
-
sh *%W(jruby -
|
323
|
+
sh *%W(jruby -S mirahc --classpath #{ant_classpath}:#{build_dir} --dest #{build_dir} src/org/mirah/ant)
|
264
324
|
|
265
325
|
# compile invokedynamic stuff
|
266
326
|
ant.javac 'destdir' => build_dir, 'srcdir' => 'src',
|
@@ -279,7 +339,7 @@ file 'javalib/mirah-builtins.jar' => ['javalib/mirah-bootstrap.jar'] + Dir['src/
|
|
279
339
|
rm_f 'javalib/mirah-builtins.jar'
|
280
340
|
rm_rf 'build/builtins'
|
281
341
|
mkdir_p 'build/builtins'
|
282
|
-
sh *%w(jruby -
|
342
|
+
sh *%w(jruby -S mirahc --dest build/builtins src/org/mirah/builtins)
|
283
343
|
ant.jar 'jarfile' => 'javalib/mirah-builtins.jar' do
|
284
344
|
fileset 'dir' => 'build/builtins'
|
285
345
|
end
|
@@ -293,29 +353,28 @@ file 'javalib/mirah-compiler.jar' => ['javalib/mirah-builtins.jar'] + Dir['src/o
|
|
293
353
|
phase3_files = Dir['src/org/mirah/jvm/compiler/{class,interface,script}_compiler.mirah'] + ['src/org/mirah/jvm/compiler/backend.mirah']
|
294
354
|
phase2_files = Dir['src/org/mirah/jvm/compiler/{condition,method,string}_compiler.mirah']
|
295
355
|
phase1_files = Dir['src/org/mirah/jvm/compiler/*.mirah'] - phase2_files - phase3_files
|
296
|
-
sh *(%w(jruby -
|
356
|
+
sh *(%w(jruby -S mirahc --dest build/compiler ) +
|
297
357
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar) +
|
298
358
|
%w(src/org/mirah/util src/org/mirah/jvm/types src/org/mirah/jvm/compiler/base_compiler.mirah))
|
299
|
-
sh *(%w(jruby -
|
359
|
+
sh *(%w(jruby -S mirahc --dest build/compiler ) +
|
300
360
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar:build/compiler) +
|
301
361
|
%w(src/org/mirah/util/context.mirah) + phase1_files)
|
302
|
-
sh *(%w(jruby -
|
362
|
+
sh *(%w(jruby -S mirahc --dest build/compiler ) +
|
303
363
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar:build/compiler) +
|
304
364
|
%w(src/org/mirah/util/context.mirah) + phase2_files)
|
305
|
-
sh *(%w(jruby -
|
365
|
+
sh *(%w(jruby -S mirahc --dest build/compiler ) +
|
306
366
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar:build/compiler) +
|
307
367
|
%w(src/org/mirah/util/context.mirah) + phase3_files)
|
308
368
|
ant.jar 'jarfile' => 'javalib/mirah-compiler.jar' do
|
309
369
|
fileset 'dir' => 'build/compiler'
|
310
370
|
end
|
311
|
-
rm_rf 'build/compiler'
|
312
371
|
end
|
313
372
|
|
314
373
|
file 'javalib/mirah-mirrors.jar' => ['javalib/mirah-compiler.jar'] + Dir['src/org/mirah/jvm/mirrors/**/*.mirah','src/org/mirah/jvm/model/**/*.mirah'] do
|
315
374
|
rm_f 'javalib/mirah-mirrors.jar'
|
316
375
|
rm_rf 'build/mirrors'
|
317
376
|
mkdir_p 'build/mirrors'
|
318
|
-
sh *(%w(jruby -
|
377
|
+
sh *(%w(jruby -S mirahc -N --dest build/mirrors ) +
|
319
378
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar:javalib/mirah-compiler.jar) +
|
320
379
|
%w(src/org/mirah/jvm/mirrors/ src/org/mirah/jvm/model/))
|
321
380
|
ant.jar 'jarfile' => 'javalib/mirah-mirrors.jar' do
|
@@ -324,21 +383,13 @@ file 'javalib/mirah-mirrors.jar' => ['javalib/mirah-compiler.jar'] + Dir['src/or
|
|
324
383
|
rm_rf 'build/mirrors'
|
325
384
|
end
|
326
385
|
|
327
|
-
def find_jruby_jar
|
328
|
-
require 'java'
|
329
|
-
java_import 'org.jruby.Ruby'
|
330
|
-
path = Ruby.java_class.resource('Ruby.class').toString
|
331
|
-
path =~ %r{^jar:file:(.+)!/org/jruby/Ruby.class}
|
332
|
-
$1
|
333
|
-
end
|
334
|
-
|
335
386
|
file 'javalib/mirahc.jar' => ['javalib/mirah-mirrors.jar',
|
336
387
|
'src/org/mirah/tool/mirahc.mirah',
|
337
388
|
] do
|
338
389
|
rm_f 'javalib/mirahc.jar'
|
339
390
|
rm_rf 'build/mirahc'
|
340
391
|
mkdir_p 'build/mirahc'
|
341
|
-
sh *(%w(jruby -
|
392
|
+
sh *(%w(jruby -S mirahc -N --dest build/mirahc ) +
|
342
393
|
%w(--classpath javalib/mirah-parser.jar:javalib/mirah-bootstrap.jar:javalib/mirah-compiler.jar:javalib/mirah-mirrors.jar) +
|
343
394
|
%w(src/org/mirah/tool/))
|
344
395
|
ant.jar :jarfile => 'javalib/mirahc.jar' do
|
@@ -348,7 +399,7 @@ file 'javalib/mirahc.jar' => ['javalib/mirah-mirrors.jar',
|
|
348
399
|
zipfileset :src => 'javalib/mirah-util.jar'
|
349
400
|
zipfileset :src => 'javalib/mirah-compiler.jar'
|
350
401
|
zipfileset :src => 'javalib/mirah-mirrors.jar'
|
351
|
-
zipfileset :src =>
|
402
|
+
zipfileset :src => 'javalib/jruby-complete.jar', :includes => 'org/jruby/org/objectweb/**/*'
|
352
403
|
zipfileset :src => 'javalib/mirah-parser.jar'
|
353
404
|
manifest do
|
354
405
|
attribute :name => 'Main-Class', :value => 'org.mirah.tool.Mirahc'
|
data/javalib/mirah-bootstrap.jar
CHANGED
Binary file
|
data/javalib/mirah-builtins.jar
CHANGED
Binary file
|
data/javalib/mirah-compiler.jar
CHANGED
Binary file
|
Binary file
|
data/javalib/mirah-util.jar
CHANGED
Binary file
|
data/lib/mirah/ast/scope.rb
CHANGED
@@ -46,7 +46,8 @@ module Mirah
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def to_s
|
49
|
-
"#<StaticScope node=#{@scope_node.
|
49
|
+
#"#<StaticScope node=#{@scope_node.to_s}>"
|
50
|
+
inspect
|
50
51
|
end
|
51
52
|
|
52
53
|
def inspect
|
@@ -54,6 +55,7 @@ module Mirah
|
|
54
55
|
result << "parent=#{@parent}\n " if @parent
|
55
56
|
result << "vars=#{locals.inspect}\n " if @vars.size > 0
|
56
57
|
result << "shadowed=#{@shadowed.keys.inspect}\n " if @shadowed.size > 0
|
58
|
+
result << "captured=#{capturedLocals.inspect}\n " if capturedLocals.size > 0
|
57
59
|
result << "temps=#{@temps.keys.inspect}\n " if @temps.size > 0
|
58
60
|
result << "package=#{@package}\n " if @package
|
59
61
|
result << "imports=#{@imports.inspect}\n " if @imports.size > 0
|
@@ -92,7 +94,7 @@ module Mirah
|
|
92
94
|
end
|
93
95
|
|
94
96
|
def temp(name="tmp")
|
95
|
-
"
|
97
|
+
"#{name}$#{@temps[name] += 1}"
|
96
98
|
end
|
97
99
|
|
98
100
|
def local_type(name, position=nil)
|
data/lib/mirah/commands/run.rb
CHANGED
@@ -21,20 +21,12 @@ module Mirah
|
|
21
21
|
class Run < Base
|
22
22
|
def execute
|
23
23
|
execute_base do
|
24
|
-
|
25
|
-
|
24
|
+
class_map = generate_classes
|
25
|
+
$CLASSPATH << Mirah::Env.decode_paths(@state.classpath) if @state.classpath
|
26
|
+
class_loader = load_classes class_map
|
26
27
|
|
27
|
-
|
28
|
-
generator = Mirah::Generator.new(@state, @state.compiler_class, false, @state.verbose)
|
28
|
+
main = find_main class_map, class_loader
|
29
29
|
|
30
|
-
generator.generate(args).each do |result|
|
31
|
-
class_map[result.classname.gsub(/\//, '.')] = Mirah::Util::ClassLoader.binary_string result.bytes
|
32
|
-
end
|
33
|
-
|
34
|
-
# load all classes
|
35
|
-
main = load_classes_and_find_main(class_map)
|
36
|
-
|
37
|
-
# run the main method we found
|
38
30
|
run_main(main)
|
39
31
|
end
|
40
32
|
end
|
@@ -45,15 +37,18 @@ module Mirah
|
|
45
37
|
|
46
38
|
private
|
47
39
|
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
40
|
+
def load_classes(class_map)
|
41
|
+
Mirah::Util::ClassLoader.new(JRuby.runtime.jruby_class_loader, class_map)
|
42
|
+
end
|
43
|
+
|
44
|
+
def find_main class_map, class_loader
|
45
|
+
# TODO: using first main; find correct one?
|
46
|
+
class_map.keys.each do |name|
|
47
|
+
cls = class_loader.load_class(name)
|
48
|
+
main = cls.get_method("main", java::lang::String[].java_class)
|
49
|
+
return main if main
|
55
50
|
end
|
56
|
-
|
51
|
+
nil
|
57
52
|
end
|
58
53
|
|
59
54
|
def run_main(main)
|
@@ -68,6 +63,16 @@ module Mirah
|
|
68
63
|
puts "No main found" unless @state.version_printed || @state.help_printed
|
69
64
|
end
|
70
65
|
end
|
66
|
+
|
67
|
+
def generate_classes
|
68
|
+
# generate all bytes for all classes
|
69
|
+
generator = Mirah::Generator.new(@state, @state.compiler_class, false, @state.verbose)
|
70
|
+
class_map = {}
|
71
|
+
generator.generate(args).each do |result|
|
72
|
+
class_map[result.classname.gsub(/\//, '.')] = Mirah::Util::ClassLoader.binary_string result.bytes
|
73
|
+
end
|
74
|
+
class_map
|
75
|
+
end
|
71
76
|
end
|
72
77
|
end
|
73
78
|
end
|