mirah 0.0.5-java → 0.0.6-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 (63) hide show
  1. data/History.txt +33 -0
  2. data/README.txt +2 -3
  3. data/Rakefile +5 -0
  4. data/bin/duby +0 -0
  5. data/bin/dubyc +0 -0
  6. data/bin/dubyp +0 -0
  7. data/bin/jrubyp +0 -0
  8. data/bin/mirah +0 -0
  9. data/bin/mirah.cmd +14 -14
  10. data/bin/mirahc +0 -0
  11. data/bin/mirahc.cmd +14 -14
  12. data/bin/mirahp +0 -0
  13. data/bin/mirahp.cmd +14 -14
  14. data/examples/Dynamic.class +0 -0
  15. data/examples/SizeThing.class +0 -0
  16. data/examples/plugins/appengine/Rakefile +3 -1
  17. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/MetaModel.mirah +385 -0
  18. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby +58 -15
  19. data/examples/wiki/war/public/javascripts/prettify.js +0 -0
  20. data/examples/wiki/war/public/stylesheets/prettify.css +0 -0
  21. data/javalib/dynalink-0.1.jar +0 -0
  22. data/javalib/jsr292-mock.jar +0 -0
  23. data/javalib/mirah-bootstrap.jar +0 -0
  24. data/javalib/mirah-parser.jar +0 -0
  25. data/lib/mirah.rb +45 -25
  26. data/lib/mirah/ast.rb +81 -27
  27. data/lib/mirah/ast/call.rb +62 -71
  28. data/lib/mirah/ast/class.rb +23 -26
  29. data/lib/mirah/ast/flow.rb +38 -62
  30. data/lib/mirah/ast/intrinsics.rb +59 -37
  31. data/lib/mirah/ast/literal.rb +16 -14
  32. data/lib/mirah/ast/local.rb +8 -8
  33. data/lib/mirah/ast/method.rb +33 -19
  34. data/lib/mirah/ast/structure.rb +54 -13
  35. data/lib/mirah/ast/type.rb +8 -11
  36. data/lib/mirah/compiler.rb +86 -0
  37. data/lib/mirah/errors.rb +60 -0
  38. data/lib/mirah/jvm/base.rb +5 -11
  39. data/lib/mirah/jvm/compiler.rb +12 -1
  40. data/lib/mirah/jvm/source_compiler.rb +10 -2
  41. data/lib/mirah/jvm/source_generator/builder.rb +3 -1
  42. data/lib/mirah/jvm/source_generator/precompile.rb +6 -0
  43. data/lib/mirah/jvm/typer.rb +6 -1
  44. data/lib/mirah/jvm/types.rb +8 -0
  45. data/lib/mirah/jvm/types/factory.rb +34 -10
  46. data/lib/mirah/jvm/types/intrinsics.rb +12 -5
  47. data/lib/mirah/jvm/types/methods.rb +5 -9
  48. data/lib/mirah/plugin/gwt.rb +3 -2
  49. data/lib/mirah/transform.rb +68 -10
  50. data/lib/mirah/transform2.rb +10 -1
  51. data/lib/mirah/typer.rb +5 -10
  52. data/lib/mirah/version.rb +1 -1
  53. data/test/test_compilation.rb +1 -1
  54. data/test/test_java_typer.rb +10 -0
  55. data/test/test_javac_compiler.rb +4 -2
  56. data/test/test_jvm_compiler.rb +132 -9
  57. data/test/test_macros.rb +51 -0
  58. data/test/test_typer.rb +29 -25
  59. metadata +13 -21
  60. data/examples/plugins/appengine/lib/com/google/appengine/ext/duby/db/datastore.rb +0 -390
  61. data/javalib/JRubyParser.jar +0 -0
  62. data/javalib/dynalang-invoke-0.1.jar +0 -0
  63. data/lib/mirah/nbcompiler.rb +0 -44
@@ -213,7 +213,7 @@ module Mirah::AST
213
213
  name = transform(name, nil) unless name.kind_of?(::String)
214
214
  position = position(node)
215
215
  actual_name = name
216
- if name =~ /=$/
216
+ if name =~ /=$/ && name != '[]='
217
217
  actual_name = name[0..-2] + '_set'
218
218
  end
219
219
  if name == 'initialize'
@@ -337,6 +337,15 @@ module Mirah::AST
337
337
  Constant.new(parent, position(node), node[1])
338
338
  end
339
339
 
340
+ def transform_colon2const(node, parent)
341
+ name = node[2]
342
+ name = transform(name, nil) unless name.kind_of?(::String)
343
+ target = node[1]
344
+ Colon2.new(parent, position(node), name) do |colon2|
345
+ [ transform(target, colon2) ]
346
+ end
347
+ end
348
+
340
349
  def transform_identifier(node, parent)
341
350
  name = node[1]
342
351
  position = position(node)
data/lib/mirah/typer.rb CHANGED
@@ -15,6 +15,7 @@
15
15
 
16
16
  require 'mirah/ast'
17
17
  require 'mirah/transform'
18
+ require 'mirah/errors'
18
19
 
19
20
  module Mirah
20
21
  module Typer
@@ -26,13 +27,7 @@ module Mirah
26
27
  end
27
28
  end
28
29
 
29
- class InferenceError < Exception
30
- attr_accessor :node
31
- def initialize(msg, node = nil)
32
- super(msg)
33
- @node = node
34
- end
35
- end
30
+ InferenceError = Mirah::InferenceError
36
31
 
37
32
  class BaseTyper
38
33
  include Mirah
@@ -295,14 +290,14 @@ module Mirah
295
290
  @deferred_nodes ||= {}
296
291
  end
297
292
 
298
- def infer(node)
293
+ def infer(node, expression=true)
299
294
  begin
300
- node.infer(self)
295
+ node.infer(self, expression)
301
296
  rescue InferenceError => ex
302
297
  ex.node ||= node
303
298
  error(node, ex)
304
299
  rescue Exception => ex
305
- error(node, ex.message, ex.backtrace)
300
+ raise Mirah::InternalCompilerError.wrap(ex, node)
306
301
  end
307
302
  end
308
303
 
data/lib/mirah/version.rb CHANGED
@@ -14,5 +14,5 @@
14
14
  # limitations under the License.
15
15
 
16
16
  module Mirah
17
- VERSION = "0.0.5"
17
+ VERSION = "0.0.6"
18
18
  end
@@ -102,7 +102,7 @@ class TestAst < Test::Unit::TestCase
102
102
  def test_local_typed
103
103
  new_ast = AST.parse("a = 1").body[0]
104
104
  typer = Typer::Simple.new(:bar)
105
- new_ast.infer(typer)
105
+ new_ast.infer(typer, true)
106
106
  new_ast.compile(@compiler, true)
107
107
 
108
108
  assert_equal([[:local_assign, a(Mirah::AST::StaticScope), "a", AST.type(nil, :fixnum), true, AST.fixnum(nil, nil, 1)]], @compiler.calls)
@@ -195,4 +195,14 @@ class TestJavaTyper < Test::Unit::TestCase
195
195
 
196
196
  assert_equal(AST.type(nil, 'byte'), java_typer.method_type(nil, ary, "[]", [int]))
197
197
  end
198
+
199
+ def test_int
200
+ ast = AST.parse("#{1 << 16}")
201
+ assert_equal(AST.type(nil, 'int'), ast.infer(@typer, true))
202
+ end
203
+
204
+ def test_long
205
+ ast = AST.parse("#{1 << 33}")
206
+ assert_equal(AST.type(nil, 'long'), ast.infer(@typer, true))
207
+ end
198
208
  end
@@ -55,12 +55,14 @@ class TestJavacCompiler < TestJVMCompiler
55
55
  File.unlink(*@tmp_classes)
56
56
  @tmp_classes.clear
57
57
  AST.type_factory = Mirah::JVM::Types::TypeFactory.new
58
- transformer = Mirah::Transform::Transformer.new(Mirah::CompilationState.new)
58
+ state = Mirah::CompilationState.new
59
+ state.save_extensions = false
60
+ transformer = Mirah::Transform::Transformer.new(state)
59
61
  Java::MirahImpl::Builtin.initialize_builtins(transformer)
60
62
  name = "script" + System.nano_time.to_s
61
63
  ast = AST.parse(code, name, true, transformer)
62
64
  typer = Typer::JVM.new(transformer)
63
- ast.infer(typer)
65
+ ast.infer(typer, true)
64
66
  typer.resolve(true)
65
67
  compiler = Compiler::JavaSource.new
66
68
  ast.compile(compiler, false)
@@ -71,11 +71,13 @@ class TestJVMCompiler < Test::Unit::TestCase
71
71
  @tmp_classes.clear
72
72
  AST.type_factory = Mirah::JVM::Types::TypeFactory.new
73
73
  name = "script" + System.nano_time.to_s
74
- transformer = Mirah::Transform::Transformer.new(Mirah::CompilationState.new)
74
+ state = Mirah::CompilationState.new
75
+ state.save_extensions = false
76
+ transformer = Mirah::Transform::Transformer.new(state)
75
77
  Java::MirahImpl::Builtin.initialize_builtins(transformer)
76
78
  ast = AST.parse(code, name, true, transformer)
77
79
  typer = Typer::JVM.new(transformer)
78
- ast.infer(typer)
80
+ ast.infer(typer, true)
79
81
  typer.resolve(true)
80
82
  compiler = Compiler::JVM.new
81
83
  compiler.compile(ast)
@@ -2391,14 +2393,11 @@ class TestJVMCompiler < Test::Unit::TestCase
2391
2393
  def test_unquote
2392
2394
  # TODO fix annotation output and create a duby.anno.Extensions annotation.
2393
2395
  return if self.class.name == 'TestJavacCompiler'
2394
- # TODO figure out why this fails to compile in the unittests but works
2395
- # otherwise.
2396
- return
2397
- script, cls = compile(<<-EOF)
2398
- import duby.lang.compiler.StringNode
2396
+
2397
+ script, cls = compile(<<-'EOF')
2399
2398
  class UnquoteMacros
2400
2399
  macro def make_attr(name_node, type)
2401
- name = StringNode(name_node).literal()
2400
+ name = name_node.string_value
2402
2401
  quote do
2403
2402
  def `name`
2404
2403
  @`name`
@@ -2417,7 +2416,7 @@ class TestJVMCompiler < Test::Unit::TestCase
2417
2416
  x.foo = 3
2418
2417
  puts x.foo
2419
2418
  EOF
2420
- assert_output("1\n3\n") {script.main(nil)}
2419
+ assert_output("0\n3\n") {script.main(nil)}
2421
2420
  end
2422
2421
 
2423
2422
  def test_static_import
@@ -2499,6 +2498,16 @@ class TestJVMCompiler < Test::Unit::TestCase
2499
2498
  map = cls.foo2
2500
2499
  assert_equal("A", map["a"])
2501
2500
  assert_equal("B", map["b"])
2501
+
2502
+ cls, = compile(<<-'EOF')
2503
+ def set(b:Object)
2504
+ map = { }
2505
+ map["key"] = b
2506
+ map["key"]
2507
+ end
2508
+ EOF
2509
+
2510
+ assert_equal("foo", cls.set("foo"))
2502
2511
  end
2503
2512
 
2504
2513
  def test_loop_in_ensure
@@ -2634,4 +2643,118 @@ class TestJVMCompiler < Test::Unit::TestCase
2634
2643
  assert_output("1\nFoo\n2\n") { cls.foo }
2635
2644
  end
2636
2645
 
2646
+ def test_scoped_self_through_method_call
2647
+ cls, = compile(<<-EOF)
2648
+ class ScopedSelfThroughMethodCall
2649
+ def emptyMap
2650
+ {}
2651
+ end
2652
+
2653
+ def foo
2654
+ emptyMap["a"] = "A"
2655
+ end
2656
+ end
2657
+ EOF
2658
+
2659
+ # just make sure it can execute
2660
+ m = cls.new.foo
2661
+ end
2662
+
2663
+ def test_self_call_preserves_scope
2664
+ cls, = compile(<<-EOF)
2665
+ class SelfCallPreservesScope
2666
+ def key
2667
+ "key"
2668
+ end
2669
+
2670
+ def foo
2671
+ map = {}
2672
+ map[key] = "value"
2673
+ map
2674
+ end
2675
+ end
2676
+ EOF
2677
+
2678
+ map = cls.new.foo
2679
+ assert_equal("value", map["key"])
2680
+ end
2681
+
2682
+ def test_macro_hygene
2683
+ cls, = compile(<<-EOF)
2684
+ macro def doubleIt(arg)
2685
+ quote do
2686
+ x = `arg`
2687
+ x = x + x
2688
+ x
2689
+ end
2690
+ end
2691
+
2692
+ def foo
2693
+ x = "1"
2694
+ puts doubleIt(x)
2695
+ puts x
2696
+ end
2697
+ EOF
2698
+
2699
+ assert_output("11\n1\n") {cls.foo}
2700
+ end
2701
+
2702
+ def test_wide_nonexpressions
2703
+ script, cls1, cls2 = compile(<<-EOF)
2704
+ class WideA
2705
+ def a
2706
+ 2.5
2707
+ end
2708
+ end
2709
+
2710
+ class WideB < WideA
2711
+ def a
2712
+ super
2713
+ 3.5
2714
+ end
2715
+ end
2716
+
2717
+ def self.b
2718
+ 1.5
2719
+ end
2720
+
2721
+ 1.5
2722
+ WideA.new.a
2723
+ WideB.new.a
2724
+ b
2725
+ EOF
2726
+
2727
+ script.main(nil)
2728
+ end
2729
+
2730
+ def test_parameter_used_in_block
2731
+ cls, = compile(<<-EOF)
2732
+ def foo(x:String):void
2733
+ thread = Thread.new do
2734
+ puts "Hello \#{x}"
2735
+ end
2736
+ begin
2737
+ thread.run
2738
+ thread.join
2739
+ rescue
2740
+ puts "Uh Oh!"
2741
+ end
2742
+ end
2743
+
2744
+ foo('there')
2745
+ EOF
2746
+ assert_output("Hello there\n") do
2747
+ cls.main(nil)
2748
+ end
2749
+ end
2750
+
2751
+ def test_colon2
2752
+ cls, = compile(<<-EOF)
2753
+ def foo
2754
+ java.util::HashSet.new
2755
+ end
2756
+ EOF
2757
+
2758
+ assert_kind_of(java.util.HashSet, cls.foo)
2759
+ end
2637
2760
  end
@@ -0,0 +1,51 @@
1
+ # TODO refactor this and test_jvm_compiler to use mirah.rb
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
4
+
5
+ require 'test/unit'
6
+ require 'mirah'
7
+
8
+ class TestMacros < Test::Unit::TestCase
9
+ java_import 'java.lang.System'
10
+
11
+ def parse(code)
12
+ Mirah::AST.type_factory = Mirah::JVM::Types::TypeFactory.new
13
+ name = "script" + System.nano_time.to_s
14
+ state = Mirah::CompilationState.new
15
+ state.save_extensions = false
16
+ transformer = Mirah::Transform::Transformer.new(state)
17
+ Java::MirahImpl::Builtin.initialize_builtins(transformer)
18
+ ast = Mirah::AST.parse(code, name, true, transformer)
19
+ typer = Mirah::Typer::JVM.new(transformer)
20
+ ast.infer(typer, true)
21
+ typer.resolve(true)
22
+ ast
23
+ end
24
+
25
+ def test_macro_helper
26
+ script = parse(<<-EOF)
27
+ import duby.lang.compiler.Compiler
28
+
29
+ def helper(mirah:Compiler)
30
+ name = "foobar"
31
+ mirah.quote { `name` }
32
+ end
33
+ EOF
34
+ end
35
+
36
+ def test_self_call_in_unquote
37
+ script = parse(<<-EOF)
38
+ import duby.lang.compiler.Compiler
39
+
40
+ def foobar(name:String)
41
+ name
42
+ end
43
+
44
+ def helper(mirah:Compiler)
45
+ name = "foobar"
46
+ mirah.quote { `foobar(name)` }
47
+ end
48
+ EOF
49
+ end
50
+
51
+ end
data/test/test_typer.rb CHANGED
@@ -14,6 +14,9 @@
14
14
  # limitations under the License.
15
15
 
16
16
  require 'test/unit'
17
+
18
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
19
+
17
20
  require 'mirah'
18
21
 
19
22
  class TestTyper < Test::Unit::TestCase
@@ -22,49 +25,49 @@ class TestTyper < Test::Unit::TestCase
22
25
  def test_fixnum
23
26
  ast = AST.parse("1")
24
27
 
25
- assert_equal(AST::TypeReference.new("fixnum"), ast.infer(Typer::Simple.new(:bar)))
28
+ assert_equal(AST::TypeReference.new("fixnum"), ast.infer(Typer::Simple.new(:bar), true))
26
29
  end
27
30
 
28
31
  def test_float
29
32
  ast = AST.parse("1.0")
30
33
 
31
- assert_equal(AST::TypeReference.new("float"), ast.infer(Typer::Simple.new(:bar)))
34
+ assert_equal(AST::TypeReference.new("float"), ast.infer(Typer::Simple.new(:bar), true))
32
35
  end
33
36
 
34
37
  def test_string
35
38
  ast = AST.parse("'foo'")
36
39
 
37
- assert_equal(AST::TypeReference.new("string"), ast.infer(Typer::Simple.new(:bar)))
40
+ assert_equal(AST::TypeReference.new("string"), ast.infer(Typer::Simple.new(:bar), true))
38
41
  end
39
42
 
40
43
  def test_boolean
41
44
  ast1 = AST.parse("true")
42
45
  ast2 = AST.parse("false")
43
46
 
44
- assert_equal(AST::TypeReference.new("boolean"), ast1.infer(Typer::Simple.new(:bar)))
45
- assert_equal(AST::TypeReference.new("boolean"), ast2.infer(Typer::Simple.new(:bar)))
47
+ assert_equal(AST::TypeReference.new("boolean"), ast1.infer(Typer::Simple.new(:bar), true))
48
+ assert_equal(AST::TypeReference.new("boolean"), ast2.infer(Typer::Simple.new(:bar), true))
46
49
  end
47
50
 
48
51
  def test_body
49
52
  ast1 = AST.parse("'foo'; 1.0; 1")
50
53
  ast2 = AST.parse("begin; end")
51
54
 
52
- assert_equal(AST::TypeReference.new("fixnum"), ast1.infer(Typer::Simple.new(:bar)))
53
- assert_equal(AST::TypeReference::NullType, ast2.infer(Typer::Simple.new(:bar)))
55
+ assert_equal(AST::TypeReference.new("fixnum"), ast1.infer(Typer::Simple.new(:bar), true))
56
+ assert_equal(AST::TypeReference::NullType, ast2.infer(Typer::Simple.new(:bar), true))
54
57
  end
55
58
 
56
59
  def test_local
57
60
  ast1 = AST.parse("a = 1; a")
58
61
  typer = Typer::Simple.new :bar
59
62
 
60
- ast1.infer(typer)
63
+ ast1.infer(typer, true)
61
64
 
62
65
  assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast1.static_scope, 'a'))
63
66
  assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[0].inferred_type)
64
67
  assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[1].inferred_type)
65
68
 
66
69
  ast2 = AST.parse("b = a = 1")
67
- ast2.infer(typer)
70
+ ast2.infer(typer, true)
68
71
 
69
72
  assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast2.static_scope, 'a'))
70
73
  assert_equal(AST::TypeReference.new("fixnum"), ast2.body.children[0].inferred_type)
@@ -75,7 +78,7 @@ class TestTyper < Test::Unit::TestCase
75
78
  ast1 = AST.parse("#{def_foo}(a:string); end")
76
79
  typer = Typer::Simple.new :bar
77
80
 
78
- ast1.infer(typer)
81
+ ast1.infer(typer, true)
79
82
 
80
83
  assert_nothing_raised {typer.resolve(true)}
81
84
  assert_nothing_raised {typer.resolve}
@@ -95,7 +98,7 @@ class TestTyper < Test::Unit::TestCase
95
98
  ast1 = AST.parse("#{def_foo}(a:string); a; end")
96
99
  typer = Typer::Simple.new :bar
97
100
 
98
- ast1.infer(typer)
101
+ ast1.infer(typer, true)
99
102
 
100
103
  assert_equal(typer.string_type, typer.method_type(type, 'foo', [typer.string_type]))
101
104
  assert_equal(typer.string_type, typer.local_type(ast1.body[0].static_scope, 'a'))
@@ -106,7 +109,7 @@ class TestTyper < Test::Unit::TestCase
106
109
  typer = Typer::Simple.new :bar
107
110
 
108
111
  assert_raise(Typer::InferenceError) do
109
- ast1.infer(typer)
112
+ ast1.infer(typer, true)
110
113
  typer.resolve(true)
111
114
  end
112
115
  end
@@ -119,13 +122,13 @@ class TestTyper < Test::Unit::TestCase
119
122
  typer.learn_method_type(typer.fixnum_type, "foo", [typer.fixnum_type], typer.string_type, [])
120
123
  assert_equal(typer.string_type, typer.method_type(typer.fixnum_type, "foo", [typer.fixnum_type]))
121
124
 
122
- ast.infer(typer)
125
+ ast.infer(typer, true)
123
126
 
124
127
  assert_equal(typer.string_type, ast.inferred_type)
125
128
 
126
129
  ast = AST.parse("def bar(a:fixnum, b:string); 1.0; end; def baz; bar(1, 'x'); end")
127
130
 
128
- ast.infer(typer)
131
+ ast.infer(typer, true)
129
132
  ast = ast.body
130
133
 
131
134
  assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
@@ -137,7 +140,7 @@ class TestTyper < Test::Unit::TestCase
137
140
  ast = AST.parse("def baz; bar(1, 'x'); end; def bar(a:fixnum, b:string); 1.0; end")
138
141
  typer = Typer::Simple.new("bar")
139
142
 
140
- ast.infer(typer)
143
+ ast.infer(typer, true)
141
144
  ast = ast.body
142
145
 
143
146
  assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
@@ -157,7 +160,7 @@ class TestTyper < Test::Unit::TestCase
157
160
  ast = AST.parse("def baz; bar(1, 1); end; def bar(a:fixnum, b:string); 1.0; end")
158
161
  typer = Typer::Simple.new("bar")
159
162
 
160
- ast.infer(typer)
163
+ ast.infer(typer, true)
161
164
  ast = ast.body
162
165
 
163
166
  assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
@@ -177,11 +180,12 @@ class TestTyper < Test::Unit::TestCase
177
180
  typer = Typer::Simple.new("bar")
178
181
 
179
182
  # incompatible body types
180
- assert_raise(Typer::InferenceError) {ast.infer(typer)}
183
+ assert_raise(Typer::InferenceError) {ast.infer(typer, true)}
184
+ assert_nothing_raised {ast.infer(typer, false)}
181
185
 
182
186
  ast = AST.parse("if true; 1.0; else; 2.0; end").body[0]
183
187
 
184
- assert_nothing_raised {ast.infer(typer); typer.resolve(true)}
188
+ assert_nothing_raised {ast.infer(typer, true); typer.resolve(true)}
185
189
 
186
190
  assert_equal(typer.boolean_type, ast.condition.inferred_type)
187
191
  assert_equal(typer.float_type, ast.body.inferred_type)
@@ -189,7 +193,7 @@ class TestTyper < Test::Unit::TestCase
189
193
 
190
194
  ast = AST.parse("if foo; bar; else; baz; end").body[0]
191
195
 
192
- assert_nothing_raised {ast.infer(typer)}
196
+ assert_nothing_raised {ast.infer(typer, true)}
193
197
 
194
198
  assert_equal(typer.default_type, ast.condition.inferred_type)
195
199
  assert_equal(typer.default_type, ast.body.inferred_type)
@@ -198,10 +202,10 @@ class TestTyper < Test::Unit::TestCase
198
202
  # unresolved types for the foo, bar, and baz calls
199
203
  assert_raise(Typer::InferenceError) {typer.resolve(true)}
200
204
 
201
- ast2 = AST.parse("def foo; 1; end; def bar; 1.0; end")[0]
205
+ ast2 = AST.parse("def foo; 1; end; def bar; 1.0; end")
202
206
 
203
- ast2.infer(typer)
204
- ast.infer(typer)
207
+ ast2.infer(typer, true)
208
+ ast.infer(typer, true)
205
209
 
206
210
  # unresolved types for the baz call
207
211
  assert_raise(Typer::InferenceError) {typer.resolve(true)}
@@ -214,8 +218,8 @@ class TestTyper < Test::Unit::TestCase
214
218
 
215
219
  ast2 = AST.parse("def baz; 2.0; end")
216
220
 
217
- ast2.infer(typer)
218
- ast.infer(typer)
221
+ ast2.infer(typer, true)
222
+ ast.infer(typer, true)
219
223
 
220
224
  assert_nothing_raised {typer.resolve(true)}
221
225
 
@@ -229,7 +233,7 @@ class TestTyper < Test::Unit::TestCase
229
233
  baz = cls.body[1]
230
234
 
231
235
  typer = Typer::Simple.new("script")
232
- ast.infer(typer)
236
+ ast.infer(typer, true)
233
237
 
234
238
  assert_nothing_raised {typer.resolve(true)}
235
239
  end