steep 0.13.0 → 0.16.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +28 -0
  4. data/Rakefile +0 -13
  5. data/bin/setup +0 -2
  6. data/bin/smoke_runner.rb +0 -1
  7. data/exe/steep +0 -1
  8. data/lib/steep.rb +33 -1
  9. data/lib/steep/annotation_parser.rb +4 -4
  10. data/lib/steep/ast/buffer.rb +11 -7
  11. data/lib/steep/ast/builtin.rb +8 -0
  12. data/lib/steep/ast/types/factory.rb +124 -89
  13. data/lib/steep/cli.rb +16 -1
  14. data/lib/steep/drivers/annotations.rb +1 -1
  15. data/lib/steep/drivers/check.rb +20 -4
  16. data/lib/steep/drivers/init.rb +5 -5
  17. data/lib/steep/drivers/langserver.rb +13 -287
  18. data/lib/steep/drivers/utils/driver_helper.rb +1 -1
  19. data/lib/steep/drivers/vendor.rb +2 -2
  20. data/lib/steep/drivers/watch.rb +97 -85
  21. data/lib/steep/drivers/worker.rb +51 -0
  22. data/lib/steep/project.rb +9 -5
  23. data/lib/steep/project/completion_provider.rb +298 -0
  24. data/lib/steep/project/dsl.rb +14 -0
  25. data/lib/steep/project/file.rb +54 -47
  26. data/lib/steep/project/hover_content.rb +17 -8
  27. data/lib/steep/project/options.rb +25 -3
  28. data/lib/steep/project/target.rb +40 -24
  29. data/lib/steep/server/base_worker.rb +56 -0
  30. data/lib/steep/server/code_worker.rb +151 -0
  31. data/lib/steep/server/interaction_worker.rb +281 -0
  32. data/lib/steep/server/master.rb +196 -0
  33. data/lib/steep/server/signature_worker.rb +148 -0
  34. data/lib/steep/server/utils.rb +36 -0
  35. data/lib/steep/server/worker_process.rb +62 -0
  36. data/lib/steep/signature/errors.rb +1 -1
  37. data/lib/steep/signature/validator.rb +13 -13
  38. data/lib/steep/source.rb +1 -1
  39. data/lib/steep/type_construction.rb +1004 -727
  40. data/lib/steep/type_inference/constant_env.rb +3 -11
  41. data/lib/steep/type_inference/context.rb +8 -3
  42. data/lib/steep/type_inference/context_array.rb +111 -0
  43. data/lib/steep/type_inference/local_variable_type_env.rb +226 -0
  44. data/lib/steep/type_inference/logic.rb +130 -0
  45. data/lib/steep/type_inference/type_env.rb +5 -69
  46. data/lib/steep/typing.rb +91 -23
  47. data/lib/steep/version.rb +1 -1
  48. data/smoke/alias/Steepfile +1 -0
  49. data/smoke/alias/a.rb +1 -1
  50. data/smoke/and/Steepfile +1 -0
  51. data/smoke/array/Steepfile +1 -0
  52. data/smoke/array/b.rb +0 -2
  53. data/smoke/block/Steepfile +1 -0
  54. data/smoke/case/Steepfile +1 -0
  55. data/smoke/class/Steepfile +1 -0
  56. data/smoke/const/Steepfile +1 -0
  57. data/smoke/dstr/Steepfile +1 -0
  58. data/smoke/ensure/Steepfile +1 -0
  59. data/smoke/enumerator/Steepfile +1 -0
  60. data/smoke/extension/Steepfile +1 -0
  61. data/smoke/extension/c.rb +1 -0
  62. data/smoke/hash/Steepfile +1 -0
  63. data/smoke/hello/Steepfile +1 -0
  64. data/smoke/if/Steepfile +1 -0
  65. data/smoke/if/a.rb +1 -1
  66. data/smoke/implements/Steepfile +1 -0
  67. data/smoke/initialize/Steepfile +1 -0
  68. data/smoke/integer/Steepfile +1 -0
  69. data/smoke/interface/Steepfile +1 -0
  70. data/smoke/kwbegin/Steepfile +1 -0
  71. data/smoke/lambda/Steepfile +1 -0
  72. data/smoke/literal/Steepfile +1 -0
  73. data/smoke/map/Steepfile +1 -0
  74. data/smoke/method/Steepfile +1 -0
  75. data/smoke/module/Steepfile +1 -0
  76. data/smoke/regexp/Steepfile +1 -0
  77. data/smoke/regexp/b.rb +4 -4
  78. data/smoke/regression/Steepfile +1 -0
  79. data/smoke/rescue/Steepfile +1 -0
  80. data/smoke/rescue/a.rb +1 -1
  81. data/smoke/self/Steepfile +1 -0
  82. data/smoke/skip/Steepfile +1 -0
  83. data/smoke/stdout/Steepfile +1 -0
  84. data/smoke/super/Steepfile +1 -0
  85. data/smoke/type_case/Steepfile +1 -0
  86. data/smoke/yield/Steepfile +1 -0
  87. data/steep.gemspec +8 -8
  88. metadata +38 -138
  89. data/exe/rbs +0 -3
  90. data/exe/ruby-signature +0 -3
  91. data/vendor/ruby-signature/.github/workflows/ruby.yml +0 -27
  92. data/vendor/ruby-signature/.gitignore +0 -12
  93. data/vendor/ruby-signature/.rubocop.yml +0 -15
  94. data/vendor/ruby-signature/BSDL +0 -22
  95. data/vendor/ruby-signature/COPYING +0 -56
  96. data/vendor/ruby-signature/Gemfile +0 -6
  97. data/vendor/ruby-signature/README.md +0 -93
  98. data/vendor/ruby-signature/Rakefile +0 -66
  99. data/vendor/ruby-signature/bin/annotate-with-rdoc +0 -156
  100. data/vendor/ruby-signature/bin/console +0 -14
  101. data/vendor/ruby-signature/bin/query-rdoc +0 -103
  102. data/vendor/ruby-signature/bin/setup +0 -10
  103. data/vendor/ruby-signature/bin/sort +0 -88
  104. data/vendor/ruby-signature/bin/test_runner.rb +0 -17
  105. data/vendor/ruby-signature/docs/CONTRIBUTING.md +0 -97
  106. data/vendor/ruby-signature/docs/sigs.md +0 -148
  107. data/vendor/ruby-signature/docs/stdlib.md +0 -152
  108. data/vendor/ruby-signature/docs/syntax.md +0 -528
  109. data/vendor/ruby-signature/exe/rbs +0 -3
  110. data/vendor/ruby-signature/exe/ruby-signature +0 -7
  111. data/vendor/ruby-signature/lib/ruby/signature.rb +0 -64
  112. data/vendor/ruby-signature/lib/ruby/signature/ast/annotation.rb +0 -29
  113. data/vendor/ruby-signature/lib/ruby/signature/ast/comment.rb +0 -29
  114. data/vendor/ruby-signature/lib/ruby/signature/ast/declarations.rb +0 -391
  115. data/vendor/ruby-signature/lib/ruby/signature/ast/members.rb +0 -364
  116. data/vendor/ruby-signature/lib/ruby/signature/buffer.rb +0 -52
  117. data/vendor/ruby-signature/lib/ruby/signature/builtin_names.rb +0 -54
  118. data/vendor/ruby-signature/lib/ruby/signature/cli.rb +0 -534
  119. data/vendor/ruby-signature/lib/ruby/signature/constant.rb +0 -28
  120. data/vendor/ruby-signature/lib/ruby/signature/constant_table.rb +0 -152
  121. data/vendor/ruby-signature/lib/ruby/signature/definition.rb +0 -172
  122. data/vendor/ruby-signature/lib/ruby/signature/definition_builder.rb +0 -921
  123. data/vendor/ruby-signature/lib/ruby/signature/environment.rb +0 -283
  124. data/vendor/ruby-signature/lib/ruby/signature/environment_loader.rb +0 -138
  125. data/vendor/ruby-signature/lib/ruby/signature/environment_walker.rb +0 -126
  126. data/vendor/ruby-signature/lib/ruby/signature/errors.rb +0 -189
  127. data/vendor/ruby-signature/lib/ruby/signature/location.rb +0 -104
  128. data/vendor/ruby-signature/lib/ruby/signature/method_type.rb +0 -125
  129. data/vendor/ruby-signature/lib/ruby/signature/namespace.rb +0 -93
  130. data/vendor/ruby-signature/lib/ruby/signature/parser.y +0 -1343
  131. data/vendor/ruby-signature/lib/ruby/signature/prototype/rb.rb +0 -441
  132. data/vendor/ruby-signature/lib/ruby/signature/prototype/rbi.rb +0 -579
  133. data/vendor/ruby-signature/lib/ruby/signature/prototype/runtime.rb +0 -383
  134. data/vendor/ruby-signature/lib/ruby/signature/substitution.rb +0 -48
  135. data/vendor/ruby-signature/lib/ruby/signature/test.rb +0 -28
  136. data/vendor/ruby-signature/lib/ruby/signature/test/errors.rb +0 -63
  137. data/vendor/ruby-signature/lib/ruby/signature/test/hook.rb +0 -290
  138. data/vendor/ruby-signature/lib/ruby/signature/test/setup.rb +0 -58
  139. data/vendor/ruby-signature/lib/ruby/signature/test/spy.rb +0 -324
  140. data/vendor/ruby-signature/lib/ruby/signature/test/test_helper.rb +0 -185
  141. data/vendor/ruby-signature/lib/ruby/signature/test/type_check.rb +0 -256
  142. data/vendor/ruby-signature/lib/ruby/signature/type_name.rb +0 -72
  143. data/vendor/ruby-signature/lib/ruby/signature/types.rb +0 -932
  144. data/vendor/ruby-signature/lib/ruby/signature/variance_calculator.rb +0 -140
  145. data/vendor/ruby-signature/lib/ruby/signature/vendorer.rb +0 -49
  146. data/vendor/ruby-signature/lib/ruby/signature/version.rb +0 -5
  147. data/vendor/ruby-signature/lib/ruby/signature/writer.rb +0 -271
  148. data/vendor/ruby-signature/ruby-signature.gemspec +0 -45
  149. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +0 -3
  150. data/vendor/ruby-signature/stdlib/base64/base64.rbs +0 -15
  151. data/vendor/ruby-signature/stdlib/builtin/array.rbs +0 -1997
  152. data/vendor/ruby-signature/stdlib/builtin/basic_object.rbs +0 -280
  153. data/vendor/ruby-signature/stdlib/builtin/binding.rbs +0 -177
  154. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +0 -35
  155. data/vendor/ruby-signature/stdlib/builtin/class.rbs +0 -145
  156. data/vendor/ruby-signature/stdlib/builtin/comparable.rbs +0 -116
  157. data/vendor/ruby-signature/stdlib/builtin/complex.rbs +0 -400
  158. data/vendor/ruby-signature/stdlib/builtin/constants.rbs +0 -37
  159. data/vendor/ruby-signature/stdlib/builtin/data.rbs +0 -5
  160. data/vendor/ruby-signature/stdlib/builtin/deprecated.rbs +0 -2
  161. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +0 -419
  162. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +0 -606
  163. data/vendor/ruby-signature/stdlib/builtin/enumerable.rbs +0 -404
  164. data/vendor/ruby-signature/stdlib/builtin/enumerator.rbs +0 -260
  165. data/vendor/ruby-signature/stdlib/builtin/errno.rbs +0 -781
  166. data/vendor/ruby-signature/stdlib/builtin/errors.rbs +0 -582
  167. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +0 -193
  168. data/vendor/ruby-signature/stdlib/builtin/false_class.rbs +0 -40
  169. data/vendor/ruby-signature/stdlib/builtin/fiber.rbs +0 -68
  170. data/vendor/ruby-signature/stdlib/builtin/fiber_error.rbs +0 -12
  171. data/vendor/ruby-signature/stdlib/builtin/file.rbs +0 -476
  172. data/vendor/ruby-signature/stdlib/builtin/file_test.rbs +0 -59
  173. data/vendor/ruby-signature/stdlib/builtin/float.rbs +0 -696
  174. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +0 -121
  175. data/vendor/ruby-signature/stdlib/builtin/hash.rbs +0 -1029
  176. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +0 -710
  177. data/vendor/ruby-signature/stdlib/builtin/io.rbs +0 -683
  178. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +0 -574
  179. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +0 -135
  180. data/vendor/ruby-signature/stdlib/builtin/match_data.rbs +0 -141
  181. data/vendor/ruby-signature/stdlib/builtin/math.rbs +0 -66
  182. data/vendor/ruby-signature/stdlib/builtin/method.rbs +0 -182
  183. data/vendor/ruby-signature/stdlib/builtin/module.rbs +0 -248
  184. data/vendor/ruby-signature/stdlib/builtin/nil_class.rbs +0 -82
  185. data/vendor/ruby-signature/stdlib/builtin/numeric.rbs +0 -409
  186. data/vendor/ruby-signature/stdlib/builtin/object.rbs +0 -824
  187. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +0 -426
  188. data/vendor/ruby-signature/stdlib/builtin/process.rbs +0 -354
  189. data/vendor/ruby-signature/stdlib/builtin/random.rbs +0 -93
  190. data/vendor/ruby-signature/stdlib/builtin/range.rbs +0 -226
  191. data/vendor/ruby-signature/stdlib/builtin/rational.rbs +0 -424
  192. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +0 -10
  193. data/vendor/ruby-signature/stdlib/builtin/regexp.rbs +0 -131
  194. data/vendor/ruby-signature/stdlib/builtin/ruby_vm.rbs +0 -14
  195. data/vendor/ruby-signature/stdlib/builtin/signal.rbs +0 -55
  196. data/vendor/ruby-signature/stdlib/builtin/string.rbs +0 -770
  197. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +0 -13
  198. data/vendor/ruby-signature/stdlib/builtin/struct.rbs +0 -40
  199. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +0 -230
  200. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +0 -1112
  201. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +0 -23
  202. data/vendor/ruby-signature/stdlib/builtin/time.rbs +0 -739
  203. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +0 -91
  204. data/vendor/ruby-signature/stdlib/builtin/true_class.rbs +0 -46
  205. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +0 -159
  206. data/vendor/ruby-signature/stdlib/builtin/warning.rbs +0 -17
  207. data/vendor/ruby-signature/stdlib/erb/erb.rbs +0 -18
  208. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -44
  209. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +0 -21
  210. data/vendor/ruby-signature/stdlib/prime/integer-extension.rbs +0 -23
  211. data/vendor/ruby-signature/stdlib/prime/prime.rbs +0 -188
  212. data/vendor/ruby-signature/stdlib/securerandom/securerandom.rbs +0 -9
  213. data/vendor/ruby-signature/stdlib/set/set.rbs +0 -77
  214. data/vendor/ruby-signature/stdlib/tmpdir/tmpdir.rbs +0 -53
@@ -1,91 +0,0 @@
1
- class TracePoint < Object
2
- def initialize: (*Symbol events) { (TracePoint tp) -> void } -> void
3
-
4
- # Returns internal information of
5
- # [TracePoint](TracePoint.downloaded.ruby_doc).
6
- #
7
- # The contents of the returned value are implementation specific. It may
8
- # be changed in future.
9
- #
10
- # This method is only for debugging
11
- # [TracePoint](TracePoint.downloaded.ruby_doc) itself.
12
- def self.stat: () -> untyped
13
-
14
- def self.trace: (*Symbol events) { (TracePoint tp) -> void } -> TracePoint
15
-
16
- # Return the generated binding object from event
17
- def binding: () -> Binding
18
-
19
- # Return the called name of the method being called
20
- def callee_id: () -> Symbol
21
-
22
- def `defined_class`: () -> Module
23
-
24
- # Deactivates the trace
25
- #
26
- # Return true if trace was enabled. Return false if trace was disabled.
27
- #
28
- # ```ruby
29
- # trace.enabled? #=> true
30
- # trace.disable #=> true (previous status)
31
- # trace.enabled? #=> false
32
- # trace.disable #=> false
33
- # ```
34
- #
35
- # If a block is given, the trace will only be disable within the scope of
36
- # the block.
37
- #
38
- # ```ruby
39
- # trace.enabled?
40
- # #=> true
41
- #
42
- # trace.disable do
43
- # trace.enabled?
44
- # # only disabled for this block
45
- # end
46
- #
47
- # trace.enabled?
48
- # #=> true
49
- # ```
50
- #
51
- # Note: You cannot access event hooks within the block.
52
- #
53
- # ```ruby
54
- # trace.disable { p tp.lineno }
55
- # #=> RuntimeError: access from outside
56
- # ```
57
- def disable: () -> bool
58
- | () { () -> void } -> void
59
-
60
- def enable: () -> bool
61
- | () { () -> void } -> void
62
-
63
- # The current status of the trace
64
- def enabled?: () -> bool
65
-
66
- def inspect: () -> String
67
-
68
- # Line number of the event
69
- def lineno: () -> Integer
70
-
71
- # Return the name at the definition of the method being called
72
- def method_id: () -> Symbol
73
-
74
- # Path of the file being run
75
- def path: () -> String
76
-
77
- # Value from exception raised on the `:raise` event
78
- def raised_exception: () -> untyped
79
-
80
- # Return value from `:return`, `c_return`, and `b_return` event
81
- def return_value: () -> untyped
82
-
83
- # Return the trace object during event
84
- #
85
- # Same as [\#binding](TracePoint.downloaded.ruby_doc#method-i-binding):
86
- #
87
- # ```ruby
88
- # trace.binding.eval('self')
89
- # ```
90
- def `self`: () -> Binding
91
- end
@@ -1,46 +0,0 @@
1
- # The global value `true` is the only instance of class TrueClass and represents
2
- # a logically true value in boolean expressions. The class provides operators
3
- # allowing `true` to be used in logical expressions.
4
- #
5
- class TrueClass
6
- public
7
-
8
- def !: () -> bool
9
-
10
- # And---Returns `false` if *obj* is `nil` or `false`, `true` otherwise.
11
- #
12
- def &: (nil) -> false
13
- | (false) -> false
14
- | (untyped obj) -> bool
15
-
16
- # Case Equality -- For class Object, effectively the same as calling `#==`, but
17
- # typically overridden by descendants to provide meaningful semantics in `case`
18
- # statements.
19
- #
20
- def ===: (true) -> true
21
- | (untyped obj) -> bool
22
-
23
- # Exclusive Or---Returns `true` if *obj* is `nil` or `false`, `false` otherwise.
24
- #
25
- def ^: (nil) -> true
26
- | (false) -> true
27
- | (untyped obj) -> bool
28
-
29
- alias inspect to_s
30
-
31
- # The string representation of `true` is "true".
32
- #
33
- def to_s: () -> "true"
34
-
35
- # Or---Returns `true`. As *obj* is an argument to a method call, it is always
36
- # evaluated; there is no short-circuit evaluation in this case.
37
- #
38
- # true | puts("or")
39
- # true || puts("logical or")
40
- #
41
- # *produces:*
42
- #
43
- # or
44
- #
45
- def |: (bool obj) -> bool
46
- end
@@ -1,159 +0,0 @@
1
- # Ruby supports two forms of objectified methods.
2
- # [Class](https://ruby-doc.org/core-2.6.3/Class.html) `Method` is used to
3
- # represent methods that are associated with a particular object: these
4
- # method objects are bound to that object. Bound method objects for an
5
- # object can be created using `Object#method` .
6
- #
7
- # Ruby also supports unbound methods; methods objects that are not
8
- # associated with a particular object. These can be created either by
9
- # calling `Module#instance_method` or by calling `unbind` on a bound
10
- # method object. The result of both of these is an `UnboundMethod` object.
11
- #
12
- # Unbound methods can only be called after they are bound to an object.
13
- # That object must be a kind\_of? the method's original class.
14
- #
15
- # ```ruby
16
- # class Square
17
- # def area
18
- # @side * @side
19
- # end
20
- # def initialize(side)
21
- # @side = side
22
- # end
23
- # end
24
- #
25
- # area_un = Square.instance_method(:area)
26
- #
27
- # s = Square.new(12)
28
- # area = area_un.bind(s)
29
- # area.call #=> 144
30
- # ```
31
- #
32
- # Unbound methods are a reference to the method at the time it was
33
- # objectified: subsequent changes to the underlying class will not affect
34
- # the unbound method.
35
- #
36
- # ```ruby
37
- # class Test
38
- # def test
39
- # :original
40
- # end
41
- # end
42
- # um = Test.instance_method(:test)
43
- # class Test
44
- # def test
45
- # :modified
46
- # end
47
- # end
48
- # t = Test.new
49
- # t.test #=> :modified
50
- # um.bind(t).call #=> :original
51
- # ```
52
- class UnboundMethod
53
- # Returns an indication of the number of arguments accepted by a method.
54
- # Returns a nonnegative integer for methods that take a fixed number of
55
- # arguments. For Ruby methods that take a variable number of arguments,
56
- # returns -n-1, where n is the number of required arguments. Keyword
57
- # arguments will be considered as a single additional argument, that
58
- # argument being mandatory if any keyword argument is mandatory. For
59
- # methods written in C, returns -1 if the call takes a variable number of
60
- # arguments.
61
- #
62
- # class C
63
- # def one; end
64
- # def two(a); end
65
- # def three(*a); end
66
- # def four(a, b); end
67
- # def five(a, b, *c); end
68
- # def six(a, b, *c, &d); end
69
- # def seven(a, b, x:0); end
70
- # def eight(x:, y:); end
71
- # def nine(x:, y:, **z); end
72
- # def ten(*a, x:, y:); end
73
- # end
74
- # c = C.new
75
- # c.method(:one).arity #=> 0
76
- # c.method(:two).arity #=> 1
77
- # c.method(:three).arity #=> -1
78
- # c.method(:four).arity #=> 2
79
- # c.method(:five).arity #=> -3
80
- # c.method(:six).arity #=> -3
81
- # c.method(:seven).arity #=> -3
82
- # c.method(:eight).arity #=> 1
83
- # c.method(:nine).arity #=> 1
84
- # c.method(:ten).arity #=> -2
85
- #
86
- # "cat".method(:size).arity #=> 0
87
- # "cat".method(:replace).arity #=> 1
88
- # "cat".method(:squeeze).arity #=> -1
89
- # "cat".method(:count).arity #=> -1
90
- def arity: () -> Integer
91
-
92
- # Bind *umeth* to *obj* . If `Klass` was the class from which *umeth* was
93
- # obtained, `obj.kind_of?(Klass)` must be true.
94
- #
95
- # ```ruby
96
- # class A
97
- # def test
98
- # puts "In test, class = #{self.class}"
99
- # end
100
- # end
101
- # class B < A
102
- # end
103
- # class C < B
104
- # end
105
- #
106
- # um = B.instance_method(:test)
107
- # bm = um.bind(C.new)
108
- # bm.call
109
- # bm = um.bind(B.new)
110
- # bm.call
111
- # bm = um.bind(A.new)
112
- # bm.call
113
- # ```
114
- #
115
- # *produces:*
116
- #
117
- # In test, class = C
118
- # In test, class = B
119
- # prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
120
- # from prog.rb:16
121
- def bind: (untyped obj) -> Method
122
-
123
- # Returns the name of the method.
124
- def name: () -> Symbol
125
-
126
- # Returns the class or module that defines the method. See also receiver.
127
- #
128
- # ```ruby
129
- # (1..3).method(:map).owner #=> Enumerable
130
- # ```
131
- def owner: () -> Module
132
-
133
- # Returns the parameter information of this method.
134
- #
135
- # ```ruby
136
- # def foo(bar); end
137
- # method(:foo).parameters #=> [[:req, :bar]]
138
- #
139
- # def foo(bar, baz, bat, &blk); end
140
- # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]]
141
- #
142
- # def foo(bar, *args); end
143
- # method(:foo).parameters #=> [[:req, :bar], [:rest, :args]]
144
- #
145
- # def foo(bar, baz, *args, &blk); end
146
- # method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, :args], [:block, :blk]]
147
- # ```
148
- def parameters: () -> ::Array[[ Symbol, Symbol ]]
149
- | () -> ::Array[[ Symbol ]]
150
-
151
- # Returns the Ruby source filename and line number containing this method
152
- # or nil if this method was not defined in Ruby (i.e. native).
153
- def source_location: () -> [ String, Integer ]?
154
-
155
- # Returns a [Method](https://ruby-doc.org/core-2.6.3/Method.html) of
156
- # superclass which would be called when super is used or nil if there is
157
- # no method on superclass.
158
- def super_method: () -> UnboundMethod?
159
- end
@@ -1,17 +0,0 @@
1
- # The [Warning](Warning) module contains a single
2
- # method named [warn](Warning#method-i-warn), and the
3
- # module extends itself, making `Warning.warn` available.
4
- # [\#warn](Warning#method-i-warn) is called for all
5
- # warnings issued by Ruby. By default, warnings are printed to $stderr.
6
- #
7
- # By overriding [\#warn](Warning#method-i-warn), you
8
- # can change how warnings are handled by Ruby, either filtering some
9
- # warnings, and/or outputting warnings somewhere other than $stderr. When
10
- # [\#warn](Warning#method-i-warn) is overridden, super
11
- # can be called to get the default behavior of printing the warning to
12
- # $stderr.
13
- module Warning
14
- # Writes warning message msg to $stderr, followed by a newline if the message does not end in a newline.
15
- # This method is called by Ruby for all emitted warnings.
16
- def warn: (String) -> nil
17
- end
@@ -1,18 +0,0 @@
1
- class ERB
2
- def self.version: () -> String
3
-
4
- def initialize: (String, ?trim_mode: Integer | String | NilClass, ?eoutvar: String) -> untyped
5
- def src: () -> String
6
- def encoding: () -> Encoding
7
- def filename: () -> (String | NilClass)
8
- def filename=: (String | NilClass) -> untyped
9
- def lineno: () -> Integer
10
- def lineno=: (Integer) -> untyped
11
- def location=: (Array[String | Integer]) -> untyped
12
- def run: (?Binding) -> untyped
13
- def result: (?Binding) -> String
14
- def result_with_hash: (Hash[untyped, untyped]) -> String
15
- def def_method: (Module, String, ?String) -> untyped
16
- def def_module: (?String) -> Module
17
- def def_class: (?Class, ?String) -> Class
18
- end
@@ -1,44 +0,0 @@
1
- # The `Find` module supports the top-down traversal of a set of file paths.
2
- #
3
- # For example, to total the size of all files under your home directory,
4
- # ignoring anything in a "dot" directory (e.g. $HOME/.ssh):
5
- #
6
- # require 'find'
7
- #
8
- # total_size = 0
9
- #
10
- # Find.find(ENV["HOME"]) do |path|
11
- # if FileTest.directory?(path)
12
- # if File.basename(path).start_with?('.')
13
- # Find.prune # Don't look any further into this directory.
14
- # else
15
- # next
16
- # end
17
- # else
18
- # total_size += FileTest.size(path)
19
- # end
20
- # end
21
- #
22
- module Find
23
- # Calls the associated block with the name of every file and directory listed as
24
- # arguments, then recursively on their subdirectories, and so on.
25
- #
26
- # Returns an enumerator if no block is given.
27
- #
28
- # See the `Find` module documentation for an example.
29
- #
30
- def self?.find: (*String | _ToPath paths, ?ignore_error: bool) -> Enumerator[String, nil]
31
- | (*String | _ToPath paths, ?ignore_error: bool) { (String arg0) -> void } -> nil
32
-
33
- # Skips the current file or directory, restarting the loop with the next entry.
34
- # If the current file is a directory, that directory will not be recursively
35
- # entered. Meaningful only within the block associated with Find::find.
36
- #
37
- # See the `Find` module documentation for an example.
38
- #
39
- def self?.prune: () -> void
40
- end
41
-
42
- interface _ToPath
43
- def to_path: () -> String
44
- end
@@ -1,21 +0,0 @@
1
- class Pathname
2
- def self.glob: (Pathname, ?Integer) -> Array[Pathname]
3
- def `+`: (Pathname) -> Pathname
4
- | (String) -> Pathname
5
- def file?: -> bool
6
- def relative_path_from: (Pathname) -> Pathname
7
- def open: [X] (?String) { (IO) -> X } -> X
8
- def join: (String) -> self
9
- def realpath: -> self
10
- def directory?: -> bool
11
- def relative?: -> bool
12
- def cleanpath: -> self
13
- def read: -> String
14
- def mkpath: -> void
15
- def write: (String) -> void
16
- def sub_ext: (String) -> self
17
- end
18
-
19
- extension Kernel (Pathname)
20
- def Pathname: (String) -> Pathname
21
- end
@@ -1,23 +0,0 @@
1
- extension Integer (Prime)
2
- # Iterates the given block over all prime numbers.
3
- #
4
- # See Prime#each for more details.
5
- #
6
- def self.each_prime: (Integer) { (Integer) -> void } -> void
7
-
8
- # Re-composes a prime factorization and returns the product.
9
- #
10
- # See Prime#int_from_prime_division for more details.
11
- #
12
- def self.from_prime_division: (Array[[ String ]]) -> Integer
13
-
14
- # Returns the factorization of `self`.
15
- #
16
- # See Prime#prime_division for more details.
17
- #
18
- def prime_division: (?Prime::PseudoPrimeGenerator) -> Array[[ Integer, Integer ]]
19
-
20
- # Returns true if `self` is a prime number, else returns false.
21
- #
22
- def prime?: () -> bool
23
- end
@@ -1,188 +0,0 @@
1
- # The set of all prime numbers.
2
- #
3
- # ## Example
4
- #
5
- # Prime.each(100) do |prime|
6
- # p prime #=> 2, 3, 5, 7, 11, ...., 97
7
- # end
8
- #
9
- # Prime is Enumerable:
10
- #
11
- # Prime.first 5 # => [2, 3, 5, 7, 11]
12
- #
13
- # ## Retrieving the instance
14
- #
15
- # For convenience, each instance method of `Prime`.instance can be accessed as a
16
- # class method of `Prime`.
17
- #
18
- # e.g.
19
- # Prime.instance.prime?(2) #=> true
20
- # Prime.prime?(2) #=> true
21
- #
22
- # ## Generators
23
- #
24
- # A "generator" provides an implementation of enumerating pseudo-prime numbers
25
- # and it remembers the position of enumeration and upper bound. Furthermore, it
26
- # is an external iterator of prime enumeration which is compatible with an
27
- # Enumerator.
28
- #
29
- # `Prime`::`PseudoPrimeGenerator` is the base class for generators. There are
30
- # few implementations of generator.
31
- #
32
- # `Prime`::`EratosthenesGenerator`
33
- # : Uses eratosthenes' sieve.
34
- # `Prime`::`TrialDivisionGenerator`
35
- # : Uses the trial division method.
36
- # `Prime`::`Generator23`
37
- # : Generates all positive integers which are not divisible by either 2 or 3.
38
- # This sequence is very bad as a pseudo-prime sequence. But this is faster
39
- # and uses much less memory than the other generators. So, it is suitable
40
- # for factorizing an integer which is not large but has many prime factors.
41
- # e.g. for Prime#prime? .
42
- #
43
- #
44
- class Prime
45
- # Iterates the given block over all prime numbers.
46
- #
47
- # ## Parameters
48
- #
49
- # `ubound`
50
- # : Optional. An arbitrary positive number. The upper bound of enumeration.
51
- # The method enumerates prime numbers infinitely if `ubound` is nil.
52
- # `generator`
53
- # : Optional. An implementation of pseudo-prime generator.
54
- #
55
- #
56
- # ## Return value
57
- #
58
- # An evaluated value of the given block at the last time. Or an enumerator which
59
- # is compatible to an `Enumerator` if no block given.
60
- #
61
- # ## Description
62
- #
63
- # Calls `block` once for each prime number, passing the prime as a parameter.
64
- #
65
- # `ubound`
66
- # : Upper bound of prime numbers. The iterator stops after it yields all prime
67
- # numbers p <= `ubound`.
68
- #
69
- def self?.each: (?Integer? ubound, ?PseudoPrimeGenerator generator) { (Integer) -> void } -> void
70
- | (?Integer? ubound, ?PseudoPrimeGenerator generator) -> PseudoPrimeGenerator
71
-
72
- # Re-composes a prime factorization and returns the product.
73
- #
74
- # ## Parameters
75
- # `pd`
76
- # : Array of pairs of integers. The each internal pair consists of a prime
77
- # number -- a prime factor -- and a natural number -- an exponent.
78
- #
79
- #
80
- # ## Example
81
- # For `[[p_1, e_1], [p_2, e_2], ...., [p_n, e_n]]`, it returns:
82
- #
83
- # p_1**e_1 * p_2**e_2 * .... * p_n**e_n.
84
- #
85
- # Prime.int_from_prime_division([[2,2], [3,1]]) #=> 12
86
- #
87
- def self?.int_from_prime_division: (Array[[ Integer, Integer ]]) -> Integer
88
-
89
- # Returns true if `value` is a prime number, else returns false.
90
- #
91
- # ## Parameters
92
- #
93
- # `value`
94
- # : an arbitrary integer to be checked.
95
- # `generator`
96
- # : optional. A pseudo-prime generator.
97
- #
98
- def self?.prime?: (Integer value, ?PseudoPrimeGenerator generator) -> bool
99
-
100
- # Returns the factorization of `value`.
101
- #
102
- # ## Parameters
103
- # `value`
104
- # : An arbitrary integer.
105
- # `generator`
106
- # : Optional. A pseudo-prime generator. `generator`.succ must return the next
107
- # pseudo-prime number in the ascending order. It must generate all prime
108
- # numbers, but may also generate non prime numbers too.
109
- #
110
- #
111
- # ### Exceptions
112
- # `ZeroDivisionError`
113
- # : when `value` is zero.
114
- #
115
- #
116
- # ## Example
117
- # For an arbitrary integer:
118
- #
119
- # n = p_1**e_1 * p_2**e_2 * .... * p_n**e_n,
120
- #
121
- # prime_division(n) returns:
122
- #
123
- # [[p_1, e_1], [p_2, e_2], ...., [p_n, e_n]].
124
- #
125
- # Prime.prime_division(12) #=> [[2,2], [3,1]]
126
- #
127
- def self?.prime_division: (Integer, ?PseudoPrimeGenerator generator) -> Array[[ Integer, Integer ]]
128
-
129
- # Returns the singleton instance.
130
- #
131
- def self.instance: () -> Prime
132
- end
133
-
134
- # An abstract class for enumerating pseudo-prime numbers.
135
- #
136
- # Concrete subclasses should override succ, next, rewind.
137
- #
138
- class Prime::PseudoPrimeGenerator
139
- def initialize: (?Integer?) -> void
140
-
141
- include Enumerable[Integer, void]
142
-
143
- attr_accessor upper_bound (): Integer?
144
-
145
- # Iterates the given block for each prime number.
146
- #
147
- def each: () { (Integer) -> void } -> void
148
-
149
- # alias of `succ`.
150
- #
151
- def next: () -> Integer
152
-
153
- # Rewinds the internal position for enumeration.
154
- #
155
- # See `Enumerator`#rewind.
156
- #
157
- def rewind: () -> void
158
-
159
- def size: () -> Float
160
-
161
- # returns the next pseudo-prime number, and move the internal position forward.
162
- #
163
- # `PseudoPrimeGenerator`#succ raises `NotImplementedError`.
164
- #
165
- def succ: () -> Integer
166
- end
167
-
168
- # An implementation of `PseudoPrimeGenerator`.
169
- #
170
- # Uses `EratosthenesSieve`.
171
- #
172
- class Prime::EratosthenesGenerator < PseudoPrimeGenerator
173
- end
174
-
175
- # An implementation of `PseudoPrimeGenerator` which uses a prime table generated
176
- # by trial division.
177
- #
178
- class Prime::TrialDivisionGenerator < PseudoPrimeGenerator
179
- end
180
-
181
- # Generates all integers which are greater than 2 and are not divisible by
182
- # either 2 or 3.
183
- #
184
- # This is a pseudo-prime generator, suitable on checking primality of an integer
185
- # by brute force method.
186
- #
187
- class Prime::Generator23 < PseudoPrimeGenerator
188
- end