rbs 3.9.4 → 3.10.2

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 (194) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +74 -0
  3. data/.clangd +2 -0
  4. data/.github/workflows/c-check.yml +54 -0
  5. data/.github/workflows/comments.yml +2 -2
  6. data/.github/workflows/ruby.yml +33 -19
  7. data/.github/workflows/typecheck.yml +1 -1
  8. data/.github/workflows/windows.yml +1 -1
  9. data/.gitignore +4 -0
  10. data/CHANGELOG.md +81 -0
  11. data/README.md +38 -1
  12. data/Rakefile +152 -23
  13. data/config.yml +190 -62
  14. data/core/array.rbs +96 -46
  15. data/core/comparable.rbs +13 -6
  16. data/core/complex.rbs +40 -25
  17. data/core/dir.rbs +4 -4
  18. data/core/encoding.rbs +6 -9
  19. data/core/enumerable.rbs +90 -3
  20. data/core/enumerator.rbs +43 -1
  21. data/core/errno.rbs +8 -0
  22. data/core/errors.rbs +28 -1
  23. data/core/exception.rbs +2 -2
  24. data/core/fiber.rbs +29 -20
  25. data/core/file.rbs +49 -19
  26. data/core/file_test.rbs +1 -1
  27. data/core/float.rbs +224 -33
  28. data/core/gc.rbs +417 -281
  29. data/core/hash.rbs +1023 -727
  30. data/core/integer.rbs +104 -63
  31. data/core/io/buffer.rbs +21 -10
  32. data/core/io/wait.rbs +11 -33
  33. data/core/io.rbs +14 -12
  34. data/core/kernel.rbs +61 -51
  35. data/core/marshal.rbs +1 -1
  36. data/core/match_data.rbs +1 -1
  37. data/core/math.rbs +42 -3
  38. data/core/method.rbs +63 -25
  39. data/core/module.rbs +101 -23
  40. data/core/nil_class.rbs +3 -3
  41. data/core/numeric.rbs +25 -17
  42. data/core/object.rbs +3 -3
  43. data/core/object_space.rbs +21 -15
  44. data/core/pathname.rbs +1272 -0
  45. data/core/proc.rbs +30 -24
  46. data/core/process.rbs +2 -2
  47. data/core/ractor.rbs +361 -509
  48. data/core/range.rbs +7 -8
  49. data/core/rational.rbs +56 -34
  50. data/core/rbs/unnamed/argf.rbs +2 -2
  51. data/core/rbs/unnamed/env_class.rbs +1 -1
  52. data/core/rbs/unnamed/random.rbs +4 -2
  53. data/core/regexp.rbs +25 -20
  54. data/core/ruby.rbs +53 -0
  55. data/core/ruby_vm.rbs +6 -4
  56. data/core/rubygems/errors.rbs +3 -70
  57. data/core/rubygems/rubygems.rbs +11 -79
  58. data/core/rubygems/version.rbs +2 -3
  59. data/core/set.rbs +488 -359
  60. data/core/signal.rbs +24 -14
  61. data/core/string.rbs +3164 -1235
  62. data/core/struct.rbs +1 -1
  63. data/core/symbol.rbs +17 -11
  64. data/core/thread.rbs +95 -33
  65. data/core/time.rbs +35 -9
  66. data/core/trace_point.rbs +7 -4
  67. data/core/unbound_method.rbs +14 -6
  68. data/docs/aliases.md +79 -0
  69. data/docs/collection.md +2 -2
  70. data/docs/encoding.md +56 -0
  71. data/docs/gem.md +0 -1
  72. data/docs/sigs.md +3 -3
  73. data/ext/rbs_extension/ast_translation.c +1016 -0
  74. data/ext/rbs_extension/ast_translation.h +37 -0
  75. data/ext/rbs_extension/class_constants.c +155 -0
  76. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +7 -1
  77. data/ext/rbs_extension/compat.h +10 -0
  78. data/ext/rbs_extension/extconf.rb +25 -1
  79. data/ext/rbs_extension/legacy_location.c +317 -0
  80. data/ext/rbs_extension/legacy_location.h +45 -0
  81. data/ext/rbs_extension/main.c +367 -23
  82. data/ext/rbs_extension/rbs_extension.h +6 -21
  83. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  84. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  85. data/include/rbs/ast.h +687 -0
  86. data/include/rbs/defines.h +86 -0
  87. data/include/rbs/lexer.h +199 -0
  88. data/include/rbs/location.h +59 -0
  89. data/include/rbs/parser.h +135 -0
  90. data/include/rbs/string.h +47 -0
  91. data/include/rbs/util/rbs_allocator.h +59 -0
  92. data/include/rbs/util/rbs_assert.h +20 -0
  93. data/include/rbs/util/rbs_buffer.h +83 -0
  94. data/include/rbs/util/rbs_constant_pool.h +6 -67
  95. data/include/rbs/util/rbs_encoding.h +282 -0
  96. data/include/rbs/util/rbs_unescape.h +24 -0
  97. data/include/rbs.h +1 -2
  98. data/lib/rbs/annotate/formatter.rb +3 -13
  99. data/lib/rbs/annotate/rdoc_annotator.rb +3 -1
  100. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  101. data/lib/rbs/cli/validate.rb +2 -2
  102. data/lib/rbs/cli.rb +1 -1
  103. data/lib/rbs/collection/config/lockfile_generator.rb +8 -0
  104. data/lib/rbs/collection.rb +1 -0
  105. data/lib/rbs/definition_builder/ancestor_builder.rb +5 -5
  106. data/lib/rbs/environment.rb +64 -59
  107. data/lib/rbs/environment_loader.rb +0 -6
  108. data/lib/rbs/errors.rb +1 -1
  109. data/lib/rbs/parser_aux.rb +5 -0
  110. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  111. data/lib/rbs/resolver/type_name_resolver.rb +124 -38
  112. data/lib/rbs/subtractor.rb +3 -1
  113. data/lib/rbs/test/type_check.rb +14 -0
  114. data/lib/rbs/types.rb +3 -1
  115. data/lib/rbs/version.rb +1 -1
  116. data/lib/rbs.rb +1 -1
  117. data/lib/rdoc/discover.rb +1 -1
  118. data/lib/rdoc_plugin/parser.rb +3 -3
  119. data/sig/annotate/formatter.rbs +2 -2
  120. data/sig/annotate/rdoc_annotater.rbs +1 -1
  121. data/sig/environment.rbs +57 -6
  122. data/sig/manifest.yaml +0 -1
  123. data/sig/parser.rbs +20 -0
  124. data/sig/resolver/type_name_resolver.rbs +38 -7
  125. data/sig/types.rbs +4 -1
  126. data/src/ast.c +1256 -0
  127. data/src/lexer.c +2956 -0
  128. data/src/lexer.re +147 -0
  129. data/src/lexstate.c +205 -0
  130. data/src/location.c +71 -0
  131. data/src/parser.c +3507 -0
  132. data/src/string.c +41 -0
  133. data/src/util/rbs_allocator.c +165 -0
  134. data/src/util/rbs_assert.c +19 -0
  135. data/src/util/rbs_buffer.c +54 -0
  136. data/src/util/rbs_constant_pool.c +18 -88
  137. data/src/util/rbs_encoding.c +21308 -0
  138. data/src/util/rbs_unescape.c +167 -0
  139. data/stdlib/bigdecimal/0/big_decimal.rbs +100 -82
  140. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  141. data/stdlib/cgi/0/core.rbs +9 -393
  142. data/stdlib/cgi/0/manifest.yaml +1 -0
  143. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  144. data/stdlib/coverage/0/coverage.rbs +3 -1
  145. data/stdlib/date/0/date.rbs +67 -59
  146. data/stdlib/date/0/date_time.rbs +1 -1
  147. data/stdlib/delegate/0/delegator.rbs +10 -7
  148. data/stdlib/erb/0/erb.rbs +737 -347
  149. data/stdlib/fileutils/0/fileutils.rbs +18 -13
  150. data/stdlib/forwardable/0/forwardable.rbs +3 -0
  151. data/stdlib/json/0/json.rbs +68 -48
  152. data/stdlib/net-http/0/net-http.rbs +3 -0
  153. data/stdlib/objspace/0/objspace.rbs +9 -4
  154. data/stdlib/open-uri/0/open-uri.rbs +40 -0
  155. data/stdlib/openssl/0/openssl.rbs +331 -228
  156. data/stdlib/optparse/0/optparse.rbs +3 -3
  157. data/stdlib/pathname/0/pathname.rbs +9 -1379
  158. data/stdlib/psych/0/psych.rbs +3 -3
  159. data/stdlib/rdoc/0/code_object.rbs +2 -2
  160. data/stdlib/rdoc/0/comment.rbs +2 -0
  161. data/stdlib/rdoc/0/options.rbs +76 -0
  162. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  163. data/stdlib/rdoc/0/store.rbs +1 -1
  164. data/stdlib/resolv/0/resolv.rbs +25 -68
  165. data/stdlib/ripper/0/ripper.rbs +5 -2
  166. data/stdlib/singleton/0/singleton.rbs +3 -0
  167. data/stdlib/socket/0/socket.rbs +13 -1
  168. data/stdlib/socket/0/tcp_socket.rbs +10 -2
  169. data/stdlib/stringio/0/stringio.rbs +1176 -85
  170. data/stdlib/strscan/0/string_scanner.rbs +31 -31
  171. data/stdlib/tempfile/0/tempfile.rbs +3 -3
  172. data/stdlib/time/0/time.rbs +1 -1
  173. data/stdlib/timeout/0/timeout.rbs +63 -7
  174. data/stdlib/tsort/0/cyclic.rbs +3 -0
  175. data/stdlib/uri/0/common.rbs +11 -2
  176. data/stdlib/uri/0/file.rbs +1 -1
  177. data/stdlib/uri/0/generic.rbs +17 -16
  178. data/stdlib/uri/0/rfc2396_parser.rbs +6 -7
  179. data/stdlib/zlib/0/zstream.rbs +1 -0
  180. metadata +44 -18
  181. data/ext/rbs_extension/lexer.c +0 -2728
  182. data/ext/rbs_extension/lexer.h +0 -179
  183. data/ext/rbs_extension/lexer.re +0 -147
  184. data/ext/rbs_extension/lexstate.c +0 -175
  185. data/ext/rbs_extension/location.c +0 -325
  186. data/ext/rbs_extension/location.h +0 -85
  187. data/ext/rbs_extension/parser.c +0 -2982
  188. data/ext/rbs_extension/parser.h +0 -18
  189. data/ext/rbs_extension/parserstate.c +0 -411
  190. data/ext/rbs_extension/parserstate.h +0 -163
  191. data/ext/rbs_extension/unescape.c +0 -32
  192. data/include/rbs/ruby_objs.h +0 -72
  193. data/src/constants.c +0 -153
  194. data/src/ruby_objs.c +0 -799
@@ -17,7 +17,7 @@
17
17
  # Further RubyGems documentation can be found at:
18
18
  #
19
19
  # * [RubyGems Guides](https://guides.rubygems.org)
20
- # * [RubyGems API](https://www.rubydoc.info/github/rubygems/rubygems) (also
20
+ # * [RubyGems API](https://www.rubydoc.info/github/ruby/rubygems) (also
21
21
  # available from `gem server`)
22
22
  #
23
23
  # ## RubyGems Plugins
@@ -48,7 +48,7 @@
48
48
  # ## Bugs
49
49
  #
50
50
  # You can submit bugs to the [RubyGems bug
51
- # tracker](https://github.com/rubygems/rubygems/issues) on GitHub
51
+ # tracker](https://github.com/ruby/rubygems/issues) on GitHub
52
52
  #
53
53
  # ## Credits
54
54
  #
@@ -83,80 +83,13 @@
83
83
  #
84
84
  # ## License
85
85
  #
86
- # See
87
- # [LICENSE.txt](https://github.com/rubygems/rubygems/blob/master/LICENSE.txt)
86
+ # See [LICENSE.txt](https://github.com/ruby/rubygems/blob/master/LICENSE.txt)
88
87
  # for permissions.
89
88
  #
90
89
  # Thanks!
91
90
  #
92
91
  # -The RubyGems Team
93
92
  #
94
- # <!-- rdoc-file=lib/rubygems/deprecate.rb -->
95
- # Provides 3 methods for declaring when something is going away.
96
- #
97
- # +deprecate(name, repl, year, month)+:
98
- # Indicate something may be removed on/after a certain date.
99
- #
100
- # +rubygems_deprecate(name, replacement=:none)+:
101
- # Indicate something will be removed in the next major RubyGems version,
102
- # and (optionally) a replacement for it.
103
- #
104
- # `rubygems_deprecate_command`:
105
- # Indicate a RubyGems command (in +lib/rubygems/commands/*.rb+) will be
106
- # removed in the next RubyGems version.
107
- #
108
- # Also provides `skip_during` for temporarily turning off deprecation warnings.
109
- # This is intended to be used in the test suite, so deprecation warnings don't
110
- # cause test failures if you need to make sure stderr is otherwise empty.
111
- #
112
- # Example usage of `deprecate` and `rubygems_deprecate`:
113
- #
114
- # class Legacy
115
- # def self.some_class_method
116
- # # ...
117
- # end
118
- #
119
- # def some_instance_method
120
- # # ...
121
- # end
122
- #
123
- # def some_old_method
124
- # # ...
125
- # end
126
- #
127
- # extend Gem::Deprecate
128
- # deprecate :some_instance_method, "X.z", 2011, 4
129
- # rubygems_deprecate :some_old_method, "Modern#some_new_method"
130
- #
131
- # class << self
132
- # extend Gem::Deprecate
133
- # deprecate :some_class_method, :none, 2011, 4
134
- # end
135
- # end
136
- #
137
- # Example usage of `rubygems_deprecate_command`:
138
- #
139
- # class Gem::Commands::QueryCommand < Gem::Command
140
- # extend Gem::Deprecate
141
- # rubygems_deprecate_command
142
- #
143
- # # ...
144
- # end
145
- #
146
- # Example usage of `skip_during`:
147
- #
148
- # class TestSomething < Gem::Testcase
149
- # def test_some_thing_with_deprecations
150
- # Gem::Deprecate.skip_during do
151
- # actual_stdout, actual_stderr = capture_output do
152
- # Gem.something_deprecated
153
- # end
154
- # assert_empty actual_stdout
155
- # assert_equal(expected, actual_stderr)
156
- # end
157
- # end
158
- # end
159
- #
160
93
  module Gem
161
94
  interface _HashLike[K, V]
162
95
  def each_pair: () { ([ K, V ]) -> untyped } -> self
@@ -204,7 +137,7 @@ module Gem
204
137
 
205
138
  VERSION: String
206
139
 
207
- # <!-- rdoc-file=lib/rubygems.rb -->
140
+ # <!-- rdoc-file=lib/rubygems/win_platform.rb -->
208
141
  # An Array of Regexps that match windows Ruby platforms.
209
142
  #
210
143
  WIN_PATTERNS: Array[Regexp]
@@ -251,7 +184,7 @@ module Gem
251
184
 
252
185
  # <!--
253
186
  # rdoc-file=lib/rubygems.rb
254
- # - bindir(install_dir=Gem.dir)
187
+ # - bindir(install_dir = Gem.dir)
255
188
  # -->
256
189
  # The path where gem executables are to be installed.
257
190
  #
@@ -509,7 +442,7 @@ module Gem
509
442
 
510
443
  # <!--
511
444
  # rdoc-file=lib/rubygems.rb
512
- # - find_files(glob, check_load_path=true)
445
+ # - find_files(glob, check_load_path = true)
513
446
  # -->
514
447
  # Returns a list of paths matching `glob` that can be used by a gem to pick up
515
448
  # features from other gems. For example:
@@ -526,7 +459,7 @@ module Gem
526
459
 
527
460
  # <!--
528
461
  # rdoc-file=lib/rubygems.rb
529
- # - find_latest_files(glob, check_load_path=true)
462
+ # - find_latest_files(glob, check_load_path = true)
530
463
  # -->
531
464
  # Returns a list of paths matching `glob` from the latest gems that can be used
532
465
  # by a gem to pick up features from other gems. For example:
@@ -551,7 +484,7 @@ module Gem
551
484
 
552
485
  # <!--
553
486
  # rdoc-file=lib/rubygems.rb
554
- # - finish_resolve(request_set=Gem::RequestSet.new)
487
+ # - finish_resolve(request_set = Gem::RequestSet.new)
555
488
  # -->
556
489
  #
557
490
  def self.finish_resolve: (?RequestSet request_set) -> void
@@ -804,7 +737,7 @@ module Gem
804
737
 
805
738
  # <!--
806
739
  # rdoc-file=lib/rubygems.rb
807
- # - plugindir(install_dir=Gem.dir)
740
+ # - plugindir(install_dir = Gem.dir)
808
741
  # -->
809
742
  # The path were rubygems plugins are to be installed.
810
743
  #
@@ -1009,8 +942,7 @@ module Gem
1009
942
  # - source_date_epoch_string()
1010
943
  # -->
1011
944
  # If the SOURCE_DATE_EPOCH environment variable is set, returns it's value.
1012
- # Otherwise, returns the time that `Gem.source_date_epoch_string` was first
1013
- # called in the same format as SOURCE_DATE_EPOCH.
945
+ # Otherwise, returns DEFAULT_SOURCE_DATE_EPOCH as a string.
1014
946
  #
1015
947
  # NOTE(@duckinator): The implementation is a tad weird because we want to:
1016
948
  # 1. Make builds reproducible by default, by having this function always
@@ -1154,7 +1086,7 @@ module Gem
1154
1086
  def self.user_home: () -> String
1155
1087
 
1156
1088
  # <!--
1157
- # rdoc-file=lib/rubygems.rb
1089
+ # rdoc-file=lib/rubygems/win_platform.rb
1158
1090
  # - win_platform?()
1159
1091
  # -->
1160
1092
  # Is this a windows platform?
@@ -180,7 +180,6 @@ module Gem
180
180
  #
181
181
  # ver1 = Version.create('1.3.17') # -> (Version object)
182
182
  # ver2 = Version.create(ver1) # -> (ver1)
183
- # ver3 = Version.create(nil) # -> nil
184
183
  #
185
184
  def self.create: (_ToS | Version input) -> instance
186
185
  | (nil input) -> nil
@@ -199,8 +198,8 @@ module Gem
199
198
  # - <=>(other)
200
199
  # -->
201
200
  # Compares this version with `other` returning -1, 0, or 1 if the other version
202
- # is larger, the same, or smaller than this one. Attempts to compare to
203
- # something that's not a `Gem::Version` or a valid version String return `nil`.
201
+ # is larger, the same, or smaller than this one. `other` must be an instance of
202
+ # Gem::Version, comparing with other types may raise an exception.
204
203
  #
205
204
  def <=>: (untyped other) -> Integer?
206
205