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.
- checksums.yaml +4 -4
- data/History.txt +225 -0
- data/Rakefile +108 -315
- data/TODO.md +100 -0
- data/bin/bundler +16 -0
- data/bin/rake +16 -0
- data/dist/mirahc.jar +0 -0
- data/examples/appengine/Readme +0 -1
- data/examples/literals.mirah +17 -0
- data/examples/macros/string_each_char.mirah +1 -1
- data/lib/mirah.rb +11 -21
- data/lib/mirah/transform/transformer.rb +1 -2
- data/lib/mirah/util/class_loader.rb +1 -1
- data/lib/mirah/util/logging.rb +0 -63
- data/lib/mirah/util/process_errors.rb +1 -0
- data/lib/mirah/version.rb +1 -1
- data/{examples/simple_class.mirah~ → test/artifacts/jar_test.rb} +7 -11
- data/{lib/mirah/commands.rb → test/artifacts/jruby_test.rb} +8 -5
- data/test/core/typer_test.rb +29 -11
- data/test/core/util/argument_processor_test.rb +24 -23
- data/test/core/util/class_loader_test.rb +7 -4
- data/test/core/util/{compilation_state_test.rb → jvm_version_test.rb} +20 -16
- data/test/fixtures/org/foo/ImplicitClassRetAnno.java +4 -0
- data/test/fixtures/org/foo/IntAnno.java +9 -0
- data/test/jvm/annotations_test.rb +11 -11
- data/test/jvm/blocks_test.rb +16 -12
- data/test/jvm/constructors_test.rb +8 -8
- data/test/jvm/enumerable_test.rb +48 -24
- data/test/jvm/generics_test.rb +3 -7
- data/test/jvm/import_test.rb +14 -0
- data/test/jvm/interface_test.rb +9 -24
- data/test/jvm/jvm_commands_test.rb +22 -4
- data/test/jvm/jvm_compiler_test.rb +124 -79
- data/test/jvm/list_extensions_test.rb +1 -1
- data/test/jvm/macros_test.rb +67 -14
- data/test/jvm/main_method_test.rb +1 -1
- data/test/jvm/new_backend_test_helper.rb +100 -3
- data/{lib/mirah/jvm/types/bitescript_ext.rb → test/jvm/static_fields_test.rb} +22 -21
- data/test/mirrors/base_type_test.rb +4 -3
- data/test/mirrors/bytecode_mirror_test.rb +35 -15
- data/test/mirrors/generics_test.rb +14 -5
- data/test/mirrors/member_test.rb +2 -1
- data/test/mirrors/method_lookup_test.rb +18 -6
- data/test/mirrors/mirrors_test.rb +87 -20
- data/test/mirrors/simple_async_mirror_loader_test.rb +7 -3
- data/test/mirrors/simple_mirror_loader_test.rb +5 -5
- data/test/test_helper.rb +25 -1
- metadata +18 -78
- data/bin/mirahp +0 -27
- data/bin/mirahp.cmd +0 -16
- data/examples/Fib.class +0 -0
- data/javalib/mirah-bootstrap.jar +0 -0
- data/javalib/mirah-builtins.jar +0 -0
- data/javalib/mirah-compiler.jar +0 -0
- data/javalib/mirah-mirrors.jar +0 -0
- data/javalib/mirah-newast-transitional.jar +0 -0
- data/javalib/mirah-parser.jar +0 -0
- data/javalib/mirah-util.jar +0 -0
- data/lib/mirah/ast.rb +0 -43
- data/lib/mirah/ast/scope.rb +0 -262
- data/lib/mirah/commands/base.rb +0 -59
- data/lib/mirah/commands/compile.rb +0 -39
- data/lib/mirah/commands/parse.rb +0 -36
- data/lib/mirah/commands/run.rb +0 -78
- data/lib/mirah/generator.rb +0 -150
- data/lib/mirah/jvm/compiler.rb +0 -50
- data/lib/mirah/jvm/compiler/base.rb +0 -421
- data/lib/mirah/jvm/compiler/jvm_bytecode.rb +0 -1194
- data/lib/mirah/jvm/method_lookup.rb +0 -307
- data/lib/mirah/jvm/types.rb +0 -45
- data/lib/mirah/jvm/types/array_type.rb +0 -60
- data/lib/mirah/jvm/types/ast_ext.rb +0 -31
- data/lib/mirah/jvm/types/basic_types.rb +0 -41
- data/lib/mirah/jvm/types/block_type.rb +0 -15
- data/lib/mirah/jvm/types/boolean.rb +0 -70
- data/lib/mirah/jvm/types/enumerable.rb +0 -80
- data/lib/mirah/jvm/types/extensions.rb +0 -110
- data/lib/mirah/jvm/types/factory.rb +0 -830
- data/lib/mirah/jvm/types/floats.rb +0 -99
- data/lib/mirah/jvm/types/generic_type.rb +0 -72
- data/lib/mirah/jvm/types/implicit_nil_type.rb +0 -29
- data/lib/mirah/jvm/types/integers.rb +0 -131
- data/lib/mirah/jvm/types/interface_definition.rb +0 -20
- data/lib/mirah/jvm/types/intrinsics.rb +0 -385
- data/lib/mirah/jvm/types/literals.rb +0 -89
- data/lib/mirah/jvm/types/meta_type.rb +0 -54
- data/lib/mirah/jvm/types/methods.rb +0 -946
- data/lib/mirah/jvm/types/null_type.rb +0 -39
- data/lib/mirah/jvm/types/number.rb +0 -184
- data/lib/mirah/jvm/types/primitive_type.rb +0 -76
- data/lib/mirah/jvm/types/source_mirror.rb +0 -274
- data/lib/mirah/jvm/types/type.rb +0 -311
- data/lib/mirah/jvm/types/type_definition.rb +0 -72
- data/lib/mirah/jvm/types/void_type.rb +0 -19
- data/lib/mirah/util/compilation_state.rb +0 -60
- data/test/core/commands_test.rb +0 -89
- data/test/core/generator_test.rb +0 -26
- data/test/fixtures/org/foo/LowerCaseInnerClass$inner.class +0 -0
- data/test/fixtures/org/foo/LowerCaseInnerClass.class +0 -0
- data/test/jvm/bytecode_test_helper.rb +0 -193
- data/test/jvm/factory_test.rb +0 -28
- 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 '
|
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.
|
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.
|
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
|
-
|
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(
|
775
|
+
assert_match(/java\.lang\.Comparable<\? extends ...>/,
|
767
776
|
lub.toString)
|
768
777
|
end
|
769
778
|
|
data/test/mirrors/member_test.rb
CHANGED
@@ -14,7 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
16
|
require 'test/unit'
|
17
|
-
require '
|
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.
|
32
|
-
java_import 'org.
|
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
|
-
|
327
|
-
|
328
|
-
|
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
|
-
|
17
|
-
require
|
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.
|
35
|
-
java_import 'org.
|
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("
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
485
|
-
|
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(
|
499
|
+
decl.declare(superclass, nil)
|
489
500
|
|
490
501
|
@types.getMethodDefType(main_type, 'foobar', [decl],
|
491
502
|
@types.getFixnumType(0), nil)
|
492
|
-
|
493
|
-
assert_error(
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
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 '
|
17
|
+
require 'java'
|
18
|
+
require 'dist/mirahc.jar'
|
18
19
|
|
19
20
|
class SimpleAsyncMirrorLoaderTest < Test::Unit::TestCase
|
20
|
-
java_import 'org.
|
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 '
|
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.
|
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.
|
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.
|
88
|
+
java_import 'org.objectweb.asm.Type'
|
89
89
|
|
90
90
|
def test_loader
|
91
91
|
loader = OrErrorLoader.new(nil)
|
data/test/test_helper.rb
CHANGED
@@ -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
|
-
|
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.
|
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-
|
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/
|
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/
|
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/
|
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/
|
123
|
-
- test/fixtures/org/foo/
|
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
|
-
-
|
221
|
-
-
|
222
|
-
-
|
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.
|
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
|