steep 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/exe/rbs +1 -1
  4. data/lib/steep/annotation_parser.rb +4 -4
  5. data/lib/steep/ast/buffer.rb +11 -7
  6. data/lib/steep/ast/builtin.rb +8 -0
  7. data/lib/steep/ast/types/factory.rb +55 -55
  8. data/lib/steep/drivers/check.rb +20 -4
  9. data/lib/steep/drivers/langserver.rb +6 -1
  10. data/lib/steep/drivers/vendor.rb +2 -2
  11. data/lib/steep/project/completion_provider.rb +5 -11
  12. data/lib/steep/project/dsl.rb +14 -0
  13. data/lib/steep/project/file.rb +42 -46
  14. data/lib/steep/project/hover_content.rb +11 -5
  15. data/lib/steep/project/options.rb +25 -3
  16. data/lib/steep/project/target.rb +10 -4
  17. data/lib/steep/signature/errors.rb +1 -1
  18. data/lib/steep/signature/validator.rb +8 -8
  19. data/lib/steep/source.rb +1 -1
  20. data/lib/steep/type_construction.rb +987 -711
  21. data/lib/steep/type_inference/constant_env.rb +1 -1
  22. data/lib/steep/type_inference/context.rb +7 -3
  23. data/lib/steep/type_inference/context_array.rb +111 -0
  24. data/lib/steep/type_inference/local_variable_type_env.rb +226 -0
  25. data/lib/steep/type_inference/logic.rb +130 -0
  26. data/lib/steep/type_inference/type_env.rb +5 -69
  27. data/lib/steep/typing.rb +79 -22
  28. data/lib/steep/version.rb +1 -1
  29. data/lib/steep.rb +6 -1
  30. data/smoke/alias/Steepfile +1 -0
  31. data/smoke/and/Steepfile +1 -0
  32. data/smoke/array/Steepfile +1 -0
  33. data/smoke/array/b.rb +0 -2
  34. data/smoke/block/Steepfile +1 -0
  35. data/smoke/case/Steepfile +1 -0
  36. data/smoke/class/Steepfile +1 -0
  37. data/smoke/const/Steepfile +1 -0
  38. data/smoke/dstr/Steepfile +1 -0
  39. data/smoke/ensure/Steepfile +1 -0
  40. data/smoke/enumerator/Steepfile +1 -0
  41. data/smoke/extension/Steepfile +1 -0
  42. data/smoke/extension/c.rb +1 -0
  43. data/smoke/hash/Steepfile +1 -0
  44. data/smoke/hello/Steepfile +1 -0
  45. data/smoke/if/Steepfile +1 -0
  46. data/smoke/if/a.rb +1 -1
  47. data/smoke/implements/Steepfile +1 -0
  48. data/smoke/initialize/Steepfile +1 -0
  49. data/smoke/integer/Steepfile +1 -0
  50. data/smoke/interface/Steepfile +1 -0
  51. data/smoke/kwbegin/Steepfile +1 -0
  52. data/smoke/lambda/Steepfile +1 -0
  53. data/smoke/literal/Steepfile +1 -0
  54. data/smoke/map/Steepfile +1 -0
  55. data/smoke/method/Steepfile +1 -0
  56. data/smoke/module/Steepfile +1 -0
  57. data/smoke/regexp/Steepfile +1 -0
  58. data/smoke/regression/Steepfile +1 -0
  59. data/smoke/rescue/Steepfile +1 -0
  60. data/smoke/rescue/a.rb +1 -1
  61. data/smoke/self/Steepfile +1 -0
  62. data/smoke/skip/Steepfile +1 -0
  63. data/smoke/stdout/Steepfile +1 -0
  64. data/smoke/super/Steepfile +1 -0
  65. data/smoke/type_case/Steepfile +1 -0
  66. data/smoke/yield/Steepfile +1 -0
  67. data/steep.gemspec +1 -1
  68. data/vendor/ruby-signature/.gitignore +2 -2
  69. data/vendor/ruby-signature/README.md +2 -2
  70. data/vendor/ruby-signature/Rakefile +2 -2
  71. data/vendor/ruby-signature/bin/annotate-with-rdoc +14 -13
  72. data/vendor/ruby-signature/bin/console +1 -1
  73. data/vendor/ruby-signature/bin/sort +7 -6
  74. data/vendor/ruby-signature/bin/test_runner.rb +0 -1
  75. data/vendor/ruby-signature/docs/CONTRIBUTING.md +1 -1
  76. data/vendor/ruby-signature/docs/sigs.md +3 -3
  77. data/vendor/ruby-signature/docs/stdlib.md +1 -1
  78. data/vendor/ruby-signature/docs/syntax.md +9 -9
  79. data/vendor/ruby-signature/exe/rbs +5 -1
  80. data/vendor/ruby-signature/lib/rbs/ast/annotation.rb +27 -0
  81. data/vendor/ruby-signature/lib/rbs/ast/comment.rb +27 -0
  82. data/vendor/ruby-signature/lib/rbs/ast/declarations.rb +395 -0
  83. data/vendor/ruby-signature/lib/rbs/ast/members.rb +362 -0
  84. data/vendor/ruby-signature/lib/rbs/buffer.rb +50 -0
  85. data/vendor/ruby-signature/lib/rbs/builtin_names.rb +55 -0
  86. data/vendor/ruby-signature/lib/rbs/cli.rb +558 -0
  87. data/vendor/ruby-signature/lib/rbs/constant.rb +26 -0
  88. data/vendor/ruby-signature/lib/rbs/constant_table.rb +150 -0
  89. data/vendor/ruby-signature/lib/rbs/definition.rb +170 -0
  90. data/vendor/ruby-signature/lib/rbs/definition_builder.rb +919 -0
  91. data/vendor/ruby-signature/lib/rbs/environment.rb +281 -0
  92. data/vendor/ruby-signature/lib/rbs/environment_loader.rb +136 -0
  93. data/vendor/ruby-signature/lib/rbs/environment_walker.rb +124 -0
  94. data/vendor/ruby-signature/lib/rbs/errors.rb +187 -0
  95. data/vendor/ruby-signature/lib/rbs/location.rb +102 -0
  96. data/vendor/ruby-signature/lib/rbs/method_type.rb +123 -0
  97. data/vendor/ruby-signature/lib/rbs/namespace.rb +91 -0
  98. data/vendor/ruby-signature/lib/{ruby/signature → rbs}/parser.rb +21 -23
  99. data/vendor/ruby-signature/lib/{ruby/signature → rbs}/parser.y +18 -18
  100. data/vendor/ruby-signature/lib/rbs/prototype/rb.rb +553 -0
  101. data/vendor/ruby-signature/lib/rbs/prototype/rbi.rb +587 -0
  102. data/vendor/ruby-signature/lib/rbs/prototype/runtime.rb +381 -0
  103. data/vendor/ruby-signature/lib/rbs/substitution.rb +46 -0
  104. data/vendor/ruby-signature/lib/rbs/test/errors.rb +61 -0
  105. data/vendor/ruby-signature/lib/rbs/test/hook.rb +294 -0
  106. data/vendor/ruby-signature/lib/{ruby/signature → rbs}/test/setup.rb +7 -7
  107. data/vendor/ruby-signature/lib/rbs/test/spy.rb +325 -0
  108. data/vendor/ruby-signature/lib/rbs/test/test_helper.rb +183 -0
  109. data/vendor/ruby-signature/lib/rbs/test/type_check.rb +254 -0
  110. data/vendor/ruby-signature/lib/rbs/test.rb +26 -0
  111. data/vendor/ruby-signature/lib/rbs/type_name.rb +70 -0
  112. data/vendor/ruby-signature/lib/rbs/types.rb +936 -0
  113. data/vendor/ruby-signature/lib/rbs/variance_calculator.rb +138 -0
  114. data/vendor/ruby-signature/lib/rbs/vendorer.rb +47 -0
  115. data/vendor/ruby-signature/lib/rbs/version.rb +3 -0
  116. data/vendor/ruby-signature/lib/rbs/writer.rb +269 -0
  117. data/vendor/ruby-signature/lib/rbs.rb +64 -0
  118. data/vendor/ruby-signature/lib/ruby/signature.rb +4 -61
  119. data/vendor/ruby-signature/{ruby-signature.gemspec → rbs.gemspec} +4 -4
  120. data/vendor/ruby-signature/stdlib/abbrev/abbrev.rbs +58 -1
  121. data/vendor/ruby-signature/stdlib/base64/base64.rbs +69 -13
  122. data/vendor/ruby-signature/stdlib/benchmark/benchmark.rbs +372 -0
  123. data/vendor/ruby-signature/stdlib/builtin/builtin.rbs +9 -0
  124. data/vendor/ruby-signature/stdlib/builtin/dir.rbs +1 -7
  125. data/vendor/ruby-signature/stdlib/builtin/encoding.rbs +2 -1
  126. data/vendor/ruby-signature/stdlib/builtin/exception.rbs +3 -2
  127. data/vendor/ruby-signature/stdlib/builtin/file.rbs +902 -302
  128. data/vendor/ruby-signature/stdlib/builtin/gc.rbs +190 -68
  129. data/vendor/ruby-signature/stdlib/builtin/integer.rbs +3 -6
  130. data/vendor/ruby-signature/stdlib/builtin/kernel.rbs +6 -4
  131. data/vendor/ruby-signature/stdlib/builtin/marshal.rbs +146 -120
  132. data/vendor/ruby-signature/stdlib/builtin/math.rbs +310 -7
  133. data/vendor/ruby-signature/stdlib/builtin/method.rbs +11 -8
  134. data/vendor/ruby-signature/stdlib/builtin/module.rbs +959 -103
  135. data/vendor/ruby-signature/stdlib/builtin/proc.rbs +3 -0
  136. data/vendor/ruby-signature/stdlib/builtin/process.rbs +981 -108
  137. data/vendor/ruby-signature/stdlib/builtin/random.rbs +215 -41
  138. data/vendor/ruby-signature/stdlib/builtin/rb_config.rbs +47 -0
  139. data/vendor/ruby-signature/stdlib/builtin/string.rbs +9 -2
  140. data/vendor/ruby-signature/stdlib/builtin/string_io.rbs +282 -11
  141. data/vendor/ruby-signature/stdlib/builtin/symbol.rbs +11 -13
  142. data/vendor/ruby-signature/stdlib/builtin/thread.rbs +25 -29
  143. data/vendor/ruby-signature/stdlib/builtin/thread_group.rbs +1 -1
  144. data/vendor/ruby-signature/stdlib/builtin/time.rbs +875 -567
  145. data/vendor/ruby-signature/stdlib/builtin/trace_point.rbs +243 -44
  146. data/vendor/ruby-signature/stdlib/builtin/unbound_method.rbs +103 -109
  147. data/vendor/ruby-signature/stdlib/coverage/coverage.rbs +62 -0
  148. data/vendor/ruby-signature/stdlib/csv/csv.rbs +773 -0
  149. data/vendor/ruby-signature/stdlib/erb/erb.rbs +375 -1
  150. data/vendor/ruby-signature/stdlib/find/find.rbs +0 -4
  151. data/vendor/ruby-signature/stdlib/ipaddr/ipaddr.rbs +247 -0
  152. data/vendor/ruby-signature/stdlib/pathname/pathname.rbs +1088 -16
  153. data/vendor/ruby-signature/stdlib/set/set.rbs +251 -27
  154. metadata +49 -44
  155. data/exe/ruby-signature +0 -3
  156. data/vendor/ruby-signature/exe/ruby-signature +0 -7
  157. data/vendor/ruby-signature/lib/ruby/signature/ast/annotation.rb +0 -29
  158. data/vendor/ruby-signature/lib/ruby/signature/ast/comment.rb +0 -29
  159. data/vendor/ruby-signature/lib/ruby/signature/ast/declarations.rb +0 -391
  160. data/vendor/ruby-signature/lib/ruby/signature/ast/members.rb +0 -364
  161. data/vendor/ruby-signature/lib/ruby/signature/buffer.rb +0 -52
  162. data/vendor/ruby-signature/lib/ruby/signature/builtin_names.rb +0 -54
  163. data/vendor/ruby-signature/lib/ruby/signature/cli.rb +0 -555
  164. data/vendor/ruby-signature/lib/ruby/signature/constant.rb +0 -28
  165. data/vendor/ruby-signature/lib/ruby/signature/constant_table.rb +0 -152
  166. data/vendor/ruby-signature/lib/ruby/signature/definition.rb +0 -172
  167. data/vendor/ruby-signature/lib/ruby/signature/definition_builder.rb +0 -921
  168. data/vendor/ruby-signature/lib/ruby/signature/environment.rb +0 -283
  169. data/vendor/ruby-signature/lib/ruby/signature/environment_loader.rb +0 -138
  170. data/vendor/ruby-signature/lib/ruby/signature/environment_walker.rb +0 -126
  171. data/vendor/ruby-signature/lib/ruby/signature/errors.rb +0 -189
  172. data/vendor/ruby-signature/lib/ruby/signature/location.rb +0 -104
  173. data/vendor/ruby-signature/lib/ruby/signature/method_type.rb +0 -125
  174. data/vendor/ruby-signature/lib/ruby/signature/namespace.rb +0 -93
  175. data/vendor/ruby-signature/lib/ruby/signature/prototype/rb.rb +0 -444
  176. data/vendor/ruby-signature/lib/ruby/signature/prototype/rbi.rb +0 -579
  177. data/vendor/ruby-signature/lib/ruby/signature/prototype/runtime.rb +0 -383
  178. data/vendor/ruby-signature/lib/ruby/signature/substitution.rb +0 -48
  179. data/vendor/ruby-signature/lib/ruby/signature/test/errors.rb +0 -63
  180. data/vendor/ruby-signature/lib/ruby/signature/test/hook.rb +0 -290
  181. data/vendor/ruby-signature/lib/ruby/signature/test/spy.rb +0 -327
  182. data/vendor/ruby-signature/lib/ruby/signature/test/test_helper.rb +0 -185
  183. data/vendor/ruby-signature/lib/ruby/signature/test/type_check.rb +0 -256
  184. data/vendor/ruby-signature/lib/ruby/signature/test.rb +0 -28
  185. data/vendor/ruby-signature/lib/ruby/signature/type_name.rb +0 -72
  186. data/vendor/ruby-signature/lib/ruby/signature/types.rb +0 -932
  187. data/vendor/ruby-signature/lib/ruby/signature/variance_calculator.rb +0 -140
  188. data/vendor/ruby-signature/lib/ruby/signature/vendorer.rb +0 -49
  189. data/vendor/ruby-signature/lib/ruby/signature/version.rb +0 -5
  190. data/vendor/ruby-signature/lib/ruby/signature/writer.rb +0 -271
@@ -1,121 +1,243 @@
1
- # The [GC](GC) module provides an interface to Rubys
2
- # mark and sweep garbage collection mechanism.
3
- #
4
- # Some of the underlying methods are also available via the
5
- # [ObjectSpace](https://ruby-doc.org/core-2.6.3/ObjectSpace.html) module.
6
- #
7
- # You may obtain information about the operation of the
8
- # [GC](GC) through
9
- # [GC::Profiler](https://ruby-doc.org/core-2.6.3/GC/Profiler.html).
1
+ # The GC module provides an interface to Ruby's mark and sweep garbage
2
+ # collection mechanism.
3
+ #
4
+ # Some of the underlying methods are also available via the ObjectSpace module.
5
+ #
6
+ # You may obtain information about the operation of the GC through GC::Profiler.
7
+ #
10
8
  module GC
11
- # The number of times [GC](GC.downloaded.ruby_doc) occurred.
12
- #
13
- # It returns the number of times [GC](GC.downloaded.ruby_doc) occurred
14
- # since the process started.
9
+ # The number of times GC occurred.
10
+ #
11
+ # It returns the number of times GC occurred since the process started.
12
+ #
15
13
  def self.count: () -> Integer
16
14
 
17
15
  # Disables garbage collection, returning `true` if garbage collection was
18
16
  # already disabled.
19
- #
20
- # ```ruby
21
- # GC.disable #=> false
22
- # GC.disable #=> true
23
- # ```
17
+ #
18
+ # GC.disable #=> false
19
+ # GC.disable #=> true
20
+ #
24
21
  def self.disable: () -> bool
25
22
 
26
23
  # Enables garbage collection, returning `true` if garbage collection was
27
24
  # previously disabled.
28
- #
29
- # ```ruby
30
- # GC.disable #=> false
31
- # GC.enable #=> true
32
- # GC.enable #=> false
33
- # ```
25
+ #
26
+ # GC.disable #=> false
27
+ # GC.enable #=> true
28
+ # GC.enable #=> false
29
+ #
34
30
  def self.enable: () -> bool
35
31
 
36
- def self.start: (?full_mark: bool full_mark, ?immediate_mark: bool immediate_mark, ?immediate_sweep: bool immediate_sweep) -> nil
37
-
38
- # Returns a [Hash](https://ruby-doc.org/core-2.6.3/Hash.html) containing
39
- # information about the [GC](GC.downloaded.ruby_doc).
40
- #
41
- # The hash includes information about internal statistics about
42
- # [GC](GC.downloaded.ruby_doc) such as:
43
- #
44
- # ```ruby
45
- # {
46
- # :count=>0,
47
- # :heap_allocated_pages=>24,
48
- # :heap_sorted_length=>24,
49
- # :heap_allocatable_pages=>0,
50
- # :heap_available_slots=>9783,
51
- # :heap_live_slots=>7713,
52
- # :heap_free_slots=>2070,
53
- # :heap_final_slots=>0,
54
- # :heap_marked_slots=>0,
55
- # :heap_eden_pages=>24,
56
- # :heap_tomb_pages=>0,
57
- # :total_allocated_pages=>24,
58
- # :total_freed_pages=>0,
59
- # :total_allocated_objects=>7796,
60
- # :total_freed_objects=>83,
61
- # :malloc_increase_bytes=>2389312,
62
- # :malloc_increase_bytes_limit=>16777216,
63
- # :minor_gc_count=>0,
64
- # :major_gc_count=>0,
65
- # :remembered_wb_unprotected_objects=>0,
66
- # :remembered_wb_unprotected_objects_limit=>0,
67
- # :old_objects=>0,
68
- # :old_objects_limit=>0,
69
- # :oldmalloc_increase_bytes=>2389760,
70
- # :oldmalloc_increase_bytes_limit=>16777216
71
- # }
72
- # ```
73
- #
74
- # The contents of the hash are implementation specific and may be changed
75
- # in the future.
76
- #
32
+ # Initiates garbage collection, even if manually disabled.
33
+ #
34
+ # This method is defined with keyword arguments that default to true:
35
+ #
36
+ # def GC.start(full_mark: true, immediate_sweep: true); end
37
+ #
38
+ # Use full_mark: false to perform a minor GC. Use immediate_sweep: false to
39
+ # defer sweeping (use lazy sweep).
40
+ #
41
+ # Note: These keyword arguments are implementation and version dependent. They
42
+ # are not guaranteed to be future-compatible, and may be ignored if the
43
+ # underlying implementation does not support them.
44
+ #
45
+ def self.start: (?immediate_sweep: bool immediate_sweep, ?immediate_mark: bool immediate_mark, ?full_mark: bool full_mark) -> nil
46
+
47
+ # Returns a Hash containing information about the GC.
48
+ #
49
+ # The hash includes information about internal statistics about GC such as:
50
+ #
51
+ # {
52
+ # :count=>0,
53
+ # :heap_allocated_pages=>24,
54
+ # :heap_sorted_length=>24,
55
+ # :heap_allocatable_pages=>0,
56
+ # :heap_available_slots=>9783,
57
+ # :heap_live_slots=>7713,
58
+ # :heap_free_slots=>2070,
59
+ # :heap_final_slots=>0,
60
+ # :heap_marked_slots=>0,
61
+ # :heap_eden_pages=>24,
62
+ # :heap_tomb_pages=>0,
63
+ # :total_allocated_pages=>24,
64
+ # :total_freed_pages=>0,
65
+ # :total_allocated_objects=>7796,
66
+ # :total_freed_objects=>83,
67
+ # :malloc_increase_bytes=>2389312,
68
+ # :malloc_increase_bytes_limit=>16777216,
69
+ # :minor_gc_count=>0,
70
+ # :major_gc_count=>0,
71
+ # :remembered_wb_unprotected_objects=>0,
72
+ # :remembered_wb_unprotected_objects_limit=>0,
73
+ # :old_objects=>0,
74
+ # :old_objects_limit=>0,
75
+ # :oldmalloc_increase_bytes=>2389760,
76
+ # :oldmalloc_increase_bytes_limit=>16777216
77
+ # }
78
+ #
79
+ # The contents of the hash are implementation specific and may be changed in the
80
+ # future.
81
+ #
77
82
  # This method is only expected to work on C Ruby.
83
+ #
78
84
  def self.stat: (?::Hash[Symbol, Integer] arg0) -> ::Hash[Symbol, Integer]
79
85
  | (?Symbol arg0) -> Integer
80
86
 
81
- # Returns current status of [GC](GC.downloaded.ruby_doc) stress mode.
87
+ # Returns current status of GC stress mode.
88
+ #
82
89
  def self.stress: () -> (Integer | TrueClass | FalseClass)
83
90
 
84
- def self.stress=: ((Integer | TrueClass | FalseClass) flag) -> (Integer | TrueClass | FalseClass)
91
+ # Updates the GC stress mode.
92
+ #
93
+ # When stress mode is enabled, the GC is invoked at every GC opportunity: all
94
+ # memory and object allocations.
95
+ #
96
+ # Enabling stress mode will degrade performance, it is only for debugging.
97
+ #
98
+ # flag can be true, false, or an integer bit-ORed following flags.
99
+ # 0x01:: no major GC
100
+ # 0x02:: no immediate sweep
101
+ # 0x04:: full mark after malloc/calloc/realloc
102
+ #
103
+ def self.stress=: (Integer | TrueClass | FalseClass flag) -> (Integer | TrueClass | FalseClass)
85
104
 
86
105
  def self.compact: () -> ::Hash[:considered | :moved, Hash[Symbol | Integer, Integer]]
87
106
 
107
+ # Verify compaction reference consistency.
108
+ #
109
+ # This method is implementation specific. During compaction, objects that were
110
+ # moved are replaced with T_MOVED objects. No object should have a reference to
111
+ # a T_MOVED object after compaction.
112
+ #
113
+ # This function doubles the heap to ensure room to move all objects, compacts
114
+ # the heap to make sure everything moves, updates all references, then performs
115
+ # a full GC. If any object contains a reference to a T_MOVED object, that
116
+ # object should be pushed on the mark stack, and will make a SEGV.
117
+ #
88
118
  def self.verify_compaction_references: () -> ::Hash[:considered | :moved, Hash[Symbol | Integer, Integer]]
89
119
 
120
+ # Verify internal consistency.
121
+ #
122
+ # This method is implementation specific. Now this method checks generational
123
+ # consistency if RGenGC is supported.
124
+ #
90
125
  def self.verify_internal_consistency: () -> nil
91
126
 
92
127
  def self.verify_transient_heap_internal_consistency: () -> nil
93
128
 
129
+ # Returns information about the most recent garbage collection.
130
+ #
94
131
  def self.latest_gc_info: () -> ::Hash[::Symbol, untyped]
95
132
  | [K] (?Hash[K, untyped] hash) -> ::Hash[::Symbol | K, untyped]
96
133
  | (Symbol key) -> untyped
97
134
 
98
- def garbage_collect: (?full_mark: bool full_mark, ?immediate_mark: bool immediate_mark, ?immediate_sweep: bool immediate_sweep) -> nil
135
+ def garbage_collect: (?immediate_sweep: bool immediate_sweep, ?immediate_mark: bool immediate_mark, ?full_mark: bool full_mark) -> nil
99
136
  end
100
137
 
138
+ # internal constants
139
+ #
140
+ #
101
141
  GC::INTERNAL_CONSTANTS: Hash[Symbol, Integer]
102
142
 
143
+ # GC build options
144
+ #
145
+ #
103
146
  GC::OPTS: Array[String]
104
147
 
148
+ # The GC profiler provides access to information on GC runs including time,
149
+ # length and object space size.
150
+ #
151
+ # Example:
152
+ #
153
+ # GC::Profiler.enable
154
+ #
155
+ # require 'rdoc/rdoc'
156
+ #
157
+ # GC::Profiler.report
158
+ #
159
+ # GC::Profiler.disable
160
+ #
161
+ # See also GC.count, GC.malloc_allocated_size and GC.malloc_allocations
162
+ #
105
163
  module GC::Profiler
164
+ # Clears the GC profiler data.
165
+ #
106
166
  def self.clear: () -> void
107
167
 
168
+ # Stops the GC profiler.
169
+ #
108
170
  def self.disable: () -> void
109
171
 
172
+ # Starts the GC profiler.
173
+ #
110
174
  def self.enable: () -> void
111
175
 
176
+ # The current status of GC profile mode.
177
+ #
112
178
  def self.enabled?: () -> bool
113
179
 
180
+ # Returns an Array of individual raw profile data Hashes ordered from earliest
181
+ # to latest by `:GC_INVOKE_TIME`.
182
+ #
183
+ # For example:
184
+ #
185
+ # [
186
+ # {
187
+ # :GC_TIME=>1.3000000000000858e-05,
188
+ # :GC_INVOKE_TIME=>0.010634999999999999,
189
+ # :HEAP_USE_SIZE=>289640,
190
+ # :HEAP_TOTAL_SIZE=>588960,
191
+ # :HEAP_TOTAL_OBJECTS=>14724,
192
+ # :GC_IS_MARKED=>false
193
+ # },
194
+ # # ...
195
+ # ]
196
+ #
197
+ # The keys mean:
198
+ #
199
+ # `:GC_TIME`
200
+ # : Time elapsed in seconds for this GC run
201
+ # `:GC_INVOKE_TIME`
202
+ # : Time elapsed in seconds from startup to when the GC was invoked
203
+ # `:HEAP_USE_SIZE`
204
+ # : Total bytes of heap used
205
+ # `:HEAP_TOTAL_SIZE`
206
+ # : Total size of heap in bytes
207
+ # `:HEAP_TOTAL_OBJECTS`
208
+ # : Total number of objects
209
+ # `:GC_IS_MARKED`
210
+ # : Returns `true` if the GC is in mark phase
211
+ #
212
+ #
213
+ # If ruby was built with `GC_PROFILE_MORE_DETAIL`, you will also have access to
214
+ # the following hash keys:
215
+ #
216
+ # `:GC_MARK_TIME`
217
+ # `:GC_SWEEP_TIME`
218
+ # `:ALLOCATE_INCREASE`
219
+ # `:ALLOCATE_LIMIT`
220
+ # `:HEAP_USE_PAGES`
221
+ # `:HEAP_LIVE_OBJECTS`
222
+ # `:HEAP_FREE_OBJECTS`
223
+ # `:HAVE_FINALIZE`
224
+ # :
225
+ #
114
226
  def self.raw_data: () -> ::Array[::Hash[Symbol, untyped]]
115
227
 
228
+ # Writes the GC::Profiler.result to `$stdout` or the given IO object.
229
+ #
116
230
  def self.report: (?IO io) -> void
117
231
 
232
+ # Returns a profile data report such as:
233
+ #
234
+ # GC 1 invokes.
235
+ # Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC time(ms)
236
+ # 1 0.012 159240 212940 10647 0.00000000000001530000
237
+ #
118
238
  def self.result: () -> String
119
239
 
240
+ # The total time used for garbage collection in seconds
241
+ #
120
242
  def self.total_time: () -> Float
121
243
  end
@@ -45,7 +45,6 @@ class Integer < Numeric
45
45
  | (Rational) -> Rational
46
46
  | (Complex) -> Complex
47
47
  | (Integer) -> Integer
48
- | (Numeric) -> Numeric
49
48
 
50
49
  # Raises `int` to the power of `numeric`, which may be negative or fractional.
51
50
  # The result may be an Integer, a Float, a Rational, or a complex number.
@@ -63,7 +62,6 @@ class Integer < Numeric
63
62
  | (Float) -> Numeric
64
63
  | (Rational) -> Numeric
65
64
  | (Complex) -> Complex
66
- | (Numeric) -> Numeric
67
65
 
68
66
  # Performs addition: the class of the resulting object depends on the class of
69
67
  # `numeric`.
@@ -72,7 +70,6 @@ class Integer < Numeric
72
70
  | (Float) -> Float
73
71
  | (Rational) -> Rational
74
72
  | (Complex) -> Complex
75
- | (Numeric) -> Numeric
76
73
 
77
74
  def +@: () -> Integer
78
75
 
@@ -83,7 +80,6 @@ class Integer < Numeric
83
80
  | (Float) -> Float
84
81
  | (Rational) -> Rational
85
82
  | (Complex) -> Complex
86
- | (Numeric) -> Numeric
87
83
 
88
84
  # Returns `int`, negated.
89
85
  #
@@ -96,7 +92,6 @@ class Integer < Numeric
96
92
  | (Float) -> Float
97
93
  | (Rational) -> Rational
98
94
  | (Complex) -> Complex
99
- | (Numeric) -> Numeric
100
95
 
101
96
  # Returns `true` if the value of `int` is less than that of `real`.
102
97
  #
@@ -475,7 +470,9 @@ class Integer < Numeric
475
470
  # a.pow(b, m) #=> same as (a**b) % m, but avoids huge temporary values
476
471
  #
477
472
  def pow: (Integer other, ?Integer modulo) -> Integer
478
- | (Numeric numeric) -> Numeric
473
+ | (Float) -> Float
474
+ | (Rational) -> Rational
475
+ | (Complex) -> Complex
479
476
 
480
477
  # Returns the predecessor of `int`, i.e. the Integer equal to `int-1`.
481
478
  #
@@ -302,19 +302,19 @@ module Kernel
302
302
  # The optional second parameter sets the message associated with the
303
303
  # exception, and the third parameter is an array of callback information.
304
304
  # Exceptions are caught by the `rescue` clause of `begin...end` blocks.
305
- #
305
+ #
306
306
  # ```ruby
307
307
  # raise "Failed to create socket"
308
308
  # raise ArgumentError, "No parameters", caller
309
309
  # ```
310
- #
310
+ #
311
311
  # The `cause` of the generated exception is automatically set to the
312
312
  # “current” exception ( `$!` ) if any. An alternative value, either an
313
313
  # `Exception` object or `nil`, can be specified via the `:cause`
314
314
  # argument.
315
315
  def fail: () -> bot
316
316
  | (String arg0) -> bot
317
- | (?Exception arg0, ?String arg1, ?::Array[String] arg2) -> bot
317
+ | (_Exception arg0, ?untyped arg1, ?::Array[String] arg2) -> bot
318
318
  alias raise fail
319
319
 
320
320
  def format: (String format, *untyped args) -> String
@@ -384,7 +384,9 @@ module Kernel
384
384
  # cat, 1, 2, 3, 99
385
385
  def print: (*Kernel args) -> nil
386
386
 
387
- def printf: (?IO arg0, ?String arg1, *untyped arg2) -> nil
387
+ def printf: (IO arg0, String arg1, *untyped args) -> nil
388
+ | (String arg1, *untyped args) -> nil
389
+ | -> nil
388
390
 
389
391
  def proc: () { () -> untyped } -> Proc
390
392