mirah 0.1.4-java → 0.2.0-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 +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
|