steep 0.11.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (299) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +27 -0
  3. data/.gitmodules +3 -0
  4. data/CHANGELOG.md +5 -0
  5. data/README.md +48 -90
  6. data/Rakefile +10 -6
  7. data/Steepfile +1 -0
  8. data/bin/setup +1 -0
  9. data/bin/smoke_runner.rb +9 -14
  10. data/exe/rbs +3 -0
  11. data/exe/ruby-signature +3 -0
  12. data/exe/steep +1 -0
  13. data/lib/steep.rb +32 -26
  14. data/lib/steep/annotation_parser.rb +167 -0
  15. data/lib/steep/ast/annotation/collection.rb +7 -7
  16. data/lib/steep/ast/types.rb +60 -0
  17. data/lib/steep/ast/types/any.rb +1 -1
  18. data/lib/steep/ast/types/factory.rb +535 -0
  19. data/lib/steep/ast/types/name.rb +3 -3
  20. data/lib/steep/ast/types/var.rb +1 -1
  21. data/lib/steep/cli.rb +56 -240
  22. data/lib/steep/drivers/annotations.rb +36 -19
  23. data/lib/steep/drivers/check.rb +55 -91
  24. data/lib/steep/drivers/init.rb +54 -0
  25. data/lib/steep/drivers/langserver.rb +241 -150
  26. data/lib/steep/drivers/print_project.rb +56 -0
  27. data/lib/steep/drivers/signature_error_printer.rb +25 -0
  28. data/lib/steep/drivers/trace_printer.rb +25 -0
  29. data/lib/steep/drivers/utils/driver_helper.rb +26 -0
  30. data/lib/steep/drivers/validate.rb +18 -38
  31. data/lib/steep/drivers/vendor.rb +46 -0
  32. data/lib/steep/drivers/watch.rb +78 -140
  33. data/lib/steep/errors.rb +22 -13
  34. data/lib/steep/interface/interface.rb +91 -0
  35. data/lib/steep/interface/method.rb +0 -4
  36. data/lib/steep/interface/method_type.rb +362 -2
  37. data/lib/steep/interface/substitution.rb +22 -0
  38. data/lib/steep/project.rb +25 -233
  39. data/lib/steep/project/dsl.rb +132 -0
  40. data/lib/steep/project/file.rb +93 -76
  41. data/lib/steep/project/file_loader.rb +63 -0
  42. data/lib/steep/project/options.rb +7 -0
  43. data/lib/steep/project/target.rb +190 -0
  44. data/lib/steep/signature/errors.rb +25 -77
  45. data/lib/steep/signature/validator.rb +122 -0
  46. data/lib/steep/source.rb +12 -7
  47. data/lib/steep/subtyping/check.rb +357 -633
  48. data/lib/steep/subtyping/constraints.rb +2 -2
  49. data/lib/steep/subtyping/trace.rb +23 -0
  50. data/lib/steep/type_construction.rb +509 -455
  51. data/lib/steep/type_inference/constant_env.rb +16 -24
  52. data/lib/steep/type_inference/type_env.rb +26 -18
  53. data/lib/steep/version.rb +1 -1
  54. data/sample/Steepfile +6 -0
  55. data/sample/lib/conference.rb +12 -0
  56. data/sample/sig/conference.rbs +6 -0
  57. data/smoke/alias/Steepfile +4 -0
  58. data/smoke/alias/a.rb +2 -2
  59. data/smoke/alias/{a.rbi → a.rbs} +1 -1
  60. data/smoke/and/Steepfile +4 -0
  61. data/smoke/array/Steepfile +4 -0
  62. data/smoke/array/a.rb +2 -2
  63. data/smoke/array/b.rb +4 -4
  64. data/smoke/array/c.rb +2 -2
  65. data/smoke/block/Steepfile +5 -0
  66. data/smoke/block/{a.rbi → a.rbs} +1 -1
  67. data/smoke/block/{c.rbi → c.rbs} +0 -0
  68. data/smoke/block/d.rb +6 -6
  69. data/smoke/case/Steepfile +4 -0
  70. data/smoke/case/a.rb +4 -3
  71. data/smoke/class/Steepfile +4 -0
  72. data/smoke/class/a.rb +1 -4
  73. data/smoke/class/a.rbs +24 -0
  74. data/smoke/class/h.rb +6 -2
  75. data/smoke/class/{h.rbi → h.rbs} +1 -2
  76. data/smoke/class/i.rb +1 -2
  77. data/smoke/class/i.rbs +9 -0
  78. data/smoke/const/Steepfile +4 -0
  79. data/smoke/dstr/Steepfile +4 -0
  80. data/smoke/ensure/Steepfile +4 -0
  81. data/smoke/ensure/a.rb +1 -1
  82. data/smoke/enumerator/Steepfile +4 -0
  83. data/smoke/enumerator/a.rb +7 -7
  84. data/smoke/enumerator/b.rb +6 -6
  85. data/smoke/extension/Steepfile +4 -0
  86. data/smoke/extension/{a.rbi → a.rbs} +2 -2
  87. data/smoke/extension/{e.rbi → e.rbs} +2 -2
  88. data/smoke/hash/Steepfile +4 -0
  89. data/smoke/hash/{a.rbi → a.rbs} +0 -0
  90. data/smoke/hash/b.rb +2 -2
  91. data/smoke/hash/c.rb +1 -1
  92. data/smoke/hash/e.rbs +3 -0
  93. data/smoke/hash/f.rb +1 -1
  94. data/smoke/hello/Steepfile +4 -0
  95. data/smoke/hello/hello.rbs +7 -0
  96. data/smoke/if/Steepfile +4 -0
  97. data/smoke/implements/Steepfile +4 -0
  98. data/smoke/implements/a.rbs +6 -0
  99. data/smoke/initialize/Steepfile +4 -0
  100. data/smoke/initialize/a.rbs +3 -0
  101. data/smoke/integer/Steepfile +4 -0
  102. data/smoke/integer/a.rb +5 -3
  103. data/smoke/interface/Steepfile +4 -0
  104. data/smoke/interface/{a.rbi → a.rbs} +0 -0
  105. data/smoke/kwbegin/Steepfile +4 -0
  106. data/smoke/lambda/Steepfile +4 -0
  107. data/smoke/lambda/a.rb +9 -2
  108. data/smoke/literal/Steepfile +4 -0
  109. data/smoke/literal/{literal_methods.rbi → literal_methods.rbs} +0 -0
  110. data/smoke/map/Steepfile +4 -0
  111. data/smoke/map/a.rb +1 -1
  112. data/smoke/method/Steepfile +4 -0
  113. data/smoke/method/{a.rbi → a.rbs} +0 -0
  114. data/smoke/method/b.rb +1 -4
  115. data/smoke/method/d.rb +1 -0
  116. data/smoke/method/d.rbs +3 -0
  117. data/smoke/module/Steepfile +4 -0
  118. data/smoke/module/a.rb +1 -1
  119. data/smoke/module/a.rbs +16 -0
  120. data/smoke/module/c.rb +1 -1
  121. data/smoke/regexp/Steepfile +4 -0
  122. data/smoke/regexp/a.rb +2 -2
  123. data/smoke/regexp/b.rb +16 -16
  124. data/smoke/regression/Steepfile +5 -0
  125. data/smoke/regression/array.rb +2 -2
  126. data/smoke/regression/hash.rb +2 -2
  127. data/smoke/regression/poly_new.rb +2 -0
  128. data/smoke/regression/poly_new.rbs +4 -0
  129. data/smoke/regression/set_divide.rb +2 -2
  130. data/smoke/rescue/Steepfile +4 -0
  131. data/smoke/rescue/a.rb +1 -1
  132. data/smoke/self/Steepfile +4 -0
  133. data/smoke/self/a.rbs +4 -0
  134. data/smoke/skip/Steepfile +4 -0
  135. data/smoke/stdout/Steepfile +4 -0
  136. data/smoke/stdout/{a.rbi → a.rbs} +1 -1
  137. data/smoke/super/Steepfile +4 -0
  138. data/smoke/super/a.rbs +10 -0
  139. data/smoke/type_case/Steepfile +4 -0
  140. data/smoke/type_case/a.rb +1 -1
  141. data/smoke/yield/Steepfile +4 -0
  142. data/smoke/yield/a.rb +2 -2
  143. data/steep.gemspec +14 -7
  144. data/vendor/ruby-signature/.github/workflows/ruby.yml +27 -0
  145. data/vendor/ruby-signature/.gitignore +12 -0
  146. data/vendor/ruby-signature/.rubocop.yml +15 -0
  147. data/vendor/ruby-signature/BSDL +22 -0
  148. data/vendor/ruby-signature/COPYING +56 -0
  149. data/vendor/ruby-signature/Gemfile +6 -0
  150. data/vendor/ruby-signature/README.md +93 -0
  151. data/vendor/ruby-signature/Rakefile +66 -0
  152. data/vendor/ruby-signature/bin/annotate-with-rdoc +156 -0
  153. data/vendor/ruby-signature/bin/console +14 -0
  154. data/vendor/ruby-signature/bin/query-rdoc +103 -0
  155. data/vendor/ruby-signature/bin/setup +10 -0
  156. data/vendor/ruby-signature/bin/sort +88 -0
  157. data/vendor/ruby-signature/bin/test_runner.rb +17 -0
  158. data/vendor/ruby-signature/docs/CONTRIBUTING.md +97 -0
  159. data/vendor/ruby-signature/docs/sigs.md +148 -0
  160. data/vendor/ruby-signature/docs/stdlib.md +152 -0
  161. data/vendor/ruby-signature/docs/syntax.md +528 -0
  162. data/vendor/ruby-signature/exe/rbs +3 -0
  163. data/vendor/ruby-signature/exe/ruby-signature +7 -0
  164. data/vendor/ruby-signature/lib/ruby/signature.rb +64 -0
  165. data/vendor/ruby-signature/lib/ruby/signature/ast/annotation.rb +29 -0
  166. data/vendor/ruby-signature/lib/ruby/signature/ast/comment.rb +29 -0
  167. data/vendor/ruby-signature/lib/ruby/signature/ast/declarations.rb +391 -0
  168. data/vendor/ruby-signature/lib/ruby/signature/ast/members.rb +364 -0
  169. data/vendor/ruby-signature/lib/ruby/signature/buffer.rb +52 -0
  170. data/vendor/ruby-signature/lib/ruby/signature/builtin_names.rb +54 -0
  171. data/vendor/ruby-signature/lib/ruby/signature/cli.rb +534 -0
  172. data/vendor/ruby-signature/lib/ruby/signature/constant.rb +28 -0
  173. data/vendor/ruby-signature/lib/ruby/signature/constant_table.rb +152 -0
  174. data/vendor/ruby-signature/lib/ruby/signature/definition.rb +172 -0
  175. data/vendor/ruby-signature/lib/ruby/signature/definition_builder.rb +921 -0
  176. data/vendor/ruby-signature/lib/ruby/signature/environment.rb +283 -0
  177. data/vendor/ruby-signature/lib/ruby/signature/environment_loader.rb +138 -0
  178. data/vendor/ruby-signature/lib/ruby/signature/environment_walker.rb +126 -0
  179. data/vendor/ruby-signature/lib/ruby/signature/errors.rb +189 -0
  180. data/vendor/ruby-signature/lib/ruby/signature/location.rb +104 -0
  181. data/vendor/ruby-signature/lib/ruby/signature/method_type.rb +125 -0
  182. data/vendor/ruby-signature/lib/ruby/signature/namespace.rb +93 -0
  183. data/vendor/ruby-signature/lib/ruby/signature/parser.y +1343 -0
  184. data/vendor/ruby-signature/lib/ruby/signature/prototype/rb.rb +441 -0
  185. data/vendor/ruby-signature/lib/ruby/signature/prototype/rbi.rb +579 -0
  186. data/vendor/ruby-signature/lib/ruby/signature/prototype/runtime.rb +383 -0
  187. data/vendor/ruby-signature/lib/ruby/signature/substitution.rb +48 -0
  188. data/vendor/ruby-signature/lib/ruby/signature/test.rb +28 -0
  189. data/vendor/ruby-signature/lib/ruby/signature/test/errors.rb +63 -0
  190. data/vendor/ruby-signature/lib/ruby/signature/test/hook.rb +290 -0
  191. data/vendor/ruby-signature/lib/ruby/signature/test/setup.rb +58 -0
  192. data/vendor/ruby-signature/lib/ruby/signature/test/spy.rb +324 -0
  193. data/vendor/ruby-signature/lib/ruby/signature/test/test_helper.rb +185 -0
  194. data/vendor/ruby-signature/lib/ruby/signature/test/type_check.rb +256 -0
  195. data/vendor/ruby-signature/lib/ruby/signature/type_name.rb +72 -0
  196. data/vendor/ruby-signature/lib/ruby/signature/types.rb +932 -0
  197. data/vendor/ruby-signature/lib/ruby/signature/variance_calculator.rb +140 -0
  198. data/vendor/ruby-signature/lib/ruby/signature/vendorer.rb +49 -0
  199. data/vendor/ruby-signature/lib/ruby/signature/version.rb +5 -0
  200. data/vendor/ruby-signature/lib/ruby/signature/writer.rb +271 -0
  201. data/vendor/ruby-signature/ruby-signature.gemspec +45 -0
  202. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +3 -0
  203. data/vendor/ruby-signature/stdlib/base64/base64.rbs +15 -0
  204. data/vendor/ruby-signature/stdlib/builtin/array.rbs +1997 -0
  205. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +280 -0
  206. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +177 -0
  207. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +35 -0
  208. data/vendor/ruby-signature/stdlib/builtin/class.rbs +145 -0
  209. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +116 -0
  210. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +400 -0
  211. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +37 -0
  212. data/vendor/ruby-signature/stdlib/builtin/data.rbs +5 -0
  213. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +2 -0
  214. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +419 -0
  215. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +606 -0
  216. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +404 -0
  217. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +260 -0
  218. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +781 -0
  219. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +582 -0
  220. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +193 -0
  221. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +40 -0
  222. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +68 -0
  223. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +12 -0
  224. data/vendor/ruby-signature/stdlib/builtin/file.rbs +476 -0
  225. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +59 -0
  226. data/vendor/ruby-signature/stdlib/builtin/float.rbs +696 -0
  227. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +121 -0
  228. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +1029 -0
  229. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +710 -0
  230. data/vendor/ruby-signature/stdlib/builtin/io.rbs +683 -0
  231. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +574 -0
  232. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +135 -0
  233. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +141 -0
  234. data/vendor/ruby-signature/stdlib/builtin/math.rbs +66 -0
  235. data/vendor/ruby-signature/stdlib/builtin/method.rbs +182 -0
  236. data/vendor/ruby-signature/stdlib/builtin/module.rbs +248 -0
  237. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +82 -0
  238. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +409 -0
  239. data/vendor/ruby-signature/stdlib/builtin/object.rbs +824 -0
  240. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +426 -0
  241. data/vendor/ruby-signature/stdlib/builtin/process.rbs +354 -0
  242. data/vendor/ruby-signature/stdlib/builtin/random.rbs +93 -0
  243. data/vendor/ruby-signature/stdlib/builtin/range.rbs +226 -0
  244. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +424 -0
  245. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +10 -0
  246. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +131 -0
  247. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +14 -0
  248. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +55 -0
  249. data/vendor/ruby-signature/stdlib/builtin/string.rbs +770 -0
  250. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +13 -0
  251. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +40 -0
  252. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +230 -0
  253. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +1112 -0
  254. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +23 -0
  255. data/vendor/ruby-signature/stdlib/builtin/time.rbs +739 -0
  256. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +91 -0
  257. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +46 -0
  258. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +159 -0
  259. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +17 -0
  260. data/vendor/ruby-signature/stdlib/erb/erb.rbs +18 -0
  261. data/vendor/ruby-signature/stdlib/find/find.rbs +44 -0
  262. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +21 -0
  263. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +23 -0
  264. data/vendor/ruby-signature/stdlib/prime/prime.rbs +188 -0
  265. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +9 -0
  266. data/vendor/ruby-signature/stdlib/set/set.rbs +77 -0
  267. data/vendor/ruby-signature/stdlib/tmpdir/tmpdir.rbs +53 -0
  268. metadata +244 -54
  269. data/.travis.yml +0 -7
  270. data/lib/steep/ast/signature/alias.rb +0 -19
  271. data/lib/steep/ast/signature/class.rb +0 -33
  272. data/lib/steep/ast/signature/const.rb +0 -17
  273. data/lib/steep/ast/signature/env.rb +0 -138
  274. data/lib/steep/ast/signature/extension.rb +0 -21
  275. data/lib/steep/ast/signature/gvar.rb +0 -17
  276. data/lib/steep/ast/signature/interface.rb +0 -31
  277. data/lib/steep/ast/signature/members.rb +0 -115
  278. data/lib/steep/ast/signature/module.rb +0 -21
  279. data/lib/steep/drivers/print_interface.rb +0 -94
  280. data/lib/steep/drivers/scaffold.rb +0 -321
  281. data/lib/steep/drivers/utils/each_signature.rb +0 -31
  282. data/lib/steep/interface/abstract.rb +0 -68
  283. data/lib/steep/interface/builder.rb +0 -637
  284. data/lib/steep/interface/instantiated.rb +0 -163
  285. data/lib/steep/interface/ivar_chain.rb +0 -26
  286. data/lib/steep/parser.y +0 -1278
  287. data/lib/steep/project/listener.rb +0 -53
  288. data/smoke/class/a.rbi +0 -24
  289. data/smoke/class/d.rb +0 -9
  290. data/smoke/class/e.rb +0 -12
  291. data/smoke/class/i.rbi +0 -9
  292. data/smoke/hash/e.rbi +0 -3
  293. data/smoke/hello/hello.rbi +0 -7
  294. data/smoke/implements/a.rbi +0 -6
  295. data/smoke/initialize/a.rbi +0 -3
  296. data/smoke/module/a.rbi +0 -16
  297. data/smoke/self/a.rbi +0 -4
  298. data/smoke/super/a.rbi +0 -10
  299. data/stdlib/builtin.rbi +0 -787
@@ -0,0 +1,135 @@
1
+ # The marshaling library converts collections of Ruby objects into a byte
2
+ # stream, allowing them to be stored outside the currently active script.
3
+ # This data may subsequently be read and the original objects
4
+ # reconstituted.
5
+ #
6
+ # Marshaled data has major and minor version numbers stored along with the
7
+ # object information. In normal use, marshaling can only load data written
8
+ # with the same major version number and an equal or lower minor version
9
+ # number. If Ruby’s “verbose” flag is set (normally using -d, -v, -w, or
10
+ # –verbose) the major and minor numbers must match exactly.
11
+ # [Marshal](Marshal) versioning is independent of
12
+ # Ruby’s version numbers. You can extract the version by reading the
13
+ # first two bytes of marshaled data.
14
+ #
15
+ # ```ruby
16
+ # str = Marshal.dump("thing")
17
+ # RUBY_VERSION #=> "1.9.0"
18
+ # str[0].ord #=> 4
19
+ # str[1].ord #=> 8
20
+ # ```
21
+ #
22
+ # Some objects cannot be dumped: if the objects to be dumped include
23
+ # bindings, procedure or method objects, instances of class
24
+ # [IO](https://ruby-doc.org/core-2.6.3/IO.html), or singleton objects, a
25
+ # [TypeError](https://ruby-doc.org/core-2.6.3/TypeError.html) will be
26
+ # raised.
27
+ #
28
+ # If your class has special serialization needs (for example, if you want
29
+ # to serialize in some specific format), or if it contains objects that
30
+ # would otherwise not be serializable, you can implement your own
31
+ # serialization strategy.
32
+ #
33
+ # There are two methods of doing this, your object can define either
34
+ # marshal\_dump and marshal\_load or \_dump and \_load. marshal\_dump will
35
+ # take precedence over \_dump if both are defined. marshal\_dump may
36
+ # result in smaller [Marshal](Marshal) strings.
37
+ #
38
+ #
39
+ # By design, [::load](Marshal#method-c-load) can
40
+ # deserialize almost any class loaded into the Ruby process. In many cases
41
+ # this can lead to remote code execution if the
42
+ # [Marshal](Marshal) data is loaded from an untrusted
43
+ # source.
44
+ #
45
+ # As a result, [::load](Marshal#method-c-load) is not
46
+ # suitable as a general purpose serialization format and you should never
47
+ # unmarshal user supplied input or other untrusted data.
48
+ #
49
+ # If you need to deserialize untrusted data, use JSON or another
50
+ # serialization format that is only able to load simple, ‘primitive’ types
51
+ # such as [String](https://ruby-doc.org/core-2.6.3/String.html),
52
+ # [Array](https://ruby-doc.org/core-2.6.3/Array.html),
53
+ # [Hash](https://ruby-doc.org/core-2.6.3/Hash.html), etc. Never allow
54
+ # user input to specify arbitrary types to deserialize into.
55
+ #
56
+ #
57
+ # When dumping an object the method marshal\_dump will be called.
58
+ # marshal\_dump must return a result containing the information necessary
59
+ # for marshal\_load to reconstitute the object. The result can be any
60
+ # object.
61
+ #
62
+ # When loading an object dumped using marshal\_dump the object is first
63
+ # allocated then marshal\_load is called with the result from
64
+ # marshal\_dump. marshal\_load must recreate the object from the
65
+ # information in the result.
66
+ #
67
+ # Example:
68
+ #
69
+ # ```ruby
70
+ # class MyObj
71
+ # def initialize name, version, data
72
+ # @name = name
73
+ # @version = version
74
+ # @data = data
75
+ # end
76
+ #
77
+ # def marshal_dump
78
+ # [@name, @version]
79
+ # end
80
+ #
81
+ # def marshal_load array
82
+ # @name, @version = array
83
+ # end
84
+ # end
85
+ # ```
86
+ #
87
+ #
88
+ # Use \_dump and \_load when you need to allocate the object you’re
89
+ # restoring yourself.
90
+ #
91
+ # When dumping an object the instance method \_dump is called with an
92
+ # [Integer](https://ruby-doc.org/core-2.6.3/Integer.html) which indicates
93
+ # the maximum depth of objects to dump (a value of -1 implies that you
94
+ # should disable depth checking). \_dump must return a
95
+ # [String](https://ruby-doc.org/core-2.6.3/String.html) containing the
96
+ # information necessary to reconstitute the object.
97
+ #
98
+ # The class method \_load should take a
99
+ # [String](https://ruby-doc.org/core-2.6.3/String.html) and use it to
100
+ # return an object of the same class.
101
+ #
102
+ # Example:
103
+ #
104
+ # ```ruby
105
+ # class MyObj
106
+ # def initialize name, version, data
107
+ # @name = name
108
+ # @version = version
109
+ # @data = data
110
+ # end
111
+ #
112
+ # def _dump level
113
+ # [@name, @version].join ':'
114
+ # end
115
+ #
116
+ # def self._load args
117
+ # new(*args.split(':'))
118
+ # end
119
+ # end
120
+ # ```
121
+ #
122
+ # Since [::dump](Marshal#method-c-dump) outputs a
123
+ # string you can have \_dump return a
124
+ # [Marshal](Marshal) string which is Marshal.loaded in
125
+ # \_load for complex objects.
126
+ module Marshal
127
+ def self.dump: (Object arg0, ?IO arg1, ?Integer arg2) -> Object
128
+ | (Object arg0, ?Integer arg1) -> Object
129
+
130
+ def self.load: (String arg0, ?Proc arg1) -> Object
131
+ end
132
+
133
+ Marshal::MAJOR_VERSION: Integer
134
+
135
+ Marshal::MINOR_VERSION: Integer
@@ -0,0 +1,141 @@
1
+ class MatchData < Object
2
+ def ==: (untyped arg0) -> bool
3
+
4
+ def []: (Integer i_or_start_or_range_or_name) -> String?
5
+ | (Integer i_or_start_or_range_or_name, ?Integer length) -> ::Array[String]
6
+ | (::Range[Integer] i_or_start_or_range_or_name) -> ::Array[String]
7
+ | (String | Symbol i_or_start_or_range_or_name) -> String?
8
+
9
+ def begin: (Integer | String | Symbol n) -> Integer?
10
+
11
+ # Returns the array of captures; equivalent to `mtch.to_a[1..-1]` .
12
+ #
13
+ # ```ruby
14
+ # f1,f2,f3,f4 = /(.)(.)(\d+)(\d)/.match("THX1138.").captures
15
+ # f1 #=> "H"
16
+ # f2 #=> "X"
17
+ # f3 #=> "113"
18
+ # f4 #=> "8"
19
+ # ```
20
+ def captures: () -> ::Array[String]
21
+
22
+ def `end`: (Integer | String | Symbol n) -> Integer?
23
+
24
+ def eql?: (untyped other) -> bool
25
+
26
+ # Produce a hash based on the target string, regexp and matched positions
27
+ # of this matchdata.
28
+ #
29
+ # See also Object\#hash.
30
+ def hash: () -> Integer
31
+
32
+ def inspect: () -> String
33
+
34
+ # Returns the number of elements in the match array.
35
+ #
36
+ # ```ruby
37
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
38
+ # m.length #=> 5
39
+ # m.size #=> 5
40
+ # ```
41
+ def length: () -> Integer
42
+
43
+ # Returns a [Hash](https://ruby-doc.org/core-2.6.3/Hash.html) using named
44
+ # capture.
45
+ #
46
+ # A key of the hash is a name of the named captures. A value of the hash
47
+ # is a string of last successful capture of corresponding group.
48
+ #
49
+ # ```ruby
50
+ # m = /(?.)(?.)/.match("01")
51
+ # m.named_captures #=> {"a" => "0", "b" => "1"}
52
+ #
53
+ # m = /(?.)(?.)?/.match("0")
54
+ # m.named_captures #=> {"a" => "0", "b" => nil}
55
+ #
56
+ # m = /(?.)(?.)/.match("01")
57
+ # m.named_captures #=> {"a" => "1"}
58
+ #
59
+ # m = /(?x)|(?y)/.match("x")
60
+ # m.named_captures #=> {"a" => "x"}
61
+ # ```
62
+ def named_captures: () -> ::Hash[String, String?]
63
+
64
+ def names: () -> ::Array[String]
65
+
66
+ def offset: (Integer | Symbol | String n) -> ([Integer, Integer] | [nil, nil])
67
+
68
+ # Returns the portion of the original string after the current match.
69
+ # Equivalent to the special variable `$'` .
70
+ #
71
+ # ```ruby
72
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138: The Movie")
73
+ # m.post_match #=> ": The Movie"
74
+ # ```
75
+ def post_match: () -> String
76
+
77
+ # Returns the portion of the original string before the current match.
78
+ # Equivalent to the special variable `` $` `` .
79
+ #
80
+ # ```ruby
81
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
82
+ # m.pre_match #=> "T"
83
+ # ```
84
+ def pre_match: () -> String
85
+
86
+ # Returns the regexp.
87
+ #
88
+ # ```ruby
89
+ # m = /a.*b/.match("abc")
90
+ # m.regexp #=> /a.*b/
91
+ # ```
92
+ def regexp: () -> Regexp
93
+
94
+ # Returns the number of elements in the match array.
95
+ #
96
+ # ```ruby
97
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
98
+ # m.length #=> 5
99
+ # m.size #=> 5
100
+ # ```
101
+ def size: () -> Integer
102
+
103
+ # Returns a frozen copy of the string passed in to `match` .
104
+ #
105
+ # ```ruby
106
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
107
+ # m.string #=> "THX1138."
108
+ # ```
109
+ def string: () -> String
110
+
111
+ # Returns the array of matches.
112
+ #
113
+ # ```ruby
114
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
115
+ # m.to_a #=> ["HX1138", "H", "X", "113", "8"]
116
+ # ```
117
+ #
118
+ # Because `to_a` is called when expanding `*` *variable* , there’s a
119
+ # useful assignment shortcut for extracting matched fields. This is
120
+ # slightly slower than accessing the fields directly (as an intermediate
121
+ # array is generated).
122
+ #
123
+ # ```ruby
124
+ # all,f1,f2,f3 = * /(.)(.)(\d+)(\d)/.match("THX1138.")
125
+ # all #=> "HX1138"
126
+ # f1 #=> "H"
127
+ # f2 #=> "X"
128
+ # f3 #=> "113"
129
+ # ```
130
+ def to_a: () -> ::Array[String]
131
+
132
+ # Returns the entire matched string.
133
+ #
134
+ # ```ruby
135
+ # m = /(.)(.)(\d+)(\d)/.match("THX1138.")
136
+ # m.to_s #=> "HX1138"
137
+ # ```
138
+ def to_s: () -> String
139
+
140
+ def values_at: (*Integer | Symbol | String indexes) -> ::Array[String?]
141
+ end
@@ -0,0 +1,66 @@
1
+ # The [Math](Math) module contains module functions
2
+ # for basic trigonometric and transcendental functions. See class
3
+ # [Float](https://ruby-doc.org/core-2.6.3/Float.html) for a list of
4
+ # constants that define Ruby's floating point accuracy.
5
+ #
6
+ # Domains and codomains are given only for real (not complex) numbers.
7
+ module Math
8
+ def self.acos: (Integer | Float | Rational | BigDecimal x) -> Float
9
+
10
+ def self.acosh: (Integer | Float | Rational | BigDecimal x) -> Float
11
+
12
+ def self.asin: (Integer | Float | Rational | BigDecimal x) -> Float
13
+
14
+ def self.asinh: (Integer | Float | Rational | BigDecimal x) -> Float
15
+
16
+ def self.atan: (Integer | Float | Rational | BigDecimal x) -> Float
17
+
18
+ def self.atan2: (Integer | Float | Rational | BigDecimal y, Integer | Float | Rational | BigDecimal x) -> Float
19
+
20
+ def self.atanh: (Integer | Float | Rational | BigDecimal x) -> Float
21
+
22
+ def self.cbrt: (Integer | Float | Rational | BigDecimal x) -> Float
23
+
24
+ def self.cos: (Integer | Float | Rational | BigDecimal x) -> Float
25
+
26
+ def self.cosh: (Integer | Float | Rational | BigDecimal x) -> Float
27
+
28
+ def self.erf: (Integer | Float | Rational | BigDecimal x) -> Float
29
+
30
+ def self.erfc: (Integer | Float | Rational | BigDecimal x) -> Float
31
+
32
+ def self.exp: (Integer | Float | Rational | BigDecimal x) -> Float
33
+
34
+ def self.frexp: (Integer | Float | Rational | BigDecimal x) -> [ Integer | Float | Rational | BigDecimal, Integer | Float | Rational | BigDecimal ]
35
+
36
+ def self.gamma: (Integer | Float | Rational | BigDecimal x) -> Float
37
+
38
+ def self.hypot: (Integer | Float | Rational | BigDecimal x, Integer | Float | Rational | BigDecimal y) -> Float
39
+
40
+ def self.ldexp: (Integer | Float | Rational | BigDecimal fraction, Integer | Float | Rational | BigDecimal exponent) -> Float
41
+
42
+ def self.lgamma: (Integer | Float | Rational | BigDecimal x) -> (Integer | Float)
43
+
44
+ def self.log: (Integer | Float | Rational | BigDecimal x, ?Integer | Float | Rational | BigDecimal base) -> Float
45
+
46
+ def self.log10: (Integer | Float | Rational | BigDecimal x) -> Float
47
+
48
+ def self.log2: (Integer | Float | Rational | BigDecimal x) -> Float
49
+
50
+ def self.sin: (Integer | Float | Rational | BigDecimal x) -> Float
51
+
52
+ def self.sinh: (Integer | Float | Rational | BigDecimal x) -> Float
53
+
54
+ def self.sqrt: (Integer | Float | Rational | BigDecimal x) -> Float
55
+
56
+ def self.tan: (Integer | Float | Rational | BigDecimal x) -> Float
57
+
58
+ def self.tanh: (Integer | Float | Rational | BigDecimal x) -> Float
59
+ end
60
+
61
+ Math::E: Float
62
+
63
+ Math::PI: Float
64
+
65
+ class Math::DomainError < StandardError
66
+ end
@@ -0,0 +1,182 @@
1
+ class Method < Object
2
+ # Returns a `Proc` object corresponding to this method.
3
+ def to_proc: () -> Proc
4
+
5
+ # Invokes the *meth* with the specified arguments, returning the method’s
6
+ # return value.
7
+ #
8
+ # ```ruby
9
+ # m = 12.method("+")
10
+ # m.call(3) #=> 15
11
+ # m.call(20) #=> 32
12
+ # ```
13
+ def call: (*untyped args) -> untyped
14
+
15
+ # Returns a proc that is the composition of this method and the given *g*
16
+ # . The returned proc takes a variable number of arguments, calls *g* with
17
+ # them then calls this method with the result.
18
+ #
19
+ # ```ruby
20
+ # def f(x)
21
+ # x * x
22
+ # end
23
+ #
24
+ # f = self.method(:f)
25
+ # g = proc {|x| x + x }
26
+ # p (f << g).call(2) #=> 16
27
+ # ```
28
+ def <<: (untyped g) -> untyped
29
+
30
+ # Invokes the method with `obj` as the parameter like
31
+ # [call](Method.downloaded.ruby_doc#method-i-call). This allows a method
32
+ # object to be the target of a `when` clause in a case statement.
33
+ #
34
+ # ```ruby
35
+ # require 'prime'
36
+ #
37
+ # case 1373
38
+ # when Prime.method(:prime?)
39
+ # # ...
40
+ # end
41
+ # ```
42
+ def ===: (*untyped obj) -> untyped
43
+
44
+ # Returns a proc that is the composition of this method and the given *g*
45
+ # . The returned proc takes a variable number of arguments, calls *g* with
46
+ # them then calls this method with the result.
47
+ #
48
+ # ```ruby
49
+ # def f(x)
50
+ # x * x
51
+ # end
52
+ #
53
+ # f = self.method(:f)
54
+ # g = proc {|x| x + x }
55
+ # p (f >> g).call(2) #=> 8
56
+ # ```
57
+ def >>: (untyped g) -> untyped
58
+
59
+ # Invokes the *meth* with the specified arguments, returning the method’s
60
+ # return value.
61
+ #
62
+ # ```ruby
63
+ # m = 12.method("+")
64
+ # m.call(3) #=> 15
65
+ # m.call(20) #=> 32
66
+ # ```
67
+ def []: (*untyped args) -> untyped
68
+
69
+ # Returns an indication of the number of arguments accepted by a method.
70
+ # Returns a nonnegative integer for methods that take a fixed number of
71
+ # arguments. For Ruby methods that take a variable number of arguments,
72
+ # returns -n-1, where n is the number of required arguments. Keyword
73
+ # arguments will be considered as a single additional argument, that
74
+ # argument being mandatory if any keyword argument is mandatory. For
75
+ # methods written in C, returns -1 if the call takes a variable number of
76
+ # arguments.
77
+ #
78
+ # class C
79
+ # def one; end
80
+ # def two(a); end
81
+ # def three(*a); end
82
+ # def four(a, b); end
83
+ # def five(a, b, *c); end
84
+ # def six(a, b, *c, &d); end
85
+ # def seven(a, b, x:0); end
86
+ # def eight(x:, y:); end
87
+ # def nine(x:, y:, **z); end
88
+ # def ten(*a, x:, y:); end
89
+ # end
90
+ # c = C.new
91
+ # c.method(:one).arity #=> 0
92
+ # c.method(:two).arity #=> 1
93
+ # c.method(:three).arity #=> -1
94
+ # c.method(:four).arity #=> 2
95
+ # c.method(:five).arity #=> -3
96
+ # c.method(:six).arity #=> -3
97
+ # c.method(:seven).arity #=> -3
98
+ # c.method(:eight).arity #=> 1
99
+ # c.method(:nine).arity #=> 1
100
+ # c.method(:ten).arity #=> -2
101
+ #
102
+ # "cat".method(:size).arity #=> 0
103
+ # "cat".method(:replace).arity #=> 1
104
+ # "cat".method(:squeeze).arity #=> -1
105
+ # "cat".method(:count).arity #=> -1
106
+ def arity: () -> Integer
107
+
108
+ # Returns a clone of this method.
109
+ #
110
+ # ```ruby
111
+ # class A
112
+ # def foo
113
+ # return "bar"
114
+ # end
115
+ # end
116
+ #
117
+ # m = A.new.method(:foo)
118
+ # m.call # => "bar"
119
+ # n = m.clone.call # => "bar"
120
+ # ```
121
+ def clone: () -> Method
122
+
123
+ def curry: (*untyped args) -> untyped
124
+
125
+ # Returns the name of the method.
126
+ def name: () -> Symbol
127
+
128
+ # Returns the original name of the method.
129
+ #
130
+ # ```ruby
131
+ # class C
132
+ # def foo; end
133
+ # alias bar foo
134
+ # end
135
+ # C.instance_method(:bar).original_name # => :foo
136
+ # ```
137
+ def original_name: () -> Symbol
138
+
139
+ # Returns the class or module that defines the method. See also receiver.
140
+ #
141
+ # ```ruby
142
+ # (1..3).method(:map).owner #=> Enumerable
143
+ # ```
144
+ def owner: () -> (Class | Module)
145
+
146
+ # Returns the parameter information of this method.
147
+ #
148
+ # ```ruby
149
+ # def foo(bar); end
150
+ # method(:foo).parameters #=> [[:req, :bar]]
151
+ #
152
+ # def foo(bar, baz, bat, &blk); end
153
+ # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]]
154
+ #
155
+ # def foo(bar, *args); end
156
+ # method(:foo).parameters #=> [[:req, :bar], [:rest, :args]]
157
+ #
158
+ # def foo(bar, baz, *args, &blk); end
159
+ # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, :args], [:block, :blk]]
160
+ # ```
161
+ def parameters: () -> ::Array[untyped]
162
+
163
+ # Returns the bound receiver of the method object.
164
+ #
165
+ # ```ruby
166
+ # (1..3).method(:map).receiver # => 1..3
167
+ # ```
168
+ def receiver: () -> untyped
169
+
170
+ # Returns the Ruby source filename and line number containing this method
171
+ # or nil if this method was not defined in Ruby (i.e. native).
172
+ def source_location: () -> untyped
173
+
174
+ # Returns a [Method](Method.downloaded.ruby_doc) of superclass which would
175
+ # be called when super is used or nil if there is no method on superclass.
176
+ def super_method: () -> Method?
177
+
178
+ # Dissociates *meth* from its current receiver. The resulting
179
+ # `UnboundMethod` can subsequently be bound to a new object of the same
180
+ # class (see `UnboundMethod` ).
181
+ def unbind: () -> untyped
182
+ end