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