mirah 0.1.2-java → 0.1.3-java

Sign up to get free protection for your applications and to get access to all the features.
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