rdl 1.0.0.rc1

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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rails_types.rb +1 -0
  3. data/lib/rdl.rb +56 -0
  4. data/lib/rdl/config.rb +121 -0
  5. data/lib/rdl/contracts/and.rb +29 -0
  6. data/lib/rdl/contracts/contract.rb +7 -0
  7. data/lib/rdl/contracts/flat.rb +31 -0
  8. data/lib/rdl/contracts/or.rb +25 -0
  9. data/lib/rdl/contracts/proc.rb +24 -0
  10. data/lib/rdl/switch.rb +20 -0
  11. data/lib/rdl/types/annotated_arg.rb +41 -0
  12. data/lib/rdl/types/finitehash.rb +81 -0
  13. data/lib/rdl/types/generic.rb +100 -0
  14. data/lib/rdl/types/intersection.rb +66 -0
  15. data/lib/rdl/types/lexer.rex +39 -0
  16. data/lib/rdl/types/lexer.rex.rb +148 -0
  17. data/lib/rdl/types/method.rb +219 -0
  18. data/lib/rdl/types/nil.rb +50 -0
  19. data/lib/rdl/types/nominal.rb +80 -0
  20. data/lib/rdl/types/optional.rb +54 -0
  21. data/lib/rdl/types/parser.racc +150 -0
  22. data/lib/rdl/types/parser.tab.rb +654 -0
  23. data/lib/rdl/types/singleton.rb +62 -0
  24. data/lib/rdl/types/structural.rb +72 -0
  25. data/lib/rdl/types/top.rb +50 -0
  26. data/lib/rdl/types/tuple.rb +61 -0
  27. data/lib/rdl/types/type.rb +24 -0
  28. data/lib/rdl/types/type_inferencer.rb +73 -0
  29. data/lib/rdl/types/union.rb +74 -0
  30. data/lib/rdl/types/var.rb +51 -0
  31. data/lib/rdl/types/vararg.rb +54 -0
  32. data/lib/rdl/types/wild.rb +26 -0
  33. data/lib/rdl/util.rb +56 -0
  34. data/lib/rdl/wrap.rb +505 -0
  35. data/lib/rdl_types.rb +2 -0
  36. data/types/other/chronic.rb +5 -0
  37. data/types/other/paperclip_attachment.rb +7 -0
  38. data/types/other/securerandom.rb +4 -0
  39. data/types/rails-4.2.1/fixnum.rb +3 -0
  40. data/types/rails-4.2.1/string.rb +3 -0
  41. data/types/rails-tmp/action_dispatch.rb +406 -0
  42. data/types/rails-tmp/active_record.rb +406 -0
  43. data/types/rails-tmp/devise_contracts.rb +216 -0
  44. data/types/ruby-2.2.0/_aliases.rb +4 -0
  45. data/types/ruby-2.2.0/abbrev.rb +5 -0
  46. data/types/ruby-2.2.0/array.rb +137 -0
  47. data/types/ruby-2.2.0/base64.rb +10 -0
  48. data/types/ruby-2.2.0/basic_object.rb +13 -0
  49. data/types/ruby-2.2.0/benchmark.rb +11 -0
  50. data/types/ruby-2.2.0/bigdecimal.rb +15 -0
  51. data/types/ruby-2.2.0/bigmath.rb +12 -0
  52. data/types/ruby-2.2.0/class.rb +17 -0
  53. data/types/ruby-2.2.0/complex.rb +42 -0
  54. data/types/ruby-2.2.0/coverage.rb +6 -0
  55. data/types/ruby-2.2.0/csv.rb +5 -0
  56. data/types/ruby-2.2.0/date.rb +6 -0
  57. data/types/ruby-2.2.0/dir.rb +38 -0
  58. data/types/ruby-2.2.0/encoding.rb +23 -0
  59. data/types/ruby-2.2.0/enumerable.rb +98 -0
  60. data/types/ruby-2.2.0/enumerator.rb +26 -0
  61. data/types/ruby-2.2.0/exception.rb +15 -0
  62. data/types/ruby-2.2.0/file.rb +124 -0
  63. data/types/ruby-2.2.0/fileutils.rb +6 -0
  64. data/types/ruby-2.2.0/fixnum.rb +45 -0
  65. data/types/ruby-2.2.0/float.rb +54 -0
  66. data/types/ruby-2.2.0/gem.rb +245 -0
  67. data/types/ruby-2.2.0/hash.rb +72 -0
  68. data/types/ruby-2.2.0/integer.rb +31 -0
  69. data/types/ruby-2.2.0/io.rb +103 -0
  70. data/types/ruby-2.2.0/kernel.rb +89 -0
  71. data/types/ruby-2.2.0/marshal.rb +5 -0
  72. data/types/ruby-2.2.0/matchdata.rb +26 -0
  73. data/types/ruby-2.2.0/math.rb +53 -0
  74. data/types/ruby-2.2.0/numeric.rb +46 -0
  75. data/types/ruby-2.2.0/object.rb +73 -0
  76. data/types/ruby-2.2.0/pathname.rb +106 -0
  77. data/types/ruby-2.2.0/process.rb +127 -0
  78. data/types/ruby-2.2.0/random.rb +15 -0
  79. data/types/ruby-2.2.0/range.rb +38 -0
  80. data/types/ruby-2.2.0/rational.rb +31 -0
  81. data/types/ruby-2.2.0/regexp.rb +30 -0
  82. data/types/ruby-2.2.0/set.rb +58 -0
  83. data/types/ruby-2.2.0/string.rb +145 -0
  84. data/types/ruby-2.2.0/strscan.rb +7 -0
  85. data/types/ruby-2.2.0/symbol.rb +29 -0
  86. data/types/ruby-2.2.0/time.rb +68 -0
  87. data/types/ruby-2.2.0/uri.rb +18 -0
  88. data/types/ruby-2.2.0/yaml.rb +5 -0
  89. metadata +131 -0
@@ -0,0 +1,216 @@
1
+ require'rdl'
2
+
3
+ module MapperHelper
4
+ class << self
5
+ attr_accessor :namespace_stack
6
+ end
7
+
8
+ def self.devise_for_info_valid?(model, type, action, routes, path_prefix)
9
+ ctrl_cls = model.to_s.pluralize.camelize + "Controller"
10
+ ctrl_cls = eval(ctrl_cls)
11
+
12
+ info = get_devise_for_info(model, type, action, path_prefix)
13
+ path_helper_method = info[:path_helper][0]
14
+ url_helper_method = info[:url_helper][0]
15
+ path_helper_method_type = info[:path_helper][0]
16
+ url_helper_method_type = info[:url_helper][0]
17
+ path = info[:path]
18
+ verb = info[:verb]
19
+ ctrl = info[:controller]
20
+
21
+ # TODO: this part should be in post_task, but need a better way to
22
+ # take care of shared code?
23
+
24
+ # typesig(ctrl_cls, path_helper_method, path_helper_method_type)
25
+ # typesig(ctrl_cls, url_helper_method, url_helper_method_type)
26
+
27
+ route_added = routes.any? {|r|
28
+ defaults = r.defaults
29
+ route_path = r.path.spec.to_s.split('(')[0]
30
+
31
+ route_path == path and verb.include?(r.verb) and
32
+ defaults[:action] == action.to_s and defaults[:controller] == ctrl
33
+ }
34
+
35
+ ctrl_cls.instance_methods.include?(path_helper_method) and
36
+ ctrl_cls.instance_methods.include?(url_helper_method) and
37
+ route_added
38
+ end
39
+
40
+ def self.get_devise_for_info(model, type, action, path_prefix="")
41
+ # TODO: the arg types may be (*Hash), where each Hash is a user_session?
42
+ # where is this defined?
43
+
44
+ model_s = model.to_s.singularize
45
+ model_s_c = model_s.camelize
46
+
47
+ ns = MapperHelper.namespace_stack
48
+ namespace_str = ns.empty? ? "" : ns.join("_") + "_"
49
+ namespace_path_str = ns.empty? ? "" : ns.join("/") + "/"
50
+ ctrl_prefix = namespace_path_str == "" ? "devise/" : namespace_path_str
51
+
52
+ case type
53
+ when :session
54
+ case action
55
+ when :new
56
+ h = :"new_#{namespace_str}#{model_s}_session"
57
+ v = [/^GET$/]
58
+ p = "#{path_prefix}/#{model}/sign_in"
59
+ pht = "(?Hash) -> String"
60
+ when :create
61
+ h = :"#{namespace_str}#{model_s}_session"
62
+ v = [/^POST$/]
63
+ p = "#{path_prefix}/#{model}/sign_in"
64
+ pht = "(?Hash) -> String"
65
+ when :destroy
66
+ h = :"destroy_#{namespace_str}#{model_s}_session"
67
+ v = [/^DELETE$/]
68
+ p = "#{path_prefix}/#{model}/sign_out"
69
+ # TODO: Is there a better way to specify arg is a user session?
70
+ pht = "(?Hash) -> String"
71
+ else
72
+ raise Exception, "invalid action for #{type.inspect}"
73
+ end
74
+
75
+ controller = "#{ctrl_prefix}sessions"
76
+ when :password
77
+ case action
78
+ when :new
79
+ h = :"new_#{namespace_str}#{model_s}_password"
80
+ v = [/^GET$/]
81
+ p = "#{path_prefix}/#{model}/password/new"
82
+ pht = "(?Hash) -> String"
83
+ when :edit
84
+ h = :"edit_#{namespace_str}#{model_s}_password"
85
+ v = [/^GET$/]
86
+ p = "#{path_prefix}/#{model}/password/edit"
87
+ pht = "(?Hash) -> String"
88
+ when :update
89
+ h = :"#{namespace_str}#{model_s}_password"
90
+ v = [/^PUT$/]
91
+ p = "#{path_prefix}/#{model}/password"
92
+ pht = "(?Hash) -> String"
93
+ when :create
94
+ h = :"#{namespace_str}#{model_s}_password"
95
+ v = [/^POST$/]
96
+ p = "#{path_prefix}/#{model}/password"
97
+ pht = "(?Hash) -> String"
98
+ else
99
+ raise Exception, "invalid action for #{type.inspect}"
100
+ end
101
+
102
+ controller = "#{ctrl_prefix}passwords"
103
+ when :confirmation
104
+ case action
105
+ when :new
106
+ h = :"new_#{namespace_str}#{model_s}_confirmation"
107
+ v = [/^GET$/]
108
+ p = "#{path_prefix}/#{model}/confirmation/new"
109
+ pht = "(?Hash) -> String"
110
+ when :show
111
+ h = :"#{namespace_str}#{model_s}_confirmation"
112
+ v = [/^GET$/]
113
+ p = "#{path_prefix}/#{model}/confirmation"
114
+ pht = "(?Hash) -> String"
115
+ when :create
116
+ h = :"#{namespace_str}#{model_s}_confirmation"
117
+ v = [/^POST$/]
118
+ p = "#{path_prefix}/#{model}/confirmation"
119
+ pht = "(?Hash) -> String"
120
+ else
121
+ raise Exception, "invalid action for #{type.inspect}"
122
+ end
123
+
124
+ controller = "#{ctrl_prefix}confirmations"
125
+ else
126
+ raise Exception, "invalid action"
127
+ end
128
+
129
+ ph = :"#{h}_path"
130
+ uh = :"#{h}_url"
131
+ uht = pht
132
+
133
+ {:verb => v, :path => p, :path_helper => [ph, pht], :url_helper => [uh, uht], :controller => controller}
134
+ end
135
+ end
136
+
137
+ module ActionDispatch::Routing
138
+ class Mapper
139
+ extend RDL
140
+
141
+ spec :namespace do
142
+ pre_task do |arg|
143
+ MapperHelper.namespace_stack = [] if not MapperHelper.namespace_stack
144
+ MapperHelper.namespace_stack.push(arg)
145
+ end
146
+
147
+ post_task do |ret, *arg|
148
+ MapperHelper.namespace_stack.pop
149
+ end
150
+ end
151
+
152
+ # TODO: other valid options for devise_for
153
+ spec :devise_for do
154
+ post_cond do |ret, *args|
155
+ model = args[0].to_s
156
+ model_s = model.singularize
157
+ model_cls = eval(model_s.camelize)
158
+
159
+ if args[-1].class == Hash and args[-1].keys.include?(:path_prefix)
160
+ path_prefix = "/#{args[-1][:path_prefix]}"
161
+ else
162
+ path_prefix = ""
163
+ end
164
+
165
+ routes = Rails.application.routes.routes.to_a
166
+
167
+ # default is session
168
+ actions = [:new, :create, :destroy]
169
+
170
+ session_info_valid = actions.all? {|action|
171
+ MapperHelper.devise_for_info_valid?(model, :session, action, routes, path_prefix)
172
+ }
173
+
174
+ if model_cls.devise_modules.include?(:recoverable)
175
+ actions = [:new, :edit, :update, :create]
176
+
177
+ password_info_valid = actions.all? {|action|
178
+ MapperHelper.devise_for_info_valid?(model, :password, action, routes, path_prefix)
179
+ }
180
+ else
181
+ password_info_valid = true
182
+ end
183
+
184
+ if model_cls.devise_modules.include?(:confirmable)
185
+ actions = [:new, :show, :create]
186
+
187
+ confirmation_info_valid = actions.all? {|action|
188
+ MapperHelper.devise_for_info_valid?(model, :confirmation, action, routes, path_prefix)
189
+ }
190
+ else
191
+ confirmation_info_valid = true
192
+ end
193
+
194
+ ns = MapperHelper.namespace_stack
195
+ namespace_str = ns.empty? ? "" : ns.join("_") + "_"
196
+
197
+ helper_methods = {}
198
+ helper_methods[:"current_#{namespace_str}#{model_s}"] = "() -> #{model_cls}"
199
+ helper_methods[:"#{namespace_str}#{model_s}_signed_in?"] = "() -> %bool"
200
+ helper_methods[:"authenticate_#{namespace_str}#{model_s}!"] = "() -> #{model_cls}"
201
+
202
+ helper_info_valid = helper_methods.keys.all? {|m|
203
+ ApplicationController.instance_methods.include?(m)
204
+ }
205
+
206
+ # this should be in post_task? but how to take care of shared code
207
+ helper_methods.each {|method, type|
208
+ #add_typesig(ApplicationController, method, type)
209
+ }
210
+
211
+ session_info_valid and password_info_valid and confirmation_info_valid and helper_info_valid
212
+ end
213
+ end
214
+ end
215
+ end
216
+
@@ -0,0 +1,4 @@
1
+ type_alias '%real', 'Integer or Float or Rational'
2
+ type_alias '%string', '[to_str: () -> String]'
3
+ type_alias '%path', '%string or Pathname'
4
+ type_alias '%open_args', '{external_encoding: ?String, internal_encoding: ?String, encoding: ?String, textmode: ?%any, binmode: ?%any, autoclose: ?%any, mode: ?String}'
@@ -0,0 +1,5 @@
1
+ module Abbrev
2
+ nowrap
3
+
4
+ type 'self.abbrev', '(Array<String>) -> Hash<String,String>'
5
+ end
@@ -0,0 +1,137 @@
1
+ class Array
2
+ nowrap
3
+
4
+ type_params [:t], :all?
5
+
6
+ type :<<, '(t) -> Array<t>'
7
+ type :[], '(Range<Fixnum>) -> Array<t>'
8
+ type :[], '(Fixnum or Float) -> t'
9
+ type :[], '(Fixnum, Fixnum) -> Array<t>'
10
+ type :&, '(Array<u>) -> Array<t>'
11
+ type :*, '(Fixnum) -> Array<t>'
12
+ type :*, '(String) -> String'
13
+ type :+, '(Enumerable<u>) -> Array<u or t>'
14
+ type :-, '(Array<u>) -> Array<u or t>'
15
+ type :slice, '(Range<Fixnum>) -> Array<t>'
16
+ type :slice, '(Fixnum) -> t'
17
+ type :slice, '(Fixnum, Fixnum) -> Array<t>'
18
+ type :[]=, '(Fixnum, t) -> t'
19
+ type :[]=, '(Fixnum, Fixnum, t) -> t'
20
+ #type :[]=, '(Fixnum, Fixnum, Array<t>) -> Array<t>'
21
+ #type :[]=, '(Range, Array<t>) -> Array<t>'
22
+ type :[]=, '(Range<Fixnum>, t) -> t'
23
+ type :assoc, '(t) -> Array<t>'
24
+ type :at, '(Fixnum) -> t'
25
+ type :clear, '() -> Array<t>'
26
+ type :map, '() {(t) ->u} -> Array<u>'
27
+ type :map, '() -> Enumerator<t>'
28
+ type :map!, '() {(t) ->u} -> Array<u>'
29
+ type :map!, '() -> Enumerator<t>'
30
+ type :collect, '() { (t) -> u } -> Array<u>'
31
+ type :collect, '() -> Enumerator<t>'
32
+ type :combination, '(Fixnum) { (Array<t>) -> %any } -> Array<t>'
33
+ type :combination, '(Fixnum) -> Enumerator<t>'
34
+ type :push, '(?t) -> Array<t>'
35
+ type :compact, '() -> Array<t>'
36
+ type :compact!, '() -> Array<t>'
37
+ type :concat, '(Array<t>) -> Array<t>'
38
+ type :count, '() -> Fixnum'
39
+ type :count, '(t) -> Fixnum'
40
+ type :count, '() { (t) -> %bool } -> Fixnum'
41
+ type :cycle, '(?Fixnum) { (t) -> %any } -> %any'
42
+ type :cycle, '(?Fixnum) -> Enumerator<t>'
43
+ type :delete, '(u) -> t'
44
+ type :delete, '(u) { () -> v } -> t or v'
45
+ type :delete_at, '(Fixnum) -> Array<t>'
46
+ type :delete_if, '() { (t) -> %bool } -> Array<t>'
47
+ type :delete_if, '() -> Enumerator<t>'
48
+ type :drop, '(Fixnum) -> Array<t>'
49
+ type :drop_while, '() { (t) -> %bool } -> Array<t>'
50
+ type :drop_while, '() -> Enumerator<t>'
51
+ type :each, '() -> Enumerator<t>'
52
+ type :each, '() { (t) -> %any } -> Array<t>'
53
+ type :each_index, '() { (Fixnum) -> %any } -> Array<t>'
54
+ type :each_index, '() -> Enumerator<t>'
55
+ type :empty?, '() -> %bool'
56
+ type :fetch, '(Fixnum) -> t'
57
+ type :fetch, '(Fixnum, u) -> u'
58
+ type :fetch, '(Fixnum) { (Fixnum) -> u } -> t or u'
59
+ type :fill, '(t) -> Array<t>'
60
+ type :fill, '(t,Fixnum,?Fixnum) -> Array<t>'
61
+ type :fill, '(t, Range<Fixnum>) -> Array<t>'
62
+ type :fill, '() { (Fixnum) -> t } -> Array<t>'
63
+ type :fill, '(Fixnum, ?Fixnum) { (Fixnum) -> t } -> Array<t>'
64
+ type :fill, '(Range<Fixnum>) { (Fixnum) -> t } -> Array<t>'
65
+ type :flatten, '() -> Array<%any>' # Can't give a more precise type
66
+ type :index, '(u) -> Fixnum'
67
+ type :index, '() { (t) -> %bool } -> Fixnum'
68
+ type :index, '() -> Enumerator<t>'
69
+ type :first, '() -> t'
70
+ type :first, '(Fixnum) -> Array<t>'
71
+ type :include?, '(u) -> %bool'
72
+ type :insert, '(Fixnum, *t) -> Array<t>'
73
+ type :inspect, '() -> String'
74
+ type :join, '(?String) -> String'
75
+ type :keep_if, '() { (t) -> %bool } -> Array<t>'
76
+ type :last, '() -> t'
77
+ type :last, '(Fixnum) -> Array<t>'
78
+ type :member, '(u) -> %bool'
79
+ type :length, '() -> Fixnum'
80
+ type :permutation, '(?Fixnum) -> Enumerator<t>'
81
+ type :permutation, '(?Fixnum) { (Array<t>) -> %any } -> Array<t>'
82
+ type :pop, '(Fixnum) -> Array<t>'
83
+ type :pop, '() -> t'
84
+ type :product, '(*Array<u>) -> Array<Array<t or u>>'
85
+ type :rassoc, '(u) -> t'
86
+ type :reject, '() { (t) -> %bool } -> Array<t>'
87
+ type :reject, '() -> Enumerator<t>'
88
+ type :reject!, '() { (t) -> %bool } -> Array<t>'
89
+ type :reject!, '() -> Enumerator<t>'
90
+ type :repeated_combination, '(Fixnum) { (Array<t>) -> %any } -> Array<t>'
91
+ type :repeated_combination, '(Fixnum) -> Enumerator<t>'
92
+ type :repeated_permutation, '(Fixnum) { (Array<t>) -> %any } -> Array<t>'
93
+ type :repeated_permutation, '(Fixnum) -> Enumerator<t>'
94
+ type :reverse, '() -> Array<t>'
95
+ type :reverse!, '() -> Array<t>'
96
+ type :reverse_each, '() { (t) -> %any } -> Array<t>'
97
+ type :reverse_each, '() -> Enumerator<t>'
98
+ type :rindex, '(u) -> t'
99
+ type :rindex, '() { (t) -> %bool } -> Fixnum'
100
+ type :rindex, '() -> Enumerator<t>'
101
+ type :rotate, '(?Fixnum) -> Array<t>'
102
+ type :rotate!, '(?Fixnum) -> Array<t>'
103
+ type :sample, '() -> t'
104
+ type :sample, '(Fixnum) -> Array<t>'
105
+ type :select, '() { (t) -> %bool } -> Array<t>'
106
+ type :select, '() -> Enumerator<t>'
107
+ type :select!, '() { (t) -> %bool } -> Array<t>'
108
+ type :select!, '() -> Enumerator<t>'
109
+ type :shift, '() -> t'
110
+ type :shift, '(Fixnum) -> Array<t>'
111
+ type :shuffle, '() -> Array<t>'
112
+ type :shuffle!, '() -> Array<t>'
113
+ rdl_alias :size, :length
114
+ rdl_alias :slice, :[]
115
+ type :slice!, '(Range<Fixnum>) -> Array<t>'
116
+ type :slice!, '(Fixnum, Fixnum) -> Array<t>'
117
+ type :slice!, '(Fixnum or Float) -> t'
118
+ type :sort, '() -> Array<t>'
119
+ type :sort, '() { (t,t) -> Fixnum } -> Array<t>'
120
+ type :sort!, '() -> Array<t>'
121
+ type :sort!, '() { (t,t) -> Fixnum } -> Array<t>'
122
+ type :sort_by!, '() { (t) -> u } -> Array<t>'
123
+ type :sort_by!, '() -> Enumerator<t>'
124
+ type :take, '(Fixnum) -> Array<t>'
125
+ type :take_while, '() { (t) ->%bool } -> Array<t>'
126
+ type :take_while, '() -> Enumerator<t>'
127
+ type :to_a, '() -> Array<t>'
128
+ type :to_ary, '() -> Array<t>'
129
+ rdl_alias :to_s, :inspect
130
+ type :transpose, '() -> Array<t>'
131
+ type :uniq, '() -> Array<t>'
132
+ type :uniq!, '() -> Array<t>'
133
+ type :unshift, '(*t) -> Array<t>'
134
+ type :values_at, '(*Range<Fixnum> or Fixnum) -> Array<t>'
135
+ type :zip, '(*Array<u>) -> Array<Array<t or u>>'
136
+ type :|, '(Array<u>) -> Array<t or u>'
137
+ end
@@ -0,0 +1,10 @@
1
+ module Base64
2
+ nowrap
3
+
4
+ type 'self.decode64', '(String) -> String'
5
+ type 'self.encode64', '(String) -> String'
6
+ type 'self.strict_decode64', '(String) -> String'
7
+ type 'self.strict_encode64', '(String) -> String'
8
+ type 'self.urlsafe_decode64', '(String) -> String'
9
+ type 'self.urlsafe_encode64', '(String) -> String'
10
+ end
@@ -0,0 +1,13 @@
1
+ class BasicObject
2
+ nowrap
3
+ type :==, '(%any other) -> %bool'
4
+ type :equal?, '(%any other) -> %bool'
5
+ type :!, '() -> %bool'
6
+ type :!=, '(%any other) -> %bool'
7
+ type :instance_eval, '(String, ?String filename, ?Fixnum lineno) -> %any'
8
+ type :instance_eval, '() { () -> %any } -> %any'
9
+ type :instance_exec, '(*%any args) { (*%any) -> %any } -> %any'
10
+ type :__send__, '(Symbol, *%any) -> %any obj'
11
+ rdl_alias :__id__, :object_id
12
+ type :object_id, '() -> Fixnum'
13
+ end
@@ -0,0 +1,11 @@
1
+ module Benchmark
2
+ nowrap
3
+
4
+ type 'self.benchmark', '(String, ?Fixnum, ?String, *String) -> Array<Benchmark::Tms>'
5
+ type 'self.bm', '(?Fixnum, *String) { (Benchmark::Process) -> nil} -> Array<Benchmark::Tms>'
6
+ #type 'self.benchmark', '(Caption: String, Label_Width: ?Fixnum, Format: ?String, Labels: *String) -> Benchmark::Tms'
7
+ #type 'self.bm', '(Label_Width: ?Fixnum, Labels: *String) { (Benchmark::Process) -> nil} -> Array<Benchmark::Tms>'
8
+ type 'self.bmbm', '(?Fixnum label_width) { (Benchmark::Process) -> nil} -> Array<Benchmark::Tms>'
9
+ type 'self.measure', '(?String label) -> Benchmark::Tms'
10
+ type 'self.realtime', '() {(*%any) -> %any} -> Fixnum'
11
+ end
@@ -0,0 +1,15 @@
1
+ class BigDecimal
2
+ nowrap
3
+
4
+ #type 'self._load', '()'
5
+ type 'self.double_fig', '() -> Fixnum'
6
+ type 'self.limit', '(Fixnum) -> Fixnum'
7
+ type 'self.mode', '(Fixnum mode, ?(%bool or Symbol) value) -> Fixnum'
8
+ #type 'self.new', '(Integer or Float or Rational or BigDecimal or String, Fixnum) -> BigDecimal'
9
+ type 'self.save_exception_mode', '() { (*%any) -> %any } -> %any'
10
+ type 'self.save_limit', '() { (*%any) -> %any } -> %any'
11
+ type 'self.save_rounding_mode', '() { (*%any) -> %any } -> %any'
12
+ type 'self.ver', '() -> String'
13
+
14
+ # TODO
15
+ end
@@ -0,0 +1,12 @@
1
+ module BigMath
2
+ nowrap
3
+
4
+ type 'self.exp', '(Fixnum, Fixnum) -> BigDecimal'
5
+ type 'self.log', '(Fixnum, Fixnum) -> BigDecimal'
6
+ type :E, '(Fixnum) -> BigDecimal'
7
+ type :PI, '(Fixnum) -> BigDecimal'
8
+ type :atan, '(Fixnum, Fixnum) -> BigDecimal'
9
+ type :cos, '(Fixnum, Fixnum) -> BigDecimal'
10
+ type :sin, '(Fixnum, Fixnum) -> BigDecimal'
11
+ type :sqrt, '(Fixnum, Fixnum) -> BigDecimal'
12
+ end
@@ -0,0 +1,17 @@
1
+ class Class
2
+ nowrap
3
+
4
+ type 'allocate', '() -> %any' # Instance of class self
5
+ type 'inherited', '(Class) -> %any'
6
+ #type 'initialize', '() -> '
7
+ #type 'new', '(*%any) -> %any' #Causes two other test cases to fail
8
+ type 'superclass', '() -> Class or nil'
9
+
10
+ # type :class_eval, '() {() -> %any} -> %any'
11
+ # type :method_defined?, '(String or Symbol) -> %bool'
12
+ # type :define_method, '(String or Symbol) {(*%any) -> %any} -> Proc'
13
+ type :instance_methods, '(?%bool) -> Array<Symbol>'
14
+ type :class, '() -> Class'
15
+ type :superclass, '() -> Class'
16
+ type :name, '() -> String'
17
+ end