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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/History.txt +531 -0
  5. data/README.md +23 -10
  6. data/Rakefile +239 -156
  7. data/TODO.md +71 -10
  8. data/bin/mirah +1 -1
  9. data/bin/mirahc +1 -1
  10. data/dist/mirahc.jar +0 -0
  11. data/examples/bintrees.mirah +2 -2
  12. data/examples/construction.mirah +2 -2
  13. data/examples/fields.mirah +1 -1
  14. data/examples/fractal.mirah +1 -1
  15. data/examples/fractal.rb +70 -0
  16. data/examples/interfaces.mirah +1 -1
  17. data/examples/java_thing.mirah +1 -1
  18. data/examples/macros/square.mirah +3 -3
  19. data/examples/macros/square_int.mirah +3 -3
  20. data/examples/macros/string_each_char.mirah +6 -6
  21. data/examples/rosettacode/100-doors.mirah +0 -2
  22. data/examples/rosettacode/count-occurrences-of-a-substring.mirah +3 -3
  23. data/examples/rosettacode/empty-string.mirah +1 -1
  24. data/examples/rosettacode/fizz-buzz.mirah +4 -4
  25. data/examples/rosettacode/is-string-numeric.mirah +7 -7
  26. data/examples/rosettacode/palindrome.mirah +2 -2
  27. data/examples/rosettacode/reverse-a-string.mirah +1 -1
  28. data/examples/rosettacode/rot-13.mirah +1 -1
  29. data/examples/{edb.mirah → rosettacode/simple_character_math.mirah} +13 -4
  30. data/examples/rosettacode/string-case.mirah +2 -2
  31. data/examples/rosettacode/string-length.mirah +1 -1
  32. data/examples/swing.mirah +9 -14
  33. data/extensions_and_macros.md +117 -0
  34. data/lib/mirah.rb +1 -1
  35. data/lib/mirah/errors.rb +3 -1
  36. data/lib/mirah/transform/ast_ext.rb +3 -2
  37. data/lib/mirah/util/process_errors.rb +1 -2
  38. data/lib/mirah/version.rb +1 -1
  39. data/test/A.class +0 -0
  40. data/test/core/util/jvm_version_test.rb +10 -0
  41. data/test/core/util/mirah_arguments_test.rb +51 -4
  42. data/test/fixtures/cp1251_test.mirah +7 -0
  43. data/test/fixtures/org/foo/AbstractExecutorJava8.java +30 -0
  44. data/test/fixtures/org/foo/ClassWithSelfReferencingTypeParameter.java +24 -0
  45. data/test/fixtures/org/foo/InnerInterfaceClass.java +12 -0
  46. data/test/fixtures/org/foo/IntAnno.class +0 -0
  47. data/test/fixtures/org/foo/TypeFixtureJava8.java +10 -0
  48. data/test/fixtures/utf8_test.mirah +7 -0
  49. data/test/jvm/access_levels_test.rb +31 -0
  50. data/test/jvm/annotations_test.rb +3 -6
  51. data/test/jvm/blocks_test.rb +303 -120
  52. data/test/jvm/cast_test.rb +123 -50
  53. data/test/jvm/closure_test.rb +242 -0
  54. data/test/jvm/constructors_test.rb +1 -3
  55. data/test/jvm/example_test.rb +6 -2
  56. data/test/jvm/extensions/array_extensions_test.rb +181 -0
  57. data/test/jvm/extensions/collection_extensions_test.rb +195 -0
  58. data/test/jvm/{enumerable_test.rb → extensions/enumerable_test.rb} +81 -13
  59. data/test/jvm/extensions/hash_extensions_test.rb +56 -0
  60. data/test/jvm/extensions/list_extensions_test.rb +143 -0
  61. data/test/jvm/extensions/lock_extensions_test.rb +43 -0
  62. data/test/jvm/{numeric_extensions_test.rb → extensions/numeric_extensions_test.rb} +0 -0
  63. data/test/jvm/extensions/numeric_operators_test.rb +86 -0
  64. data/test/jvm/extensions/object_extensions_test.rb +122 -0
  65. data/test/jvm/{string_builder_extensions_test.rb → extensions/string_builder_extensions_test.rb} +0 -0
  66. data/test/jvm/{string_extensions_test.rb → extensions/string_extensions_test.rb} +57 -4
  67. data/test/jvm/generics_test.rb +14 -6
  68. data/test/jvm/import_test.rb +38 -1
  69. data/test/jvm/interface_test.rb +17 -0
  70. data/test/jvm/jvm_commands_test.rb +9 -0
  71. data/test/jvm/jvm_compiler_test.rb +568 -43
  72. data/test/jvm/macros_test.rb +343 -19
  73. data/test/jvm/main_method_test.rb +1 -3
  74. data/test/jvm/new_backend_test_helper.rb +54 -7
  75. data/test/jvm/rescue_test.rb +20 -5
  76. data/test/jvm/static_fields_test.rb +52 -10
  77. data/test/jvm/{mirror_compilation_test_helper.rb → string_test.rb} +10 -9
  78. data/test/jvm/varargs_test.rb +6 -16
  79. data/test/mirrors/base_type_test.rb +20 -7
  80. data/test/mirrors/bytecode_mirror_test.rb +8 -3
  81. data/test/mirrors/generics_test.rb +89 -10
  82. data/test/mirrors/member_test.rb +1 -1
  83. data/test/mirrors/method_lookup_test.rb +10 -3
  84. data/test/mirrors/mirrors_test.rb +20 -20
  85. data/test/mirrors/simple_async_mirror_loader_test.rb +1 -1
  86. data/test/mirrors/simple_mirror_loader_test.rb +1 -1
  87. data/test/newMirahClass$Closure2.class +0 -0
  88. data/test/newMirahClass.class +0 -0
  89. data/test/test_helper.rb +8 -1
  90. metadata +31 -16
  91. data/bin/bundler +0 -16
  92. data/bin/rake +0 -16
  93. data/examples/ant/example-build.xml~ +0 -7
  94. data/examples/test.edb +0 -9
  95. data/lib/mirah/compiler.rb +0 -67
  96. data/lib/mirah/parser.rb +0 -224
  97. data/lib/mirah/util/delegate.rb +0 -65
  98. data/test/jvm/list_extensions_test.rb +0 -23
@@ -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 MembersTest < Test::Unit::TestCase
21
21
  java_import 'org.mirah.jvm.mirrors.Member'
@@ -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("LFooBar;", main_type)
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("LSomeClass;", main_type)
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/FooBar;", main_type)
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("LFooBar;", @types.getSuperClass(type))
273
+ assert_descriptor("LFooBarTopLevel;", @types.getSuperClass(type))
274
274
  end
275
275
 
276
276
  def test_define_inner_class_type
277
- type = define_type("Subclass$Inner", main_type)
278
- assert_descriptor("LSubclass$Inner;", type)
279
- assert_descriptor("LFooBar;", @types.getSuperClass(type))
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, "FooBar", nil, [])
285
- assert_descriptor("LFooBar;", type)
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("SomeClass",
342
+ assert_equal("SomeClassTopLevel",
343
343
  MirrorTypeSystem.classnameFromFilename("SomeClass.mirah"))
344
- assert_equal("FooBar",
344
+ assert_equal("FooBarTopLevel",
345
345
  MirrorTypeSystem.classnameFromFilename("FooBar.mirah"))
346
- assert_equal("SomeClass",
346
+ assert_equal("SomeClassTopLevel",
347
347
  MirrorTypeSystem.classnameFromFilename("some_class.mirah"))
348
- assert_equal("FooBar",
348
+ assert_equal("FooBarTopLevel",
349
349
  MirrorTypeSystem.classnameFromFilename("foo-bar.mirah"))
350
350
  assert_equal(
351
- "SomeClass",
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('LFooBar;', type.resolve.returnType)
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('LFooBar;', type.resolve.returnType)
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("LFooBar;"))
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<FooBar>', method.resolve.toString)
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<FooBar>', checked.resolve.toString)
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
@@ -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.1.4
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: 2014-11-13 00:00:00.000000000 Z
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/string_builder_extensions_test.rb
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
@@ -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')
@@ -1,7 +0,0 @@
1
- <project name="test">
2
- <taskdef name="dubyc" classname="org.mirah.ant.Compile"/>
3
-
4
- <target name="blah">
5
- <dubyc src="examples/fib.duby" target="build"/>
6
- </target>
7
- </project>
@@ -1,9 +0,0 @@
1
- <html>
2
- <head>
3
- <title><%= @message %></title>
4
- </head>
5
- <body>
6
- <h1><%= @message %></h1>
7
- </body>
8
- </html>
9
-
@@ -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