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.
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