mirah 0.1.4-java → 0.2.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +0 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/History.txt +531 -0
- data/README.md +23 -10
- data/Rakefile +239 -156
- data/TODO.md +71 -10
- data/bin/mirah +1 -1
- data/bin/mirahc +1 -1
- data/dist/mirahc.jar +0 -0
- data/examples/bintrees.mirah +2 -2
- data/examples/construction.mirah +2 -2
- data/examples/fields.mirah +1 -1
- data/examples/fractal.mirah +1 -1
- data/examples/fractal.rb +70 -0
- data/examples/interfaces.mirah +1 -1
- data/examples/java_thing.mirah +1 -1
- data/examples/macros/square.mirah +3 -3
- data/examples/macros/square_int.mirah +3 -3
- data/examples/macros/string_each_char.mirah +6 -6
- data/examples/rosettacode/100-doors.mirah +0 -2
- data/examples/rosettacode/count-occurrences-of-a-substring.mirah +3 -3
- data/examples/rosettacode/empty-string.mirah +1 -1
- data/examples/rosettacode/fizz-buzz.mirah +4 -4
- data/examples/rosettacode/is-string-numeric.mirah +7 -7
- data/examples/rosettacode/palindrome.mirah +2 -2
- data/examples/rosettacode/reverse-a-string.mirah +1 -1
- data/examples/rosettacode/rot-13.mirah +1 -1
- data/examples/{edb.mirah → rosettacode/simple_character_math.mirah} +13 -4
- data/examples/rosettacode/string-case.mirah +2 -2
- data/examples/rosettacode/string-length.mirah +1 -1
- data/examples/swing.mirah +9 -14
- data/extensions_and_macros.md +117 -0
- data/lib/mirah.rb +1 -1
- data/lib/mirah/errors.rb +3 -1
- data/lib/mirah/transform/ast_ext.rb +3 -2
- data/lib/mirah/util/process_errors.rb +1 -2
- data/lib/mirah/version.rb +1 -1
- data/test/A.class +0 -0
- data/test/core/util/jvm_version_test.rb +10 -0
- data/test/core/util/mirah_arguments_test.rb +51 -4
- data/test/fixtures/cp1251_test.mirah +7 -0
- data/test/fixtures/org/foo/AbstractExecutorJava8.java +30 -0
- data/test/fixtures/org/foo/ClassWithSelfReferencingTypeParameter.java +24 -0
- data/test/fixtures/org/foo/InnerInterfaceClass.java +12 -0
- data/test/fixtures/org/foo/IntAnno.class +0 -0
- data/test/fixtures/org/foo/TypeFixtureJava8.java +10 -0
- data/test/fixtures/utf8_test.mirah +7 -0
- data/test/jvm/access_levels_test.rb +31 -0
- data/test/jvm/annotations_test.rb +3 -6
- data/test/jvm/blocks_test.rb +303 -120
- data/test/jvm/cast_test.rb +123 -50
- data/test/jvm/closure_test.rb +242 -0
- data/test/jvm/constructors_test.rb +1 -3
- data/test/jvm/example_test.rb +6 -2
- data/test/jvm/extensions/array_extensions_test.rb +181 -0
- data/test/jvm/extensions/collection_extensions_test.rb +195 -0
- data/test/jvm/{enumerable_test.rb → extensions/enumerable_test.rb} +81 -13
- data/test/jvm/extensions/hash_extensions_test.rb +56 -0
- data/test/jvm/extensions/list_extensions_test.rb +143 -0
- data/test/jvm/extensions/lock_extensions_test.rb +43 -0
- data/test/jvm/{numeric_extensions_test.rb → extensions/numeric_extensions_test.rb} +0 -0
- data/test/jvm/extensions/numeric_operators_test.rb +86 -0
- data/test/jvm/extensions/object_extensions_test.rb +122 -0
- data/test/jvm/{string_builder_extensions_test.rb → extensions/string_builder_extensions_test.rb} +0 -0
- data/test/jvm/{string_extensions_test.rb → extensions/string_extensions_test.rb} +57 -4
- data/test/jvm/generics_test.rb +14 -6
- data/test/jvm/import_test.rb +38 -1
- data/test/jvm/interface_test.rb +17 -0
- data/test/jvm/jvm_commands_test.rb +9 -0
- data/test/jvm/jvm_compiler_test.rb +568 -43
- data/test/jvm/macros_test.rb +343 -19
- data/test/jvm/main_method_test.rb +1 -3
- data/test/jvm/new_backend_test_helper.rb +54 -7
- data/test/jvm/rescue_test.rb +20 -5
- data/test/jvm/static_fields_test.rb +52 -10
- data/test/jvm/{mirror_compilation_test_helper.rb → string_test.rb} +10 -9
- data/test/jvm/varargs_test.rb +6 -16
- data/test/mirrors/base_type_test.rb +20 -7
- data/test/mirrors/bytecode_mirror_test.rb +8 -3
- data/test/mirrors/generics_test.rb +89 -10
- data/test/mirrors/member_test.rb +1 -1
- data/test/mirrors/method_lookup_test.rb +10 -3
- data/test/mirrors/mirrors_test.rb +20 -20
- data/test/mirrors/simple_async_mirror_loader_test.rb +1 -1
- data/test/mirrors/simple_mirror_loader_test.rb +1 -1
- data/test/newMirahClass$Closure2.class +0 -0
- data/test/newMirahClass.class +0 -0
- data/test/test_helper.rb +8 -1
- metadata +31 -16
- data/bin/bundler +0 -16
- data/bin/rake +0 -16
- data/examples/ant/example-build.xml~ +0 -7
- data/examples/test.edb +0 -9
- data/lib/mirah/compiler.rb +0 -67
- data/lib/mirah/parser.rb +0 -224
- data/lib/mirah/util/delegate.rb +0 -65
- data/test/jvm/list_extensions_test.rb +0 -23
data/test/mirrors/member_test.rb
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
require 'test/unit'
|
17
17
|
require 'java'
|
18
|
-
require 'dist/mirahc.jar
|
18
|
+
require ENV.fetch('MIRAHC_JAR',File.expand_path("../../../dist/mirahc.jar",__FILE__))
|
19
19
|
|
20
20
|
class BaseMethodLookupTest < Test::Unit::TestCase
|
21
21
|
java_import 'org.mirah.jvm.mirrors.MirrorTypeSystem'
|
@@ -291,6 +291,7 @@ class MethodLookupTest < BaseMethodLookupTest
|
|
291
291
|
expected_invisible = methods - expected_visible
|
292
292
|
set_self_type(type)
|
293
293
|
invisible = @lookup.removeInaccessible(methods, @scope, nil)
|
294
|
+
|
294
295
|
assert_equal(expected_invisible.map {|m| m.toString}, invisible.map {|m| m.toString})
|
295
296
|
assert_equal(expected_visible.map {|m| m.toString}, methods.map {|m| m.toString})
|
296
297
|
# TODO: fix protected usage. e.g. Foo can call Object.clone() through a foo instance, but not any Object.
|
@@ -556,14 +557,15 @@ class FieldTest < BaseMethodLookupTest
|
|
556
557
|
a_foo = @a.add_field("foo")
|
557
558
|
a_bar = @a.add_field("bar")
|
558
559
|
b_foo = @b.add_field("foo")
|
559
|
-
foos = @lookup.gatherFields(@b, 'foo').to_a
|
560
|
+
foos = @lookup.gatherFields(@b, 'foo', []).to_a
|
560
561
|
|
561
562
|
assert_equal([b_foo, a_foo], foos)
|
562
|
-
assert_equal([a_bar], @lookup.gatherFields(@b, 'bar').to_a)
|
563
|
+
assert_equal([a_bar], @lookup.gatherFields(@b, 'bar', []).to_a)
|
563
564
|
end
|
564
565
|
|
565
566
|
def test_find_super_field
|
566
567
|
@a.add_field("foo")
|
568
|
+
|
567
569
|
future = @lookup.findMethod(@scope, @b, 'foo', [], nil, nil, false)
|
568
570
|
|
569
571
|
assert_equal("LA;", future.resolve.returnType.asm_type.descriptor)
|
@@ -574,6 +576,7 @@ class FieldTest < BaseMethodLookupTest
|
|
574
576
|
@b.add_field("foo")
|
575
577
|
|
576
578
|
future = @lookup.findMethod(@scope, @b, 'foo', [], nil, nil, false)
|
579
|
+
|
577
580
|
assert_equal("LB;", future.resolve.returnType.asm_type.descriptor)
|
578
581
|
end
|
579
582
|
|
@@ -583,17 +586,21 @@ class FieldTest < BaseMethodLookupTest
|
|
583
586
|
@b.add_field("foo", Opcodes.ACC_PRIVATE)
|
584
587
|
|
585
588
|
future = @lookup.findMethod(@scope, @b, 'foo', [], nil, nil, false)
|
589
|
+
|
586
590
|
assert_equal("LA;", future.resolve.returnType.asm_type.descriptor)
|
587
591
|
end
|
588
592
|
|
589
593
|
def test_inaccessible
|
590
594
|
@a.add_field("foo", Opcodes.ACC_PRIVATE)
|
595
|
+
|
591
596
|
future = @lookup.findMethod(@scope, @b, 'foo', [], nil, nil, false)
|
597
|
+
|
592
598
|
assert(future.resolve.isError, "Expected error, got #{future.resolve}")
|
593
599
|
end
|
594
600
|
|
595
601
|
def test_field_setter
|
596
602
|
@a.add_field("foo")
|
603
|
+
|
597
604
|
future = @lookup.findMethod(@scope, @a, 'foo_set', [@a], nil, nil, false)
|
598
605
|
end
|
599
606
|
end
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
|
17
17
|
require "test_helper"
|
18
|
-
require 'dist/mirahc.jar
|
18
|
+
require ENV.fetch('MIRAHC_JAR',File.expand_path("../../../dist/mirahc.jar",__FILE__))
|
19
19
|
|
20
20
|
class BaseMirrorsTest < Test::Unit::TestCase
|
21
21
|
java_import 'org.mirah.jvm.mirrors.MirrorTypeSystem'
|
@@ -157,12 +157,12 @@ class MirrorsTest < BaseMirrorsTest
|
|
157
157
|
end
|
158
158
|
|
159
159
|
def test_main_type
|
160
|
-
assert_descriptor("
|
160
|
+
assert_descriptor("LFooBarTopLevel;", main_type)
|
161
161
|
end
|
162
162
|
|
163
163
|
def test_main_type2
|
164
164
|
set_filename("some_class.mirah")
|
165
|
-
assert_descriptor("
|
165
|
+
assert_descriptor("LSomeClassTopLevel;", main_type)
|
166
166
|
end
|
167
167
|
|
168
168
|
def test_main_type_is_meta
|
@@ -171,7 +171,7 @@ class MirrorsTest < BaseMirrorsTest
|
|
171
171
|
|
172
172
|
def test_main_type_with_package
|
173
173
|
@scope.package_set("foo.bar")
|
174
|
-
assert_descriptor("Lfoo/bar/
|
174
|
+
assert_descriptor("Lfoo/bar/FooBarTopLevel;", main_type)
|
175
175
|
end
|
176
176
|
|
177
177
|
def test_regex
|
@@ -270,19 +270,19 @@ class MirrorsTest < BaseMirrorsTest
|
|
270
270
|
def test_define_type
|
271
271
|
type = define_type("Subclass", main_type)
|
272
272
|
assert_descriptor("LSubclass;", type)
|
273
|
-
assert_descriptor("
|
273
|
+
assert_descriptor("LFooBarTopLevel;", @types.getSuperClass(type))
|
274
274
|
end
|
275
275
|
|
276
276
|
def test_define_inner_class_type
|
277
|
-
type = define_type("
|
278
|
-
assert_descriptor("
|
279
|
-
assert_descriptor("
|
277
|
+
type = define_type("SubclassTopLevel$Inner", main_type)
|
278
|
+
assert_descriptor("LSubclassTopLevel$Inner;", type)
|
279
|
+
assert_descriptor("LFooBarTopLevel;", @types.getSuperClass(type))
|
280
280
|
end
|
281
281
|
|
282
282
|
def test_redefine_main_type
|
283
283
|
existing = main_type.resolve.unmeta
|
284
|
-
type = @types.defineType(@scope, ClassDefinition.new, "
|
285
|
-
assert_descriptor("
|
284
|
+
type = @types.defineType(@scope, ClassDefinition.new, "FooBarTopLevel", nil, [])
|
285
|
+
assert_descriptor("LFooBarTopLevel;", type)
|
286
286
|
assert_same(existing, type.resolve)
|
287
287
|
end
|
288
288
|
|
@@ -339,16 +339,16 @@ class MirrorsTest < BaseMirrorsTest
|
|
339
339
|
end
|
340
340
|
|
341
341
|
def test_classname_from_filename
|
342
|
-
assert_equal("
|
342
|
+
assert_equal("SomeClassTopLevel",
|
343
343
|
MirrorTypeSystem.classnameFromFilename("SomeClass.mirah"))
|
344
|
-
assert_equal("
|
344
|
+
assert_equal("FooBarTopLevel",
|
345
345
|
MirrorTypeSystem.classnameFromFilename("FooBar.mirah"))
|
346
|
-
assert_equal("
|
346
|
+
assert_equal("SomeClassTopLevel",
|
347
347
|
MirrorTypeSystem.classnameFromFilename("some_class.mirah"))
|
348
|
-
assert_equal("
|
348
|
+
assert_equal("FooBarTopLevel",
|
349
349
|
MirrorTypeSystem.classnameFromFilename("foo-bar.mirah"))
|
350
350
|
assert_equal(
|
351
|
-
"
|
351
|
+
"SomeClassTopLevel",
|
352
352
|
MirrorTypeSystem.classnameFromFilename("foo/bar/some_class.mirah"))
|
353
353
|
end
|
354
354
|
|
@@ -423,7 +423,7 @@ class MTS_MethodLookupTest < BaseMirrorsTest
|
|
423
423
|
@types.getMethodDefType(main_type, 'foobar', [], @types.getVoidType, nil)
|
424
424
|
type = @types.getMethodType(
|
425
425
|
CallFuture.new(@types, @scope, main_type, true, 'foobar', [], [], nil))
|
426
|
-
assert_resolved_to('
|
426
|
+
assert_resolved_to('LFooBarTopLevel;', type.resolve.returnType)
|
427
427
|
end
|
428
428
|
|
429
429
|
def test_multiple_method_defs
|
@@ -432,7 +432,7 @@ class MTS_MethodLookupTest < BaseMirrorsTest
|
|
432
432
|
type = @types.getMethodType(
|
433
433
|
CallFuture.new(@types, @scope, main_type, true, 'foobar', [], [], nil))
|
434
434
|
assert_not_error(type)
|
435
|
-
assert_resolved_to('
|
435
|
+
assert_resolved_to('LFooBarTopLevel;', type.resolve.returnType)
|
436
436
|
type = @types.getMethodType(
|
437
437
|
CallFuture.new(@types, @scope, main_type, true, 'foo', [], [], nil))
|
438
438
|
assert_not_error(type)
|
@@ -489,7 +489,7 @@ class MTS_MethodLookupTest < BaseMirrorsTest
|
|
489
489
|
end
|
490
490
|
|
491
491
|
def test_async_arguments
|
492
|
-
type = @types.wrap(Type.getType("
|
492
|
+
type = @types.wrap(Type.getType("LFooBarTopLevel;"))
|
493
493
|
@scope.selfType_set(type)
|
494
494
|
int = @types.wrap(Type.getType("I"))
|
495
495
|
short = @types.wrap(Type.getType("S"))
|
@@ -680,7 +680,7 @@ class MTS_MethodLookupTest < BaseMirrorsTest
|
|
680
680
|
|
681
681
|
method = CallFuture.new(
|
682
682
|
@types, @scope, main_type, true, 'class', [], [], nil)
|
683
|
-
assert_equal('java.lang.Class<
|
683
|
+
assert_equal('java.lang.Class<FooBarTopLevel>', method.resolve.toString)
|
684
684
|
end
|
685
685
|
|
686
686
|
def test_generic_method
|
@@ -691,7 +691,7 @@ class MTS_MethodLookupTest < BaseMirrorsTest
|
|
691
691
|
set = @types.get(@scope, typeref('java.util.Set'))
|
692
692
|
checked = CallFuture.new(
|
693
693
|
@types, @scope, collections, true, 'checkedSet', [set, klass], [], nil)
|
694
|
-
assert_equal('java.util.Set<
|
694
|
+
assert_equal('java.util.Set<FooBarTopLevel>', checked.resolve.toString)
|
695
695
|
end
|
696
696
|
|
697
697
|
def test_wildcard_return
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
require 'test/unit'
|
17
17
|
require 'java'
|
18
|
-
require 'dist/mirahc.jar
|
18
|
+
require ENV.fetch('MIRAHC_JAR',File.expand_path("../../../dist/mirahc.jar",__FILE__))
|
19
19
|
|
20
20
|
class SimpleAsyncMirrorLoaderTest < Test::Unit::TestCase
|
21
21
|
java_import 'org.objectweb.asm.Type'
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
require 'test/unit'
|
17
17
|
require 'java'
|
18
|
-
require 'dist/mirahc.jar
|
18
|
+
require ENV.fetch('MIRAHC_JAR',File.expand_path("../../../dist/mirahc.jar",__FILE__))
|
19
19
|
|
20
20
|
java_import 'org.mirah.jvm.mirrors.SimpleMirrorLoader'
|
21
21
|
java_import 'org.mirah.jvm.mirrors.BaseType'
|
Binary file
|
Binary file
|
data/test/test_helper.rb
CHANGED
@@ -53,7 +53,8 @@ module CommonAssertions
|
|
53
53
|
begin
|
54
54
|
yield
|
55
55
|
output.rewind
|
56
|
-
output.read
|
56
|
+
text = output.read
|
57
|
+
text.gsub("\r",'')
|
57
58
|
ensure
|
58
59
|
System.setOut(saved_output)
|
59
60
|
System.setErr(saved_err)
|
@@ -62,6 +63,12 @@ module CommonAssertions
|
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
66
|
+
def assert_run_output(expected, cls)
|
67
|
+
assert_output expected do
|
68
|
+
cls.main nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
65
72
|
def assert_output(expected, &block)
|
66
73
|
assert_equal(expected, capture_output(&block))
|
67
74
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mirah
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Charles Oliver Nutter
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-08-06 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: |-
|
16
16
|
Mirah is a customizable programming language featuring static types,
|
@@ -29,29 +29,27 @@ extra_rdoc_files:
|
|
29
29
|
- History.txt
|
30
30
|
- README.md
|
31
31
|
files:
|
32
|
-
- bin/bundler
|
33
32
|
- bin/mirah
|
34
33
|
- bin/mirah.cmd
|
35
34
|
- bin/mirahc
|
36
35
|
- bin/mirahc.cmd
|
37
|
-
- bin/rake
|
38
36
|
- lib/duby.rb
|
39
37
|
- lib/mirah.rb
|
40
38
|
- lib/mirah_task.rb
|
41
39
|
- lib/mirah/appengine_tasks.rb
|
42
|
-
- lib/mirah/compiler.rb
|
43
40
|
- lib/mirah/env.rb
|
44
41
|
- lib/mirah/errors.rb
|
45
|
-
- lib/mirah/parser.rb
|
46
42
|
- lib/mirah/transform.rb
|
47
43
|
- lib/mirah/typer.rb
|
48
44
|
- lib/mirah/version.rb
|
49
45
|
- lib/mirah/plugin/edb.rb
|
50
46
|
- lib/mirah/transform/ast_ext.rb
|
51
47
|
- lib/mirah/transform/transformer.rb
|
52
|
-
- lib/mirah/util/delegate.rb
|
53
48
|
- lib/mirah/util/logging.rb
|
54
49
|
- lib/mirah/util/process_errors.rb
|
50
|
+
- test/A.class
|
51
|
+
- test/newMirahClass$Closure2.class
|
52
|
+
- test/newMirahClass.class
|
55
53
|
- test/test_helper.rb
|
56
54
|
- test/artifacts/jar_test.rb
|
57
55
|
- test/artifacts/jruby_test.rb
|
@@ -63,16 +61,24 @@ files:
|
|
63
61
|
- test/core/util/class_loader_test.rb
|
64
62
|
- test/core/util/jvm_version_test.rb
|
65
63
|
- test/core/util/mirah_arguments_test.rb
|
64
|
+
- test/fixtures/cp1251_test.mirah
|
66
65
|
- test/fixtures/my.properties
|
66
|
+
- test/fixtures/utf8_test.mirah
|
67
67
|
- test/fixtures/org/foo/A.class
|
68
|
+
- test/fixtures/org/foo/AbstractExecutorJava8.java
|
69
|
+
- test/fixtures/org/foo/ClassWithSelfReferencingTypeParameter.java
|
68
70
|
- test/fixtures/org/foo/ImplicitClassRetAnno.java
|
71
|
+
- test/fixtures/org/foo/InnerInterfaceClass.java
|
72
|
+
- test/fixtures/org/foo/IntAnno.class
|
69
73
|
- test/fixtures/org/foo/IntAnno.java
|
70
74
|
- test/fixtures/org/foo/LowerCaseInnerClass.java
|
75
|
+
- test/fixtures/org/foo/TypeFixtureJava8.java
|
76
|
+
- test/jvm/access_levels_test.rb
|
71
77
|
- test/jvm/annotations_test.rb
|
72
78
|
- test/jvm/blocks_test.rb
|
73
79
|
- test/jvm/cast_test.rb
|
80
|
+
- test/jvm/closure_test.rb
|
74
81
|
- test/jvm/constructors_test.rb
|
75
|
-
- test/jvm/enumerable_test.rb
|
76
82
|
- test/jvm/example_test.rb
|
77
83
|
- test/jvm/generics_test.rb
|
78
84
|
- test/jvm/hash_test.rb
|
@@ -80,17 +86,24 @@ files:
|
|
80
86
|
- test/jvm/interface_test.rb
|
81
87
|
- test/jvm/jvm_commands_test.rb
|
82
88
|
- test/jvm/jvm_compiler_test.rb
|
83
|
-
- test/jvm/list_extensions_test.rb
|
84
89
|
- test/jvm/macros_test.rb
|
85
90
|
- test/jvm/main_method_test.rb
|
86
|
-
- test/jvm/mirror_compilation_test_helper.rb
|
87
91
|
- test/jvm/new_backend_test_helper.rb
|
88
|
-
- test/jvm/numeric_extensions_test.rb
|
89
92
|
- test/jvm/rescue_test.rb
|
90
93
|
- test/jvm/static_fields_test.rb
|
91
|
-
- test/jvm/
|
92
|
-
- test/jvm/string_extensions_test.rb
|
94
|
+
- test/jvm/string_test.rb
|
93
95
|
- test/jvm/varargs_test.rb
|
96
|
+
- test/jvm/extensions/array_extensions_test.rb
|
97
|
+
- test/jvm/extensions/collection_extensions_test.rb
|
98
|
+
- test/jvm/extensions/enumerable_test.rb
|
99
|
+
- test/jvm/extensions/hash_extensions_test.rb
|
100
|
+
- test/jvm/extensions/list_extensions_test.rb
|
101
|
+
- test/jvm/extensions/lock_extensions_test.rb
|
102
|
+
- test/jvm/extensions/numeric_extensions_test.rb
|
103
|
+
- test/jvm/extensions/numeric_operators_test.rb
|
104
|
+
- test/jvm/extensions/object_extensions_test.rb
|
105
|
+
- test/jvm/extensions/string_builder_extensions_test.rb
|
106
|
+
- test/jvm/extensions/string_extensions_test.rb
|
94
107
|
- test/mirrors/base_type_test.rb
|
95
108
|
- test/mirrors/bytecode_mirror_test.rb
|
96
109
|
- test/mirrors/generics_test.rb
|
@@ -101,10 +114,10 @@ files:
|
|
101
114
|
- test/mirrors/simple_mirror_loader_test.rb
|
102
115
|
- examples/bintrees.mirah
|
103
116
|
- examples/construction.mirah
|
104
|
-
- examples/edb.mirah
|
105
117
|
- examples/fib.mirah
|
106
118
|
- examples/fields.mirah
|
107
119
|
- examples/fractal.mirah
|
120
|
+
- examples/fractal.rb
|
108
121
|
- examples/interfaces.mirah
|
109
122
|
- examples/java_thing.mirah
|
110
123
|
- examples/literals.mirah
|
@@ -112,9 +125,7 @@ files:
|
|
112
125
|
- examples/sort_closure.mirah
|
113
126
|
- examples/swing.mirah
|
114
127
|
- examples/tak.mirah
|
115
|
-
- examples/test.edb
|
116
128
|
- examples/ant/example-build.xml
|
117
|
-
- examples/ant/example-build.xml~
|
118
129
|
- examples/ant/README.md
|
119
130
|
- examples/ant/build/Fib.class
|
120
131
|
- examples/appengine/Rakefile
|
@@ -158,12 +169,16 @@ files:
|
|
158
169
|
- examples/rosettacode/reverse-a-string.mirah
|
159
170
|
- examples/rosettacode/rot-13.mirah
|
160
171
|
- examples/rosettacode/secure-temporary-file.mirah
|
172
|
+
- examples/rosettacode/simple_character_math.mirah
|
161
173
|
- examples/rosettacode/sleep.mirah
|
162
174
|
- examples/rosettacode/sort-integer-array.mirah
|
163
175
|
- examples/rosettacode/string-case.mirah
|
164
176
|
- examples/rosettacode/string-length.mirah
|
165
177
|
- examples/rosettacode/user-input.mirah
|
166
178
|
- dist/mirahc.jar
|
179
|
+
- CHANGELOG.md
|
180
|
+
- CODE_OF_CONDUCT.md
|
181
|
+
- extensions_and_macros.md
|
167
182
|
- README.md
|
168
183
|
- TODO.md
|
169
184
|
- History.txt
|
data/bin/bundler
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'bundler' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require 'pathname'
|
10
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require 'rubygems'
|
14
|
-
require 'bundler/setup'
|
15
|
-
|
16
|
-
load Gem.bin_path('bundler', 'bundler')
|
data/bin/rake
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env jruby
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'rake' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require 'pathname'
|
10
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require 'rubygems'
|
14
|
-
require 'bundler/setup'
|
15
|
-
|
16
|
-
load Gem.bin_path('rake', 'rake')
|
data/examples/test.edb
DELETED
data/lib/mirah/compiler.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# Copyright (c) 2010 The Mirah project authors. All Rights Reserved.
|
2
|
-
# All contributing project authors may be found in the NOTICE file.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
|
16
|
-
module Mirah
|
17
|
-
module Compiler
|
18
|
-
class ASTCompiler
|
19
|
-
def initialize(config, compiler_class, logging)
|
20
|
-
@config = config
|
21
|
-
@compiler_class = compiler_class
|
22
|
-
@logging = logging
|
23
|
-
end
|
24
|
-
|
25
|
-
attr_accessor :compiler_class, :compiler, :logging
|
26
|
-
|
27
|
-
def compile_asts(nodes, scoper, typer)
|
28
|
-
results = []
|
29
|
-
puts "Compiling..." if logging
|
30
|
-
nodes.each do |ast|
|
31
|
-
puts " #{ast.position.source.name}" if logging
|
32
|
-
compile_ast(ast, scoper, typer) do |filename, builder|
|
33
|
-
if builder.respond_to?(:class_name)
|
34
|
-
class_name = builder.class_name
|
35
|
-
bytes = builder.generate
|
36
|
-
else
|
37
|
-
class_name = filename
|
38
|
-
bytes = String.from_java_bytes(builder)
|
39
|
-
filename = class_name.tr('.', '/') + ".class"
|
40
|
-
end
|
41
|
-
results << CompilerResult.new(filename, class_name, bytes)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
results
|
45
|
-
end
|
46
|
-
|
47
|
-
def compile_ast(ast, scoper, typer, &block)
|
48
|
-
@compiler = compiler_class.new(@config, scoper, typer)
|
49
|
-
compiler.visit(ast, nil)
|
50
|
-
compiler.generate(&block)
|
51
|
-
rescue java.lang.UnsupportedOperationException => ex
|
52
|
-
raise MirahError.new(ex.message)
|
53
|
-
rescue java.lang.Throwable => ex
|
54
|
-
ex.cause.printStackTrace if ex.cause
|
55
|
-
raise ex
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class CompilerResult
|
60
|
-
def initialize(filename, classname, bytes)
|
61
|
-
@filename, @classname, @bytes = filename, classname, bytes
|
62
|
-
end
|
63
|
-
|
64
|
-
attr_accessor :filename, :classname, :bytes
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|