mirah 0.1.2-java → 0.1.3-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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +225 -0
  3. data/Rakefile +108 -315
  4. data/TODO.md +100 -0
  5. data/bin/bundler +16 -0
  6. data/bin/rake +16 -0
  7. data/dist/mirahc.jar +0 -0
  8. data/examples/appengine/Readme +0 -1
  9. data/examples/literals.mirah +17 -0
  10. data/examples/macros/string_each_char.mirah +1 -1
  11. data/lib/mirah.rb +11 -21
  12. data/lib/mirah/transform/transformer.rb +1 -2
  13. data/lib/mirah/util/class_loader.rb +1 -1
  14. data/lib/mirah/util/logging.rb +0 -63
  15. data/lib/mirah/util/process_errors.rb +1 -0
  16. data/lib/mirah/version.rb +1 -1
  17. data/{examples/simple_class.mirah~ → test/artifacts/jar_test.rb} +7 -11
  18. data/{lib/mirah/commands.rb → test/artifacts/jruby_test.rb} +8 -5
  19. data/test/core/typer_test.rb +29 -11
  20. data/test/core/util/argument_processor_test.rb +24 -23
  21. data/test/core/util/class_loader_test.rb +7 -4
  22. data/test/core/util/{compilation_state_test.rb → jvm_version_test.rb} +20 -16
  23. data/test/fixtures/org/foo/ImplicitClassRetAnno.java +4 -0
  24. data/test/fixtures/org/foo/IntAnno.java +9 -0
  25. data/test/jvm/annotations_test.rb +11 -11
  26. data/test/jvm/blocks_test.rb +16 -12
  27. data/test/jvm/constructors_test.rb +8 -8
  28. data/test/jvm/enumerable_test.rb +48 -24
  29. data/test/jvm/generics_test.rb +3 -7
  30. data/test/jvm/import_test.rb +14 -0
  31. data/test/jvm/interface_test.rb +9 -24
  32. data/test/jvm/jvm_commands_test.rb +22 -4
  33. data/test/jvm/jvm_compiler_test.rb +124 -79
  34. data/test/jvm/list_extensions_test.rb +1 -1
  35. data/test/jvm/macros_test.rb +67 -14
  36. data/test/jvm/main_method_test.rb +1 -1
  37. data/test/jvm/new_backend_test_helper.rb +100 -3
  38. data/{lib/mirah/jvm/types/bitescript_ext.rb → test/jvm/static_fields_test.rb} +22 -21
  39. data/test/mirrors/base_type_test.rb +4 -3
  40. data/test/mirrors/bytecode_mirror_test.rb +35 -15
  41. data/test/mirrors/generics_test.rb +14 -5
  42. data/test/mirrors/member_test.rb +2 -1
  43. data/test/mirrors/method_lookup_test.rb +18 -6
  44. data/test/mirrors/mirrors_test.rb +87 -20
  45. data/test/mirrors/simple_async_mirror_loader_test.rb +7 -3
  46. data/test/mirrors/simple_mirror_loader_test.rb +5 -5
  47. data/test/test_helper.rb +25 -1
  48. metadata +18 -78
  49. data/bin/mirahp +0 -27
  50. data/bin/mirahp.cmd +0 -16
  51. data/examples/Fib.class +0 -0
  52. data/javalib/mirah-bootstrap.jar +0 -0
  53. data/javalib/mirah-builtins.jar +0 -0
  54. data/javalib/mirah-compiler.jar +0 -0
  55. data/javalib/mirah-mirrors.jar +0 -0
  56. data/javalib/mirah-newast-transitional.jar +0 -0
  57. data/javalib/mirah-parser.jar +0 -0
  58. data/javalib/mirah-util.jar +0 -0
  59. data/lib/mirah/ast.rb +0 -43
  60. data/lib/mirah/ast/scope.rb +0 -262
  61. data/lib/mirah/commands/base.rb +0 -59
  62. data/lib/mirah/commands/compile.rb +0 -39
  63. data/lib/mirah/commands/parse.rb +0 -36
  64. data/lib/mirah/commands/run.rb +0 -78
  65. data/lib/mirah/generator.rb +0 -150
  66. data/lib/mirah/jvm/compiler.rb +0 -50
  67. data/lib/mirah/jvm/compiler/base.rb +0 -421
  68. data/lib/mirah/jvm/compiler/jvm_bytecode.rb +0 -1194
  69. data/lib/mirah/jvm/method_lookup.rb +0 -307
  70. data/lib/mirah/jvm/types.rb +0 -45
  71. data/lib/mirah/jvm/types/array_type.rb +0 -60
  72. data/lib/mirah/jvm/types/ast_ext.rb +0 -31
  73. data/lib/mirah/jvm/types/basic_types.rb +0 -41
  74. data/lib/mirah/jvm/types/block_type.rb +0 -15
  75. data/lib/mirah/jvm/types/boolean.rb +0 -70
  76. data/lib/mirah/jvm/types/enumerable.rb +0 -80
  77. data/lib/mirah/jvm/types/extensions.rb +0 -110
  78. data/lib/mirah/jvm/types/factory.rb +0 -830
  79. data/lib/mirah/jvm/types/floats.rb +0 -99
  80. data/lib/mirah/jvm/types/generic_type.rb +0 -72
  81. data/lib/mirah/jvm/types/implicit_nil_type.rb +0 -29
  82. data/lib/mirah/jvm/types/integers.rb +0 -131
  83. data/lib/mirah/jvm/types/interface_definition.rb +0 -20
  84. data/lib/mirah/jvm/types/intrinsics.rb +0 -385
  85. data/lib/mirah/jvm/types/literals.rb +0 -89
  86. data/lib/mirah/jvm/types/meta_type.rb +0 -54
  87. data/lib/mirah/jvm/types/methods.rb +0 -946
  88. data/lib/mirah/jvm/types/null_type.rb +0 -39
  89. data/lib/mirah/jvm/types/number.rb +0 -184
  90. data/lib/mirah/jvm/types/primitive_type.rb +0 -76
  91. data/lib/mirah/jvm/types/source_mirror.rb +0 -274
  92. data/lib/mirah/jvm/types/type.rb +0 -311
  93. data/lib/mirah/jvm/types/type_definition.rb +0 -72
  94. data/lib/mirah/jvm/types/void_type.rb +0 -19
  95. data/lib/mirah/util/compilation_state.rb +0 -60
  96. data/test/core/commands_test.rb +0 -89
  97. data/test/core/generator_test.rb +0 -26
  98. data/test/fixtures/org/foo/LowerCaseInnerClass$inner.class +0 -0
  99. data/test/fixtures/org/foo/LowerCaseInnerClass.class +0 -0
  100. data/test/jvm/bytecode_test_helper.rb +0 -193
  101. data/test/jvm/factory_test.rb +0 -28
  102. data/test/jvm/java_typer_test.rb +0 -283
@@ -15,7 +15,8 @@
15
15
 
16
16
  require 'java'
17
17
  require 'test/unit'
18
- require 'mirah'
18
+ require 'java'
19
+ require 'dist/mirahc.jar'
19
20
 
20
21
  class GenericsTest < Test::Unit::TestCase
21
22
  java_import 'java.util.HashSet'
@@ -31,7 +32,7 @@ class GenericsTest < Test::Unit::TestCase
31
32
  java_import 'org.mirah.jvm.model.Cycle'
32
33
  java_import 'org.mirah.jvm.model.IntersectionType'
33
34
  java_import 'org.mirah.typer.BaseTypeFuture'
34
- java_import 'org.jruby.org.objectweb.asm.Type'
35
+ java_import 'org.objectweb.asm.Type'
35
36
  java_import 'javax.lang.model.util.Types'
36
37
 
37
38
  def setup
@@ -717,6 +718,14 @@ class GenericsTest < Test::Unit::TestCase
717
718
  ], m.values.map{|x| x.toString})
718
719
  end
719
720
 
721
+ def test_raw_lub
722
+ a = g('java.lang.Iterable', [type('java.lang.String')])
723
+ b = a.erasure
724
+ lub = LubFinder.new(@types.context)
725
+ c = lub.leastUpperBound([a, b])
726
+ assert_equal(b.toString, c.toString)
727
+ end
728
+
720
729
  def test_minimizeErasedCandidates
721
730
  lub = LubFinder.new(@types.context)
722
731
  t = set(@types.getStringType.resolve)
@@ -727,7 +736,7 @@ class GenericsTest < Test::Unit::TestCase
727
736
  lub.minimizeErasedCandidates(candidates.key_set)
728
737
  assert_equal(['java.util.Collection'],
729
738
  candidates.key_set.map{|x| x.toString})
730
- candidates = HashSet.new(candidates.values.iterator.next.map {|x| x.toString})
739
+ candidates = HashSet.new(candidates.values.first.map {|x| x.toString})
731
740
  assert_equal(HashSet.new(
732
741
  ["java.util.Collection<java.lang.String>",
733
742
  "java.util.Collection<java.lang.CharSequence>"
@@ -746,7 +755,7 @@ class GenericsTest < Test::Unit::TestCase
746
755
 
747
756
  a = set(string)
748
757
  lub = finder.leastUpperBound([a, a])
749
- assert_equal(a, lub, lub.toString)
758
+ assert(a.isSameType(lub), lub.toString)
750
759
 
751
760
  b = g('java.lang.Iterable', [type('java.io.Serializable')])
752
761
  lub = finder.leastUpperBound([a, b])
@@ -763,7 +772,7 @@ class GenericsTest < Test::Unit::TestCase
763
772
  string = type('java.lang.String')
764
773
  integer = type('java.lang.Integer')
765
774
  lub = finder.leastUpperBound([string, integer])
766
- assert_match(/\? extends java\.lang\.Comparable<\? extends ...>/,
775
+ assert_match(/java\.lang\.Comparable<\? extends ...>/,
767
776
  lub.toString)
768
777
  end
769
778
 
@@ -14,7 +14,8 @@
14
14
  # limitations under the License.
15
15
 
16
16
  require 'test/unit'
17
- require 'mirah'
17
+ require 'java'
18
+ require 'dist/mirahc.jar'
18
19
 
19
20
  class MembersTest < Test::Unit::TestCase
20
21
  java_import 'org.mirah.jvm.mirrors.Member'
@@ -14,7 +14,8 @@
14
14
  # limitations under the License.
15
15
 
16
16
  require 'test/unit'
17
- require 'mirah'
17
+ require 'java'
18
+ require 'dist/mirahc.jar'
18
19
 
19
20
  class BaseMethodLookupTest < Test::Unit::TestCase
20
21
  java_import 'org.mirah.jvm.mirrors.MirrorTypeSystem'
@@ -25,11 +26,13 @@ class BaseMethodLookupTest < Test::Unit::TestCase
25
26
  java_import 'org.mirah.jvm.mirrors.FakeMember'
26
27
  java_import 'org.mirah.jvm.mirrors.Member'
27
28
  java_import 'org.mirah.jvm.mirrors.MetaType'
29
+ java_import 'org.mirah.jvm.mirrors.MirrorProxy'
30
+ java_import 'org.mirah.jvm.mirrors.NullType'
28
31
  java_import 'org.mirah.jvm.types.MemberKind'
29
32
  java_import 'org.mirah.typer.BaseTypeFuture'
30
33
  java_import 'org.mirah.typer.ErrorType'
31
- java_import 'org.jruby.org.objectweb.asm.Opcodes'
32
- java_import 'org.jruby.org.objectweb.asm.Type'
34
+ java_import 'org.objectweb.asm.Opcodes'
35
+ java_import 'org.objectweb.asm.Type'
33
36
 
34
37
  class FakeMirror < BaseType
35
38
  def initialize(desc, superclass=nil, flags=Opcodes.ACC_PUBLIC)
@@ -166,6 +169,13 @@ class MethodLookupTest < BaseMethodLookupTest
166
169
  array("Ljava/util/AbstractMap;"))
167
170
  end
168
171
 
172
+ def test_null_subtype
173
+ null = MirrorProxy.new(NullType.new)
174
+ object = wrap("Ljava/lang/Object;")
175
+ assert(MethodLookup.isSubType(null, object))
176
+ assert(MethodLookup.isSubType(null, wrap("Ljava/lang/String;")))
177
+ end
178
+
169
179
  def test_subtype_comparison
170
180
  double = wrap('D')
171
181
  int = wrap('I')
@@ -323,9 +333,11 @@ class MethodLookupTest < BaseMethodLookupTest
323
333
  type = @lookup.findMethod(@scope, wrap('Ljava/lang/Object;'), 'registerNatives', [], nil, nil, false).resolve
324
334
  assert(type.isError)
325
335
  assert_equal('Cannot access java.lang.Object.registerNatives() from Foo', type.message[0][0])
326
- type = @lookup.findMethod(@scope, wrap('Ljava/lang/Object;'), 'clone', [], nil, nil, false).resolve
327
- assert(type.isError)
328
- assert_equal('Cannot access java.lang.Object.clone() from Foo', type.message[0][0])
336
+ pend "Can't tell the difference between 'super' random protected methods" do
337
+ type = @lookup.findMethod(@scope, wrap('Ljava/lang/Object;'), 'clone', [], nil, nil, false).resolve
338
+ assert(type.isError)
339
+ assert_equal('Cannot access java.lang.Object.clone() from Foo', type.message[0][0])
340
+ end
329
341
  # TODO test ambiguous
330
342
  # TODO check calling instance method from static scope.
331
343
  end
@@ -13,8 +13,9 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- require 'test/unit'
17
- require 'mirah'
16
+
17
+ require "test_helper"
18
+ require 'dist/mirahc.jar'
18
19
 
19
20
  class BaseMirrorsTest < Test::Unit::TestCase
20
21
  java_import 'org.mirah.jvm.mirrors.MirrorTypeSystem'
@@ -31,8 +32,8 @@ class BaseMirrorsTest < Test::Unit::TestCase
31
32
  java_import 'mirah.lang.ast.Script'
32
33
  java_import 'mirah.lang.ast.StringCodeSource'
33
34
  java_import 'mirah.lang.ast.TypeRefImpl'
34
- java_import 'org.jruby.org.objectweb.asm.Opcodes'
35
- java_import 'org.jruby.org.objectweb.asm.Type'
35
+ java_import 'org.objectweb.asm.Opcodes'
36
+ java_import 'org.objectweb.asm.Type'
36
37
 
37
38
  def setup
38
39
  @types = MirrorTypeSystem.new
@@ -47,8 +48,8 @@ class BaseMirrorsTest < Test::Unit::TestCase
47
48
 
48
49
  def assert_descriptor(descriptor, type)
49
50
  assert(type.isResolved, type.resolve.toString)
50
- assert_resolved_to(descriptor, type.resolve)
51
51
  assert_not_error(type)
52
+ assert_resolved_to(descriptor, type.resolve)
52
53
  end
53
54
 
54
55
  def assert_resolved_to(descriptor, resolved)
@@ -57,7 +58,7 @@ class BaseMirrorsTest < Test::Unit::TestCase
57
58
  end
58
59
 
59
60
  def assert_error(type)
60
- assert_block("Excpected #{type.resolve} to be an error") {
61
+ assert_block("Expected #{type.resolve} to be an error") {
61
62
  type.resolve.isError
62
63
  }
63
64
  end
@@ -217,13 +218,13 @@ class MirrorsTest < BaseMirrorsTest
217
218
 
218
219
  def test_meta_resolved
219
220
  type = @types.getStringType.resolve
220
- assert_false(type.isMeta)
221
+ assert(!type.isMeta)
221
222
  assert(@types.getMetaType(type).isMeta)
222
223
  end
223
224
 
224
225
  def test_meta_future
225
226
  type = @types.getStringType
226
- assert_false(type.resolve.isMeta)
227
+ assert(!type.resolve.isMeta)
227
228
  assert(@types.getMetaType(type).resolve.isMeta)
228
229
  end
229
230
 
@@ -395,6 +396,14 @@ class MTS_MethodLookupTest < BaseMirrorsTest
395
396
  assert_resolved_to('I', type.resolve.returnType)
396
397
  end
397
398
 
399
+ def test_method_def_nil
400
+ @types.getMethodDefType(main_type, 'foobar', [], @types.getNullType, nil)
401
+ type = @types.getMethodType(
402
+ CallFuture.new(@types, @scope, main_type, true, 'foobar', [], [], nil))
403
+ assert_not_equal('null', type.resolve.returnType.name)
404
+ assert_resolved_to('Ljava/lang/Object;', type.resolve.returnType)
405
+ end
406
+
398
407
  def test_async_return_type
399
408
  future = BaseTypeFuture.new
400
409
  @types.getMethodDefType(main_type, 'foo', [], future, nil)
@@ -478,24 +487,74 @@ class MTS_MethodLookupTest < BaseMirrorsTest
478
487
  assert_resolved_to('S', call_future.resolve)
479
488
  end
480
489
 
481
- def test_async_param_superclass
490
+ def test_main_type_not_error
482
491
  assert_not_error(main_type)
492
+ end
493
+
494
+ def test_when_superclass_unresolved_then_call_futures_in_error
483
495
  super_future = BaseTypeFuture.new
484
- b = @types.defineType(@scope, ClassDefinition.new, "B", super_future, [])
485
- a = @types.defineType(@scope, ClassDefinition.new, "A", b, [])
486
- c = @types.defineType(@scope, ClassDefinition.new, "C", nil, [])
496
+ subclass = @types.defineType(@scope, ClassDefinition.new, "Subclass", super_future, [])
497
+ superclass = @types.defineType(@scope, ClassDefinition.new, "UltimateSuperClass", nil, [])
487
498
  decl = AssignableTypeFuture.new(nil)
488
- decl.declare(c, nil)
499
+ decl.declare(superclass, nil)
489
500
 
490
501
  @types.getMethodDefType(main_type, 'foobar', [decl],
491
502
  @types.getFixnumType(0), nil)
492
- type1 = CallFuture.new(@types, @scope, main_type, true, 'foobar', [b], [], nil)
493
- assert_error(type1)
494
- type2 = CallFuture.new(@types, @scope, main_type, true, 'foobar', [b], [], nil)
495
- assert_error(type2)
496
- super_future.resolved(c.resolve)
497
- assert_descriptor("I", type1)
498
- assert_descriptor("I", type2)
503
+ type = CallFuture.new(@types, @scope, main_type, true, 'foobar', [subclass], [], nil)
504
+ assert_error(type)
505
+ end
506
+
507
+ def test_when_superclass_of_superclass_unresolved_then_call_future_in_error
508
+ super_future = BaseTypeFuture.new
509
+ subclass = @types.defineType(@scope, ClassDefinition.new, "Subclass", super_future, [])
510
+ sub_subclass = @types.defineType(@scope, ClassDefinition.new, "SubSubclass", super_future, [])
511
+ superclass = @types.defineType(@scope, ClassDefinition.new, "UltimateSuperClass", nil, [])
512
+ decl = AssignableTypeFuture.new(nil)
513
+ decl.declare(superclass, nil)
514
+
515
+ @types.getMethodDefType(main_type, 'foobar', [decl],
516
+ @types.getFixnumType(0), nil)
517
+ type = CallFuture.new(@types, @scope, main_type, true, 'foobar', [sub_subclass], [], nil)
518
+ assert_error(type)
519
+ end
520
+
521
+ def test_after_unresolved_superclass_resolves_then_call_future_not_error
522
+ super_future = BaseTypeFuture.new
523
+ subclass = @types.defineType(@scope, ClassDefinition.new, "Subclass", super_future, [])
524
+ superclass = @types.defineType(@scope, ClassDefinition.new, "UltimateSuperClass", nil, [])
525
+ decl = AssignableTypeFuture.new(nil)
526
+ decl.declare(superclass, nil)
527
+
528
+ @types.getMethodDefType(main_type, 'foobar', [decl],
529
+ @types.getFixnumType(0), nil)
530
+
531
+ type = CallFuture.new(@types, @scope, main_type, true, 'foobar', [subclass], [], nil)
532
+
533
+ super_future.resolved(superclass.resolve)
534
+
535
+ assert_descriptor("I", type)
536
+ end
537
+
538
+ def test_after_unresolved_superclass_of_superclass_resolves_then_call_future_not_error
539
+ super_future = BaseTypeFuture.new
540
+ subclass = @types.defineType(@scope, ClassDefinition.new, "Subclass", super_future, [])
541
+ sub_subclass = @types.defineType(@scope, ClassDefinition.new, "SubSubclass", super_future, [])
542
+ superclass = @types.defineType(@scope, ClassDefinition.new, "UltimateSuperClass", nil, [])
543
+ decl = AssignableTypeFuture.new(nil)
544
+ decl.declare(superclass, nil)
545
+ @types.getMethodDefType(main_type, 'foobar', [decl],
546
+ @types.getFixnumType(0), nil)
547
+ type = CallFuture.new(@types, @scope, main_type, true, 'foobar', [sub_subclass], [], nil)
548
+
549
+ super_future.resolved(superclass.resolve)
550
+
551
+ assert_descriptor("I", type)
552
+ end
553
+
554
+ def test_nulltype_methods
555
+ type = CallFuture.new(@types, @scope, @types.getNullType, true, 'nil?', [], [], nil)
556
+ assert_not_error(type)
557
+ assert_descriptor('Z', type)
499
558
  end
500
559
 
501
560
  def test_super_in_constructor
@@ -591,6 +650,14 @@ class MTS_MethodLookupTest < BaseMirrorsTest
591
650
  assert_equal('java.util.Set<FooBar>', checked.resolve.toString)
592
651
  end
593
652
 
653
+ def test_wildcard_return
654
+ loader = @types.get(@scope, typeref('java.lang.ClassLoader'))
655
+ klass = CallFuture.new(
656
+ @types, @scope, loader, true, 'loadClass',
657
+ [@types.getStringType], [], nil)
658
+ assert(klass.resolve.assignableFrom(klass.resolve), klass.resolve.toString)
659
+ end
660
+
594
661
  def test_nil_argument
595
662
  sb = @types.get(@scope, typeref('java.lang.StringBuilder'))
596
663
  result = CallFuture.new(@types, @scope, sb, true, 'append', [@types.getNullType], [], nil)
@@ -14,16 +14,16 @@
14
14
  # limitations under the License.
15
15
 
16
16
  require 'test/unit'
17
- require 'mirah'
17
+ require 'java'
18
+ require 'dist/mirahc.jar'
18
19
 
19
20
  class SimpleAsyncMirrorLoaderTest < Test::Unit::TestCase
20
- java_import 'org.jruby.org.objectweb.asm.Type'
21
+ java_import 'org.objectweb.asm.Type'
21
22
  java_import 'org.mirah.jvm.mirrors.BaseType'
22
23
  java_import 'org.mirah.jvm.mirrors.MirrorType'
23
24
  java_import 'org.mirah.jvm.mirrors.SimpleAsyncMirrorLoader'
24
25
  java_import 'org.mirah.jvm.mirrors.AsyncLoaderAdapter'
25
26
  java_import 'org.mirah.jvm.mirrors.PrimitiveLoader'
26
- java_import 'org.mirah.jvm.mirrors.ClassPath'
27
27
  java_import 'org.mirah.jvm.types.JVMTypeUtils'
28
28
  java_import 'org.mirah.typer.BaseTypeFuture'
29
29
  java_import 'org.mirah.typer.ErrorType'
@@ -94,6 +94,8 @@ class SimpleAsyncMirrorLoaderTest < Test::Unit::TestCase
94
94
  end
95
95
 
96
96
  def test_array
97
+ pend "undefined ClassPath class" do
98
+
97
99
  context = Context.new
98
100
  classpath = ClassPath.new
99
101
  classpath.bytecode_loader_set PrimitiveLoader.new(context)
@@ -106,5 +108,7 @@ class SimpleAsyncMirrorLoaderTest < Test::Unit::TestCase
106
108
  assert(JVMTypeUtils.isArray(future.resolve))
107
109
  assert_equal('LA;', future.resolve.getComponentType.asm_type.descriptor)
108
110
  assert(!future.resolve.getComponentType.isError)
111
+
112
+ end
109
113
  end
110
114
  end
@@ -14,8 +14,8 @@
14
14
  # limitations under the License.
15
15
 
16
16
  require 'test/unit'
17
- require 'mirah'
18
-
17
+ require 'java'
18
+ require 'dist/mirahc.jar'
19
19
 
20
20
  java_import 'org.mirah.jvm.mirrors.SimpleMirrorLoader'
21
21
  java_import 'org.mirah.jvm.mirrors.BaseType'
@@ -34,7 +34,7 @@ class ParentLoader < SimpleMirrorLoader
34
34
  end
35
35
 
36
36
  class SimpleMirrorLoaderTest < Test::Unit::TestCase
37
- java_import 'org.jruby.org.objectweb.asm.Type'
37
+ java_import 'org.objectweb.asm.Type'
38
38
 
39
39
  def setup
40
40
  @parent = ParentLoader.new
@@ -63,7 +63,7 @@ end
63
63
 
64
64
  class PrimitiveLoaderTest < Test::Unit::TestCase
65
65
  java_import 'org.mirah.jvm.mirrors.PrimitiveLoader'
66
- java_import 'org.jruby.org.objectweb.asm.Type'
66
+ java_import 'org.objectweb.asm.Type'
67
67
 
68
68
  def test_primitives
69
69
  loader = PrimitiveLoader.new(nil)
@@ -85,7 +85,7 @@ end
85
85
 
86
86
  class OrErrorLoaderTest < Test::Unit::TestCase
87
87
  java_import 'org.mirah.jvm.mirrors.OrErrorLoader'
88
- java_import 'org.jruby.org.objectweb.asm.Type'
88
+ java_import 'org.objectweb.asm.Type'
89
89
 
90
90
  def test_loader
91
91
  loader = OrErrorLoader.new(nil)
@@ -12,7 +12,11 @@
12
12
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
- require 'bundler/setup'
15
+ begin
16
+ require 'bundler/setup'
17
+ rescue LoadError
18
+ puts "couldn't load bundler. Check your environment."
19
+ end
16
20
  require 'test/unit'
17
21
  require 'mirah'
18
22
  require 'jruby'
@@ -38,10 +42,12 @@ module CommonAssertions
38
42
 
39
43
  def capture_output
40
44
  saved_output = System.out
45
+ saved_err = System.err
41
46
  saved_stdout = $stdout
42
47
  saved_stderr = $stderr
43
48
  output = StringIO.new
44
49
  System.setOut(PrintStream.new(output.to_outputstream))
50
+ System.setErr(PrintStream.new(output.to_outputstream))
45
51
  $stdout = output
46
52
  $stderr = output
47
53
  begin
@@ -50,6 +56,7 @@ module CommonAssertions
50
56
  output.read
51
57
  ensure
52
58
  System.setOut(saved_output)
59
+ System.setErr(saved_err)
53
60
  $stdout = saved_stdout
54
61
  $stderr = saved_stderr
55
62
  end
@@ -59,8 +66,25 @@ module CommonAssertions
59
66
  assert_equal(expected, capture_output(&block))
60
67
  end
61
68
 
69
+ def pend_on_jruby version
70
+ if JRUBY_VERSION == version
71
+ pend("doesn't work on #{version}") { yield }
72
+ else
73
+ yield
74
+ end
75
+ end
76
+ end
77
+
78
+ module DebuggingHelp
79
+ def with_finest_logging
80
+ Mirah::Logging::MirahLogger.level = Mirah::Logging::Level::FINEST
81
+ yield
82
+ ensure
83
+ Mirah::Logging::MirahLogger.level = Mirah::Logging::Level::INFO
84
+ end
62
85
  end
63
86
 
64
87
  class Test::Unit::TestCase
65
88
  include CommonAssertions
89
+ include DebuggingHelp
66
90
  end
metadata CHANGED
@@ -1,30 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mirah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: java
6
6
  authors:
7
7
  - Charles Oliver Nutter
8
8
  - Ryan Brown
9
+ - Nick Howard
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-01-05 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bitescript
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - '>='
19
- - !ruby/object:Gem::Version
20
- version: 0.1.4
21
- requirement: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - '>='
24
- - !ruby/object:Gem::Version
25
- version: 0.1.4
26
- prerelease: false
27
- type: :runtime
13
+ date: 2014-08-07 00:00:00.000000000 Z
14
+ dependencies: []
28
15
  description: |-
29
16
  Mirah is a customizable programming language featuring static types,
30
17
  local type inference and a heavily Ruby-inspired syntax. Mirah
@@ -33,108 +20,66 @@ description: |-
33
20
  email:
34
21
  - headius@headius.com
35
22
  - ribrdb@google.com
23
+ - ndh@baroquebobcat.com
36
24
  executables:
37
25
  - mirah
38
26
  - mirahc
39
- - mirahp
40
27
  extensions: []
41
28
  extra_rdoc_files:
42
29
  - History.txt
43
30
  - README.md
44
31
  files:
32
+ - bin/bundler
45
33
  - bin/mirah
46
34
  - bin/mirah.cmd
47
35
  - bin/mirahc
48
36
  - bin/mirahc.cmd
49
- - bin/mirahp
50
- - bin/mirahp.cmd
37
+ - bin/rake
51
38
  - lib/duby.rb
52
39
  - lib/mirah.rb
53
40
  - lib/mirah_task.rb
54
41
  - lib/mirah/appengine_tasks.rb
55
- - lib/mirah/ast.rb
56
- - lib/mirah/commands.rb
57
42
  - lib/mirah/compiler.rb
58
43
  - lib/mirah/env.rb
59
44
  - lib/mirah/errors.rb
60
- - lib/mirah/generator.rb
61
45
  - lib/mirah/parser.rb
62
46
  - lib/mirah/transform.rb
63
47
  - lib/mirah/typer.rb
64
48
  - lib/mirah/version.rb
65
- - lib/mirah/ast/scope.rb
66
- - lib/mirah/commands/base.rb
67
- - lib/mirah/commands/compile.rb
68
- - lib/mirah/commands/parse.rb
69
- - lib/mirah/commands/run.rb
70
- - lib/mirah/jvm/compiler.rb
71
- - lib/mirah/jvm/method_lookup.rb
72
- - lib/mirah/jvm/types.rb
73
- - lib/mirah/jvm/compiler/base.rb
74
- - lib/mirah/jvm/compiler/jvm_bytecode.rb
75
- - lib/mirah/jvm/types/array_type.rb
76
- - lib/mirah/jvm/types/ast_ext.rb
77
- - lib/mirah/jvm/types/basic_types.rb
78
- - lib/mirah/jvm/types/bitescript_ext.rb
79
- - lib/mirah/jvm/types/block_type.rb
80
- - lib/mirah/jvm/types/boolean.rb
81
- - lib/mirah/jvm/types/enumerable.rb
82
- - lib/mirah/jvm/types/extensions.rb
83
- - lib/mirah/jvm/types/factory.rb
84
- - lib/mirah/jvm/types/floats.rb
85
- - lib/mirah/jvm/types/generic_type.rb
86
- - lib/mirah/jvm/types/implicit_nil_type.rb
87
- - lib/mirah/jvm/types/integers.rb
88
- - lib/mirah/jvm/types/interface_definition.rb
89
- - lib/mirah/jvm/types/intrinsics.rb
90
- - lib/mirah/jvm/types/literals.rb
91
- - lib/mirah/jvm/types/meta_type.rb
92
- - lib/mirah/jvm/types/methods.rb
93
- - lib/mirah/jvm/types/null_type.rb
94
- - lib/mirah/jvm/types/number.rb
95
- - lib/mirah/jvm/types/primitive_type.rb
96
- - lib/mirah/jvm/types/source_mirror.rb
97
- - lib/mirah/jvm/types/type.rb
98
- - lib/mirah/jvm/types/type_definition.rb
99
- - lib/mirah/jvm/types/void_type.rb
100
49
  - lib/mirah/plugin/edb.rb
101
50
  - lib/mirah/transform/ast_ext.rb
102
51
  - lib/mirah/transform/transformer.rb
103
52
  - lib/mirah/util/argument_processor.rb
104
53
  - lib/mirah/util/class_loader.rb
105
- - lib/mirah/util/compilation_state.rb
106
54
  - lib/mirah/util/delegate.rb
107
55
  - lib/mirah/util/logging.rb
108
56
  - lib/mirah/util/process_errors.rb
109
57
  - test/test_helper.rb
110
- - test/core/commands_test.rb
58
+ - test/artifacts/jar_test.rb
59
+ - test/artifacts/jruby_test.rb
111
60
  - test/core/env_test.rb
112
- - test/core/generator_test.rb
113
61
  - test/core/typer_test.rb
114
62
  - test/core/typer/assignable_type_future_test.rb
115
63
  - test/core/typer/error_type_test.rb
116
64
  - test/core/typer/simple_type_test.rb
117
65
  - test/core/util/argument_processor_test.rb
118
66
  - test/core/util/class_loader_test.rb
119
- - test/core/util/compilation_state_test.rb
67
+ - test/core/util/jvm_version_test.rb
120
68
  - test/fixtures/my.properties
121
69
  - test/fixtures/org/foo/A.class
122
- - test/fixtures/org/foo/LowerCaseInnerClass$inner.class
123
- - test/fixtures/org/foo/LowerCaseInnerClass.class
70
+ - test/fixtures/org/foo/ImplicitClassRetAnno.java
71
+ - test/fixtures/org/foo/IntAnno.java
124
72
  - test/fixtures/org/foo/LowerCaseInnerClass.java
125
73
  - test/jvm/annotations_test.rb
126
74
  - test/jvm/blocks_test.rb
127
- - test/jvm/bytecode_test_helper.rb
128
75
  - test/jvm/cast_test.rb
129
76
  - test/jvm/constructors_test.rb
130
77
  - test/jvm/enumerable_test.rb
131
78
  - test/jvm/example_test.rb
132
- - test/jvm/factory_test.rb
133
79
  - test/jvm/generics_test.rb
134
80
  - test/jvm/hash_test.rb
135
81
  - test/jvm/import_test.rb
136
82
  - test/jvm/interface_test.rb
137
- - test/jvm/java_typer_test.rb
138
83
  - test/jvm/jvm_commands_test.rb
139
84
  - test/jvm/jvm_compiler_test.rb
140
85
  - test/jvm/list_extensions_test.rb
@@ -144,6 +89,7 @@ files:
144
89
  - test/jvm/new_backend_test_helper.rb
145
90
  - test/jvm/numeric_extensions_test.rb
146
91
  - test/jvm/rescue_test.rb
92
+ - test/jvm/static_fields_test.rb
147
93
  - test/jvm/string_builder_extensions_test.rb
148
94
  - test/jvm/string_extensions_test.rb
149
95
  - test/jvm/varargs_test.rb
@@ -158,14 +104,13 @@ files:
158
104
  - examples/bintrees.mirah
159
105
  - examples/construction.mirah
160
106
  - examples/edb.mirah
161
- - examples/Fib.class
162
107
  - examples/fib.mirah
163
108
  - examples/fields.mirah
164
109
  - examples/fractal.mirah
165
110
  - examples/interfaces.mirah
166
111
  - examples/java_thing.mirah
112
+ - examples/literals.mirah
167
113
  - examples/simple_class.mirah
168
- - examples/simple_class.mirah~
169
114
  - examples/sort_closure.mirah
170
115
  - examples/swing.mirah
171
116
  - examples/tak.mirah
@@ -217,16 +162,11 @@ files:
217
162
  - examples/rosettacode/string-case.mirah
218
163
  - examples/rosettacode/string-length.mirah
219
164
  - examples/rosettacode/user-input.mirah
220
- - javalib/mirah-bootstrap.jar
221
- - javalib/mirah-builtins.jar
222
- - javalib/mirah-compiler.jar
223
- - javalib/mirah-mirrors.jar
224
- - javalib/mirah-newast-transitional.jar
225
- - javalib/mirah-parser.jar
226
- - javalib/mirah-util.jar
165
+ - dist/mirahc.jar
166
+ - README.md
167
+ - TODO.md
227
168
  - History.txt
228
169
  - Rakefile
229
- - README.md
230
170
  homepage: http://www.mirah.org/
231
171
  licenses:
232
172
  - Apache-2.0
@@ -249,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
189
  version: '0'
250
190
  requirements: []
251
191
  rubyforge_project: mirah
252
- rubygems_version: 2.1.11
192
+ rubygems_version: 2.1.9
253
193
  signing_key:
254
194
  specification_version: 4
255
195
  summary: Mirah is a customizable programming language featuring static types, local type inference and a heavily Ruby-inspired syntax