rubybreaker 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/NEWS +6 -0
  2. data/VERSION +1 -1
  3. data/bin/rubybreaker +3 -3
  4. data/lib/rubybreaker.rb +15 -11
  5. data/lib/rubybreaker/doc/rdoc.rb +1 -1
  6. data/lib/rubybreaker/runtime/monitor.rb +8 -6
  7. data/lib/rubybreaker/runtime/object_wrapper.rb +38 -16
  8. data/lib/rubybreaker/runtime/overrides.rb +42 -30
  9. data/lib/rubybreaker/runtime/type_system.rb +45 -14
  10. data/lib/rubybreaker/type/type_unparser.rb +4 -8
  11. data/lib/rubybreaker/typing/subtyping.rb +1 -0
  12. data/test/integrated/tc_original_behavior.rb +38 -0
  13. data/test/integrated/tc_simple1.rb +20 -0
  14. data/test/integrated/tc_simple_algorithms.rb +135 -0
  15. data/test/runtime/tc_obj_wrapper.rb +3 -3
  16. data/test/ts_integrated.rb +1 -0
  17. data/test/type/tc_parser.rb +24 -0
  18. data/webpage/rdoc/Object.html +0 -2
  19. data/webpage/rdoc/Rake.html +0 -2
  20. data/webpage/rdoc/Rake/RubyBreakerTestTask.html +0 -2
  21. data/webpage/rdoc/RubyBreaker.html +1 -3
  22. data/webpage/rdoc/RubyBreaker/Breakable.html +0 -2
  23. data/webpage/rdoc/RubyBreaker/Broken.html +0 -2
  24. data/webpage/rdoc/RubyBreaker/Context.html +0 -2
  25. data/webpage/rdoc/RubyBreaker/Errors.html +0 -2
  26. data/webpage/rdoc/RubyBreaker/Errors/ArgumentTypeError.html +0 -2
  27. data/webpage/rdoc/RubyBreaker/Errors/ArityError.html +0 -2
  28. data/webpage/rdoc/RubyBreaker/Errors/InternalError.html +0 -2
  29. data/webpage/rdoc/RubyBreaker/Errors/InvalidSubtypeCheck.html +0 -2
  30. data/webpage/rdoc/RubyBreaker/Errors/InvalidTypeConstruction.html +0 -2
  31. data/webpage/rdoc/RubyBreaker/Errors/ReturnTypeError.html +0 -2
  32. data/webpage/rdoc/RubyBreaker/Errors/TypeError.html +0 -2
  33. data/webpage/rdoc/RubyBreaker/Errors/UserError.html +0 -2
  34. data/webpage/rdoc/RubyBreaker/ObjectPosition.html +0 -2
  35. data/webpage/rdoc/RubyBreaker/Position.html +0 -2
  36. data/webpage/rdoc/RubyBreaker/RubyTypeUtils.html +0 -2
  37. data/webpage/rdoc/RubyBreaker/Runtime.html +7 -3
  38. data/webpage/rdoc/RubyBreaker/Runtime/Inspector.html +0 -2
  39. data/webpage/rdoc/RubyBreaker/Runtime/MethodInfo.html +0 -2
  40. data/webpage/rdoc/RubyBreaker/Runtime/Monitor.html +12 -13
  41. data/webpage/rdoc/RubyBreaker/Runtime/MonitorInstaller.html +6 -7
  42. data/webpage/rdoc/RubyBreaker/Runtime/MonitorSwitch.html +4 -6
  43. data/webpage/rdoc/RubyBreaker/Runtime/ObjectWrapper.html +21 -19
  44. data/webpage/rdoc/RubyBreaker/Runtime/Pluggable.html +0 -2
  45. data/webpage/rdoc/RubyBreaker/Runtime/TypeSigParser.html +0 -2
  46. data/webpage/rdoc/RubyBreaker/Runtime/TypeSigUnparser.html +0 -2
  47. data/webpage/rdoc/RubyBreaker/Runtime/TypeSystem.html +52 -23
  48. data/webpage/rdoc/RubyBreaker/TypeComparer.html +0 -2
  49. data/webpage/rdoc/RubyBreaker/TypeDefs.html +0 -2
  50. data/webpage/rdoc/RubyBreaker/TypeDefs/AnyType.html +0 -2
  51. data/webpage/rdoc/RubyBreaker/TypeDefs/BlockType.html +0 -2
  52. data/webpage/rdoc/RubyBreaker/TypeDefs/DuckType.html +0 -2
  53. data/webpage/rdoc/RubyBreaker/TypeDefs/FusionType.html +0 -2
  54. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodListType.html +0 -2
  55. data/webpage/rdoc/RubyBreaker/TypeDefs/MethodType.html +0 -2
  56. data/webpage/rdoc/RubyBreaker/TypeDefs/NilType.html +0 -2
  57. data/webpage/rdoc/RubyBreaker/TypeDefs/NominalType.html +0 -2
  58. data/webpage/rdoc/RubyBreaker/TypeDefs/OptionalType.html +0 -2
  59. data/webpage/rdoc/RubyBreaker/TypeDefs/OrType.html +0 -2
  60. data/webpage/rdoc/RubyBreaker/TypeDefs/SelfType.html +0 -2
  61. data/webpage/rdoc/RubyBreaker/TypeDefs/Type.html +2 -4
  62. data/webpage/rdoc/RubyBreaker/TypeDefs/VarLengthType.html +0 -2
  63. data/webpage/rdoc/RubyBreaker/TypeUnparser.html +1 -3
  64. data/webpage/rdoc/RubyBreaker/Typing.html +1 -3
  65. data/webpage/rdoc/RubyBreaker/Util.html +0 -2
  66. data/webpage/rdoc/Test.html +0 -2
  67. data/webpage/rdoc/Test/Unit.html +0 -2
  68. data/webpage/rdoc/created.rid +10 -10
  69. data/webpage/rdoc/index.html +0 -2
  70. data/webpage/rdoc/js/search_index.js +1 -1
  71. data/webpage/rdoc/table_of_contents.html +31 -38
  72. metadata +3 -3
  73. data/webpage/rdoc/RubyBreaker/RDocSupport.html +0 -328
@@ -93,8 +93,7 @@ module RubyBreaker
93
93
  t.arg_types.each_with_index do |arg_type,i|
94
94
  unparse_pp(pp, arg_type, opts)
95
95
  if i < t.arg_types.size - 1
96
- pp.text(",")
97
- pp.fill_breakable()
96
+ pp.text(", ")
98
97
  end
99
98
  end
100
99
  pp.text(")")
@@ -105,16 +104,14 @@ module RubyBreaker
105
104
  pp.text("}")
106
105
  pp.fill_breakable()
107
106
  end
108
- pp.text("->")
109
- pp.fill_breakable()
107
+ pp.text("-> ")
110
108
  unparse_pp(pp, t.ret_type, opts)
111
109
  elsif t.instance_of?(BlockType)
112
110
  pp.text("|")
113
111
  t.arg_types.each_with_index do |arg_type,i|
114
112
  unparse_pp(pp, arg_type, opts)
115
113
  if i < t.arg_types.size - 1
116
- pp.text(",")
117
- pp.fill_breakable()
114
+ pp.text(", ")
118
115
  end
119
116
  end
120
117
  pp.text("|")
@@ -125,8 +122,7 @@ module RubyBreaker
125
122
  pp.text("}")
126
123
  pp.fill_breakable()
127
124
  end
128
- pp.text("->")
129
- pp.fill_breakable()
125
+ pp.text("-> ")
130
126
  unparse_pp(pp, t.ret_type, opts)
131
127
  elsif t.instance_of?(MethodListType)
132
128
  t.types.each_with_index do |typ,i|
@@ -193,6 +193,7 @@ module RubyBreaker
193
193
  rhs_arg = rhs_arg.type
194
194
  end
195
195
  end
196
+ # Remember, the contra-variance
196
197
  if !self.subtype_rel?(rhs_arg, lhs_arg)
197
198
  is_subtype = false
198
199
  break
@@ -22,12 +22,50 @@ class IntegratedOriginalBehaviorTest < Test::Unit::TestCase
22
22
  raise "error"
23
23
  end
24
24
 
25
+ def neg?(x)
26
+ return x < 0
27
+ end
28
+
29
+ def x_nil?(x)
30
+ return x.nil?
31
+ end
32
+
33
+ def factorial(x)
34
+ if x <= 1
35
+ 1
36
+ else
37
+ x * factorial(x - 1)
38
+ end
39
+ end
40
+
25
41
  end
26
42
 
27
43
  def setup()
28
44
  RubyBreaker.break(A)
29
45
  end
30
46
 
47
+ def test_una_op
48
+ a = A.new
49
+ assert(a.x_nil?(nil))
50
+ assert(!a.x_nil?(1))
51
+ end
52
+
53
+ def test_bin_op
54
+ a = A.new
55
+ assert(a.neg?(-1))
56
+ assert(!a.neg?(1))
57
+ end
58
+
59
+ def test_factorial
60
+ a = A.new
61
+ b = a.factorial(4)
62
+ assert_equal(24, b)
63
+ b = a.factorial(1)
64
+ assert_equal(1, b)
65
+ b = a.factorial(0)
66
+ assert_equal(1, b)
67
+ end
68
+
31
69
  def test_plus()
32
70
  a = A.new
33
71
  x = 1
@@ -28,18 +28,38 @@ class IntegratedSimpleTest < Test::Unit::TestCase
28
28
  self
29
29
  end
30
30
 
31
+ def bazzz(x,n)
32
+ if n == 0
33
+ x.size
34
+ end
35
+ x.to_s
36
+ return 1
37
+ end
38
+
31
39
  end
32
40
 
33
41
  class B
34
42
  typesig("baz(string[size], true_class) -> fixnum")
35
43
  typesig("baz(string[to_s], false_class) -> string")
36
44
  def baz(x,b); end
45
+
46
+ typesig("bazzz(string[size, to_s], fixnum[==]) -> fixnum")
47
+ def bazzz(x, n); end
37
48
  end
38
49
 
39
50
  def setup()
40
51
  RubyBreaker.break(A)
41
52
  end
42
53
 
54
+ def test_intersect
55
+ a = A.new
56
+ a.bazzz("abc", 0)
57
+ a.bazzz("abc", 1)
58
+ meth_type = Runtime::Inspector.inspect_meth(A, :bazzz)
59
+ str = TypeUnparser.unparse(meth_type)
60
+ assert_equal("bazzz(string[size, to_s], fixnum[==]) -> fixnum", str)
61
+ end
62
+
43
63
  def test_simple1_a_foo
44
64
  a = A.new
45
65
  a.foo("test_simple1 >> string")
@@ -0,0 +1,135 @@
1
+ require "test/unit"
2
+ require_relative "../../lib/rubybreaker"
3
+
4
+ class IntegratedSimpleAlgorithmsTest < Test::Unit::TestCase
5
+ include RubyBreaker
6
+
7
+ # The contents of the following class is taken from Opus8:
8
+ #
9
+ # This class contains the Ruby code from Program 2.x of
10
+ # "Data Structures and Algorithms
11
+ # with Object-Oriented Design Patterns in Ruby"
12
+ # by Bruno R. Preiss.
13
+ #
14
+ # Copyright (c) 2004 by Bruno R. Preiss, P.Eng. All rights reserved.
15
+ #
16
+ # http://www.brpreiss.com/books/opus8/
17
+ #
18
+ class Opus8
19
+ def sum(n)
20
+ result = 0
21
+ i = 1
22
+ while i <= n
23
+ result += i
24
+ i += 1
25
+ end
26
+ return result
27
+ end
28
+
29
+ def horner(a, n, x)
30
+ result = a[n]
31
+ i = n - 1
32
+ while i >= 0
33
+ result = result * x + a[i]
34
+ i -= 1
35
+ end
36
+ return result
37
+ end
38
+
39
+ def findMaximum(a, n)
40
+ result = a[0]
41
+ i = 1
42
+ while i < n
43
+ if a[i] > result
44
+ result = a[i]
45
+ end
46
+ i += 1
47
+ end
48
+ return result
49
+ end
50
+
51
+ def fibonacci(n)
52
+ if n == 0 or n == 1
53
+ return n
54
+ else
55
+ return fibonacci(n - 1) + fibonacci(n - 2)
56
+ end
57
+ end
58
+
59
+ def bucketSort(a, n, buckets, m)
60
+ for j in 0 ... m
61
+ buckets[j] = 0
62
+ end
63
+ for i in 0 ... n
64
+ buckets[a[i]] += 1
65
+ end
66
+ i = 0
67
+ for j in 0 ... m
68
+ for k in 0 ... buckets[j]
69
+ a[i] = j
70
+ i += 1
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ class Ref
77
+ typesig("fibonacci(fixnum[==]) -> fixnum")
78
+ typesig("fibonacci(fixnum[==,-]) -> fixnum")
79
+ def fibonacci(n); n end
80
+ end
81
+
82
+ def setup()
83
+ Runtime.break(Opus8)
84
+ end
85
+
86
+ def test_sum
87
+ opus8 = Opus8.new
88
+ result = opus8.sum(5)
89
+ sum_meth_type = Runtime::Inspector.inspect_meth(Opus8, :sum)
90
+ str = sum_meth_type.unparse()
91
+ assert_equal("sum(fixnum[]) -> fixnum", str)
92
+ assert_equal(15, result)
93
+ end
94
+
95
+ def test_horner()
96
+ opus8 = Opus8.new
97
+ result = opus8.horner([1,2,3],2,2)
98
+ horner_meth_type = Runtime::Inspector.inspect_meth(Opus8, :horner)
99
+ str = horner_meth_type.unparse()
100
+ assert_equal("horner(array[[]], fixnum[-], fixnum[]) -> fixnum", str)
101
+ assert_equal(1 + 4 + 12, result)
102
+ end
103
+
104
+ def test_findMaximum()
105
+ opus8 = Opus8.new
106
+ result = opus8.findMaximum([1,4,3,2], 4)
107
+ max_meth_type = Runtime::Inspector.inspect_meth(Opus8, :findMaximum)
108
+ str = max_meth_type.unparse()
109
+ assert_equal("findMaximum(array[[]], fixnum[]) -> fixnum", str)
110
+ assert_equal(4, result)
111
+ end
112
+
113
+ def test_fibonacci()
114
+ opus8 = Opus8.new
115
+ result = opus8.fibonacci(4)
116
+ fib_meth_type = Runtime::Inspector.inspect_meth(Opus8, :fibonacci)
117
+ fib_ref_meth_type = Runtime::Inspector.inspect_meth(Ref, :fibonacci)
118
+ str = fib_meth_type.unparse()
119
+ # puts fib_meth_type.class
120
+ assert_equal("fibonacci(fixnum[-, ==]) -> fixnum", str)
121
+ assert_equal(3, result)
122
+ end
123
+
124
+ def test_bucket_sort()
125
+ opus8 = Opus8.new
126
+ array = [5, 1, 3, 7, 11, 9]
127
+ bucket = []
128
+ opus8.bucketSort(array, 6, bucket, 12)
129
+ sort_meth_type = Runtime::Inspector.inspect_meth(Opus8, :bucketSort)
130
+ str = sort_meth_type.unparse()
131
+ assert_equal("bucketSort(array[[], []=], fixnum[], array[[], []=], fixnum[]) -> range", str)
132
+ assert_equal([1, 3, 5, 7, 9, 11], array)
133
+ end
134
+
135
+ end
@@ -144,7 +144,7 @@ class ObjectWrapperTest < Test::Unit::TestCase
144
144
  assert(y == wrapped_x)
145
145
  assert(wrapped_x == y)
146
146
  assert(!y.equal?(wrapped_x)) # try "42".equal?("42") in irb, it will fail
147
- assert(wrapped_x.equal?(y))
147
+ assert(!wrapped_x.equal?(y))
148
148
  assert(y.eql?(wrapped_x))
149
149
  assert(wrapped_x.eql?(y))
150
150
  assert_equal(y, wrapped_x)
@@ -178,7 +178,7 @@ class ObjectWrapperTest < Test::Unit::TestCase
178
178
  assert(y == wrapped_x)
179
179
  assert(wrapped_x == y)
180
180
  assert(!y.equal?(wrapped_x))
181
- assert(wrapped_x.equal?(y))
181
+ assert(!wrapped_x.equal?(y))
182
182
  assert(y.eql?(wrapped_x))
183
183
  assert(wrapped_x.eql?(y))
184
184
  assert_equal(y, wrapped_x)
@@ -212,7 +212,7 @@ class ObjectWrapperTest < Test::Unit::TestCase
212
212
  assert(y == wrapped_x)
213
213
  assert(wrapped_x == y)
214
214
  assert(!y.equal?(wrapped_x))
215
- assert(wrapped_x.equal?(y))
215
+ assert(!wrapped_x.equal?(y))
216
216
  assert(y.eql?(wrapped_x))
217
217
  assert(wrapped_x.eql?(y))
218
218
  assert_equal(y, wrapped_x)
@@ -8,4 +8,5 @@ require_relative "integrated/tc_class_methods"
8
8
  require_relative "integrated/tc_both_documented_and_undocumented"
9
9
  require_relative "integrated/tc_namespace"
10
10
  require_relative "integrated/tc_checking"
11
+ require_relative "integrated/tc_simple_algorithms"
11
12
 
@@ -189,7 +189,19 @@ class GrammarTest < Test::Unit::TestCase
189
189
  #puts str
190
190
  assert_equal("foo([m1, m2, m3?]) -> fixnum",str)
191
191
  end
192
+
193
+ def test_method_duck_array_index_method
194
+ type = @parser.parse("foo([[]]) -> fixnum").value
195
+ str = TypeUnparser.unparse(type)
196
+ assert_equal("foo([[]]) -> fixnum", str)
197
+ end
192
198
 
199
+ def test_method_duck_array_more_methods
200
+ type = @parser.parse("foo([[],[]=]) -> fixnum").value
201
+ str = TypeUnparser.unparse(type)
202
+ assert_equal("foo([[], []=]) -> fixnum", str)
203
+ end
204
+
193
205
  def test_method_fusion_arg
194
206
  type = @parser.parse("foo(fixnum[to_s]) -> fixnum").value
195
207
  str = TypeUnparser.unparse(type)
@@ -204,6 +216,18 @@ class GrammarTest < Test::Unit::TestCase
204
216
  assert_equal("foo(fixnum[to_i, to_s]) -> fixnum",str)
205
217
  end
206
218
 
219
+ def test_method_fusion_array_index_method
220
+ type = @parser.parse("foo(array[[]]) -> fixnum").value
221
+ str = TypeUnparser.unparse(type)
222
+ assert_equal("foo(array[[]]) -> fixnum", str)
223
+ end
224
+
225
+ def test_method_fusion_array_more_methods
226
+ type = @parser.parse("foo(array[[],[]=]) -> fixnum").value
227
+ str = TypeUnparser.unparse(type)
228
+ assert_equal("foo(array[[], []=]) -> fixnum", str)
229
+ end
230
+
207
231
  def test_space_around
208
232
  type = @parser.parse(" foo() -> nil ").value
209
233
  str = TypeUnparser.unparse(type)
@@ -104,8 +104,6 @@
104
104
 
105
105
  <li><a href="./RubyBreaker/Position.html">RubyBreaker::Position</a>
106
106
 
107
- <li><a href="./RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
108
-
109
107
  <li><a href="./RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
110
108
 
111
109
  <li><a href="./RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -98,8 +98,6 @@
98
98
 
99
99
  <li><a href="./RubyBreaker/Position.html">RubyBreaker::Position</a>
100
100
 
101
- <li><a href="./RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
102
-
103
101
  <li><a href="./RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
104
102
 
105
103
  <li><a href="./RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -118,8 +118,6 @@
118
118
 
119
119
  <li><a href="../RubyBreaker/Position.html">RubyBreaker::Position</a>
120
120
 
121
- <li><a href="../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
122
-
123
121
  <li><a href="../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
124
122
 
125
123
  <li><a href="../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -160,8 +160,6 @@
160
160
 
161
161
  <li><a href="./RubyBreaker/Position.html">RubyBreaker::Position</a>
162
162
 
163
- <li><a href="./RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
164
-
165
163
  <li><a href="./RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
166
164
 
167
165
  <li><a href="./RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -561,7 +559,7 @@ href="RubyBreaker.html">RubyBreaker</a> as a shell program.</p>
561
559
 
562
560
 
563
561
  <div class="method-source-code" id="run-source">
564
- <pre><span class="ruby-comment"># File lib/rubybreaker.rb, line 171</span>
562
+ <pre><span class="ruby-comment"># File lib/rubybreaker.rb, line 175</span>
565
563
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">run</span>(*<span class="ruby-identifier">mods</span>)
566
564
  <span class="ruby-constant">RubyBreaker</span>.<span class="ruby-identifier">setup_logger</span>() <span class="ruby-keyword">unless</span> <span class="ruby-constant">RubyBreaker</span>.<span class="ruby-identifier">defined_logger?</span>()
567
565
 
@@ -108,8 +108,6 @@
108
108
 
109
109
  <li><a href="../RubyBreaker/Position.html">RubyBreaker::Position</a>
110
110
 
111
- <li><a href="../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
112
-
113
111
  <li><a href="../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
114
112
 
115
113
  <li><a href="../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -108,8 +108,6 @@
108
108
 
109
109
  <li><a href="../RubyBreaker/Position.html">RubyBreaker::Position</a>
110
110
 
111
- <li><a href="../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
112
-
113
111
  <li><a href="../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
114
112
 
115
113
  <li><a href="../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -120,8 +120,6 @@
120
120
 
121
121
  <li><a href="../RubyBreaker/Position.html">RubyBreaker::Position</a>
122
122
 
123
- <li><a href="../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
124
-
125
123
  <li><a href="../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
126
124
 
127
125
  <li><a href="../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -98,8 +98,6 @@
98
98
 
99
99
  <li><a href="../RubyBreaker/Position.html">RubyBreaker::Position</a>
100
100
 
101
- <li><a href="../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
102
-
103
101
  <li><a href="../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
104
102
 
105
103
  <li><a href="../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -104,8 +104,6 @@
104
104
 
105
105
  <li><a href="../../RubyBreaker/Position.html">RubyBreaker::Position</a>
106
106
 
107
- <li><a href="../../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
108
-
109
107
  <li><a href="../../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
110
108
 
111
109
  <li><a href="../../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>
@@ -104,8 +104,6 @@
104
104
 
105
105
  <li><a href="../../RubyBreaker/Position.html">RubyBreaker::Position</a>
106
106
 
107
- <li><a href="../../RubyBreaker/RDocSupport.html">RubyBreaker::RDocSupport</a>
108
-
109
107
  <li><a href="../../RubyBreaker/RubyTypeUtils.html">RubyBreaker::RubyTypeUtils</a>
110
108
 
111
109
  <li><a href="../../RubyBreaker/Runtime.html">RubyBreaker::Runtime</a>