rbs 3.0.0.dev.1 → 3.0.0.dev.3

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 (165) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/comments.yml +2 -1
  3. data/.github/workflows/ruby.yml +4 -3
  4. data/CHANGELOG.md +28 -0
  5. data/Gemfile.lock +12 -12
  6. data/README.md +1 -0
  7. data/Rakefile +77 -3
  8. data/Steepfile +1 -1
  9. data/core/array.rbs +574 -424
  10. data/core/basic_object.rbs +11 -39
  11. data/core/binding.rbs +1 -1
  12. data/core/builtin.rbs +9 -1
  13. data/core/class.rbs +37 -0
  14. data/core/comparable.rbs +7 -18
  15. data/core/complex.rbs +2 -2
  16. data/core/data.rbs +419 -0
  17. data/core/dir.rbs +52 -104
  18. data/core/encoding.rbs +22 -181
  19. data/core/enumerable.rbs +212 -175
  20. data/core/enumerator/product.rbs +96 -0
  21. data/core/enumerator.rbs +57 -8
  22. data/core/errors.rbs +8 -2
  23. data/core/exception.rbs +41 -0
  24. data/core/fiber.rbs +95 -12
  25. data/core/file.rbs +840 -275
  26. data/core/file_test.rbs +34 -19
  27. data/core/float.rbs +40 -96
  28. data/core/gc.rbs +15 -3
  29. data/core/hash.rbs +114 -176
  30. data/core/integer.rbs +85 -145
  31. data/core/io/buffer.rbs +187 -60
  32. data/core/io/wait.rbs +28 -16
  33. data/core/io.rbs +1859 -1389
  34. data/core/kernel.rbs +525 -961
  35. data/core/match_data.rbs +306 -142
  36. data/core/math.rbs +506 -234
  37. data/core/method.rbs +0 -24
  38. data/core/module.rbs +111 -18
  39. data/core/nil_class.rbs +2 -0
  40. data/core/numeric.rbs +76 -144
  41. data/core/object.rbs +88 -212
  42. data/core/proc.rbs +17 -5
  43. data/core/process.rbs +22 -5
  44. data/core/ractor.rbs +1 -1
  45. data/core/random.rbs +20 -3
  46. data/core/range.rbs +91 -89
  47. data/core/rational.rbs +2 -3
  48. data/core/rbs/unnamed/argf.rbs +177 -120
  49. data/core/rbs/unnamed/env_class.rbs +89 -163
  50. data/core/rbs/unnamed/random.rbs +36 -12
  51. data/core/refinement.rbs +8 -0
  52. data/core/regexp.rbs +462 -272
  53. data/core/ruby_vm.rbs +210 -0
  54. data/{stdlib/set/0 → core}/set.rbs +43 -47
  55. data/core/string.rbs +1403 -1332
  56. data/core/string_io.rbs +191 -107
  57. data/core/struct.rbs +67 -63
  58. data/core/symbol.rbs +187 -201
  59. data/core/thread.rbs +40 -35
  60. data/core/time.rbs +902 -826
  61. data/core/trace_point.rbs +55 -6
  62. data/core/unbound_method.rbs +48 -24
  63. data/docs/collection.md +4 -0
  64. data/docs/syntax.md +55 -0
  65. data/ext/rbs_extension/constants.c +16 -2
  66. data/ext/rbs_extension/constants.h +8 -1
  67. data/ext/rbs_extension/extconf.rb +1 -1
  68. data/ext/rbs_extension/lexer.c +834 -777
  69. data/ext/rbs_extension/lexer.h +3 -1
  70. data/ext/rbs_extension/lexer.re +3 -1
  71. data/ext/rbs_extension/lexstate.c +4 -2
  72. data/ext/rbs_extension/parser.c +262 -43
  73. data/ext/rbs_extension/ruby_objs.c +56 -2
  74. data/ext/rbs_extension/ruby_objs.h +7 -1
  75. data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
  76. data/lib/rbs/ast/declarations.rb +49 -2
  77. data/lib/rbs/ast/directives.rb +39 -0
  78. data/lib/rbs/cli.rb +38 -19
  79. data/lib/rbs/collection/cleaner.rb +8 -1
  80. data/lib/rbs/collection/config/lockfile.rb +3 -1
  81. data/lib/rbs/collection/config/lockfile_generator.rb +37 -30
  82. data/lib/rbs/collection/config.rb +3 -3
  83. data/lib/rbs/collection/sources/git.rb +10 -3
  84. data/lib/rbs/collection/sources/local.rb +79 -0
  85. data/lib/rbs/collection/sources.rb +8 -1
  86. data/lib/rbs/definition_builder/ancestor_builder.rb +24 -8
  87. data/lib/rbs/definition_builder.rb +8 -8
  88. data/lib/rbs/environment/use_map.rb +77 -0
  89. data/lib/rbs/environment.rb +358 -88
  90. data/lib/rbs/environment_loader.rb +12 -9
  91. data/lib/rbs/environment_walker.rb +1 -1
  92. data/lib/rbs/errors.rb +52 -37
  93. data/lib/rbs/locator.rb +27 -8
  94. data/lib/rbs/parser_aux.rb +8 -6
  95. data/lib/rbs/resolver/constant_resolver.rb +23 -7
  96. data/lib/rbs/resolver/type_name_resolver.rb +2 -1
  97. data/lib/rbs/sorter.rb +5 -5
  98. data/lib/rbs/test/setup.rb +1 -1
  99. data/lib/rbs/type_alias_dependency.rb +1 -1
  100. data/lib/rbs/type_alias_regularity.rb +3 -3
  101. data/lib/rbs/validator.rb +23 -2
  102. data/lib/rbs/variance_calculator.rb +2 -2
  103. data/lib/rbs/version.rb +1 -1
  104. data/lib/rbs/writer.rb +28 -2
  105. data/lib/rbs.rb +2 -2
  106. data/lib/rdoc_plugin/parser.rb +2 -2
  107. data/rbs.gemspec +1 -1
  108. data/sig/ancestor_graph.rbs +22 -2
  109. data/sig/collection/config/lockfile_generator.rbs +8 -10
  110. data/sig/collection/config.rbs +1 -1
  111. data/sig/collection/sources.rbs +44 -9
  112. data/sig/constant.rbs +1 -1
  113. data/sig/declarations.rbs +36 -3
  114. data/sig/definition.rbs +1 -1
  115. data/sig/definition_builder.rbs +0 -1
  116. data/sig/directives.rbs +61 -0
  117. data/sig/environment.rbs +150 -29
  118. data/sig/environment_loader.rbs +1 -1
  119. data/sig/errors.rbs +22 -1
  120. data/sig/locator.rbs +14 -2
  121. data/sig/parser.rbs +8 -15
  122. data/sig/resolver/constant_resolver.rbs +1 -2
  123. data/sig/shims/{abstract_syntax_tree.rbs → _abstract_syntax_tree.rbs} +0 -0
  124. data/sig/shims/bundler.rbs +18 -0
  125. data/sig/shims/rubygems.rbs +6 -0
  126. data/sig/use_map.rbs +35 -0
  127. data/sig/validator.rbs +12 -5
  128. data/sig/writer.rbs +4 -2
  129. data/stdlib/bigdecimal/0/big_decimal.rbs +16 -13
  130. data/stdlib/cgi/0/core.rbs +16 -0
  131. data/stdlib/coverage/0/coverage.rbs +50 -8
  132. data/stdlib/csv/0/csv.rbs +1 -1
  133. data/stdlib/date/0/date.rbs +856 -726
  134. data/stdlib/date/0/date_time.rbs +83 -210
  135. data/stdlib/erb/0/erb.rbs +13 -36
  136. data/stdlib/etc/0/etc.rbs +127 -20
  137. data/stdlib/fileutils/0/fileutils.rbs +1290 -381
  138. data/stdlib/logger/0/logger.rbs +466 -316
  139. data/stdlib/net-http/0/net-http.rbs +2211 -534
  140. data/stdlib/nkf/0/nkf.rbs +5 -5
  141. data/stdlib/objspace/0/objspace.rbs +31 -14
  142. data/stdlib/openssl/0/openssl.rbs +11 -7
  143. data/stdlib/optparse/0/optparse.rbs +20 -17
  144. data/stdlib/pathname/0/pathname.rbs +21 -4
  145. data/stdlib/pstore/0/pstore.rbs +378 -154
  146. data/stdlib/pty/0/pty.rbs +24 -8
  147. data/stdlib/ripper/0/ripper.rbs +1650 -0
  148. data/stdlib/socket/0/addrinfo.rbs +9 -15
  149. data/stdlib/socket/0/socket.rbs +36 -3
  150. data/stdlib/strscan/0/string_scanner.rbs +7 -5
  151. data/stdlib/tempfile/0/tempfile.rbs +104 -44
  152. data/stdlib/time/0/time.rbs +2 -2
  153. data/stdlib/uri/0/file.rbs +5 -0
  154. data/stdlib/uri/0/generic.rbs +2 -2
  155. data/stdlib/yaml/0/yaml.rbs +2 -2
  156. data/stdlib/zlib/0/zlib.rbs +1 -1
  157. metadata +13 -13
  158. data/core/deprecated.rbs +0 -9
  159. data/lib/rbs/constant_table.rb +0 -167
  160. data/lib/rbs/type_name_resolver.rb +0 -67
  161. data/sig/constant_table.rbs +0 -30
  162. data/sig/shims/ripper.rbs +0 -8
  163. data/sig/type_name_resolver.rbs +0 -26
  164. data/steep/Gemfile +0 -3
  165. data/steep/Gemfile.lock +0 -61
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a07433a652ee9bdc6b90162eb974d289fafabed916044ffa8e83b78063b8c0b
4
- data.tar.gz: 1339eae3040ab4714dd241497bbc20d643ae5eaef62b03a02138806ecf4737c5
3
+ metadata.gz: 3311021fa8dd522c500cc5c388590108f4fd0ebf6d6c5c37afc522f37b49d579
4
+ data.tar.gz: 832f3b9d95b142a2bb95fe14f5e1bb7919dc441cab94b67458d48411d8dc325f
5
5
  SHA512:
6
- metadata.gz: 8b414da0d750aefbfdaadcd0a309d2ee4157969112f6806149597fd402b4ca43aaae5cbf162e14f7bfe0a21e3369fad2b94a54f5d3610e15362afd2bd9d83d8f
7
- data.tar.gz: 884514e8cf52edbd3e17b6c214cd113b58a6107b4a00f73f826d471521d883997a3bee6c3f0c3e7a2770e23468e6a964878504f1a5cf7de9a6ab2d5ec66fbb4e
6
+ metadata.gz: 362ea45210850eddd3fd5eff4b5ba5970a3d736a6c3ef2c86d85ec47d94174649e032e179fc81d486d45df6ae67c1ab9b90bbe1baecae1e4ecb307ea7cc9fc13
7
+ data.tar.gz: 118e7afe25837dd3b4d0d0324c5162f35cf1fd973365b5c0b1a009a4b422a584a3db274d38118038ec86fff7f55cfa95703a2214f06d0b8d72f417d2126dfbaf
@@ -5,12 +5,13 @@ on:
5
5
  branches:
6
6
  - master
7
7
  pull_request: {}
8
+ merge_group: {}
8
9
 
9
10
  jobs:
10
11
  test:
11
12
  runs-on: "ubuntu-latest"
12
13
  container:
13
- image: rubylang/ruby:3.1-dev-focal
14
+ image: rubylang/ruby:3.2-dev-focal
14
15
  steps:
15
16
  - uses: actions/checkout@v3
16
17
  - name: Install dependencies
@@ -5,9 +5,7 @@ on:
5
5
  branches:
6
6
  - master
7
7
  pull_request: {}
8
-
9
- env:
10
- LANG: 'C.UTF-8'
8
+ merge_group: {}
11
9
 
12
10
  jobs:
13
11
  test:
@@ -16,6 +14,7 @@ jobs:
16
14
  matrix:
17
15
  container_tag:
18
16
  - master-nightly-focal
17
+ - 3.2-dev-focal
19
18
  - 3.1-dev-focal
20
19
  - 3.0-dev-focal
21
20
  - 2.7-dev-bionic
@@ -35,6 +34,8 @@ jobs:
35
34
  job: stdlib_test
36
35
  - container_tag: 3.0-dev-focal
37
36
  job: stdlib_test
37
+ - container_tag: 3.1-dev-focal
38
+ job: stdlib_test
38
39
  container:
39
40
  image: rubylang/ruby:${{ matrix.container_tag }}
40
41
  steps:
data/CHANGELOG.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 2.8.4 (2023-01-20)
6
+
7
+ ### Miscellaneous
8
+
9
+ * Make `rake stdlib_test` run with single process (Backport [#1207](https://github.com/ruby/rbs/pull/1207), [#1211](https://github.com/ruby/rbs/pull/1211))
10
+ * Remove `steep/*` files from `.gem` (Backport [#1214](https://github.com/ruby/rbs/pull/1214), [#1216](https://github.com/ruby/rbs/pull/1216))
11
+
12
+ ## 2.8.3 (2023-01-06)
13
+
14
+ ### Library changes
15
+
16
+ * Use `-std=gnu99` instead of `-std=c99` (Backport [#973](https://github.com/ruby/rbs/pull/973))
17
+ * Add `rbs_` prefix to `skip` function (Backport [#1186](https://github.com/ruby/rbs/pull/1186))
18
+
19
+ ## 2.8.2 (2022-12-21)
20
+
21
+ ### Signature updates
22
+
23
+ * `YAML.load` ([#1170](https://github.com/ruby/rbs/pull/1170))
24
+
25
+ ### Library changes
26
+
27
+ * Add the methods of the `prepend`ed module itself ([#1182](https://github.com/ruby/rbs/pull/1182))
28
+
29
+ ### Miscellaneous
30
+
31
+ * Add `TestSkip` module to skip tests that fails in ruby CI ([#1167](https://github.com/ruby/rbs/pull/1167))
32
+
5
33
  ## 2.8.1 (2022-11-28)
6
34
 
7
35
  ### Signature updates
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rbs (3.0.0.dev.1)
4
+ rbs (3.0.0.dev.3)
5
5
 
6
6
  PATH
7
7
  remote: test/assets/test-gem
@@ -17,7 +17,7 @@ GEM
17
17
  dbm (1.1.0)
18
18
  debase (0.2.5.beta2)
19
19
  debase-ruby_core_source (>= 0.10.12)
20
- debase-ruby_core_source (0.10.16)
20
+ debase-ruby_core_source (3.2.0)
21
21
  diff-lcs (1.5.0)
22
22
  digest (3.1.1)
23
23
  forwardable (1.3.2)
@@ -32,7 +32,7 @@ GEM
32
32
  marcel (1.0.2)
33
33
  minitest (5.17.0)
34
34
  parallel (1.22.1)
35
- parser (3.1.3.0)
35
+ parser (3.2.1.0)
36
36
  ast (~> 2.4.1)
37
37
  power_assert (2.0.2)
38
38
  prime (0.1.2)
@@ -47,7 +47,7 @@ GEM
47
47
  rake
48
48
  rdoc (6.4.0)
49
49
  psych (>= 4.0.0)
50
- regexp_parser (2.6.1)
50
+ regexp_parser (2.7.0)
51
51
  rexml (3.2.5)
52
52
  rspec (3.12.0)
53
53
  rspec-core (~> 3.12.0)
@@ -62,18 +62,18 @@ GEM
62
62
  diff-lcs (>= 1.2.0, < 2.0)
63
63
  rspec-support (~> 3.12.0)
64
64
  rspec-support (3.12.0)
65
- rubocop (1.40.0)
65
+ rubocop (1.45.1)
66
66
  json (~> 2.3)
67
67
  parallel (~> 1.10)
68
- parser (>= 3.1.2.1)
68
+ parser (>= 3.2.0.0)
69
69
  rainbow (>= 2.2.2, < 4.0)
70
70
  regexp_parser (>= 1.8, < 3.0)
71
71
  rexml (>= 3.2.5, < 4.0)
72
- rubocop-ast (>= 1.23.0, < 2.0)
72
+ rubocop-ast (>= 1.24.1, < 2.0)
73
73
  ruby-progressbar (~> 1.7)
74
- unicode-display_width (>= 1.4.0, < 3.0)
75
- rubocop-ast (1.24.0)
76
- parser (>= 3.1.1.0)
74
+ unicode-display_width (>= 2.4.0, < 3.0)
75
+ rubocop-ast (1.26.0)
76
+ parser (>= 3.2.1.0)
77
77
  rubocop-rubycw (0.1.6)
78
78
  rubocop (~> 1.0)
79
79
  ruby-debug-ide (0.7.3)
@@ -86,7 +86,7 @@ GEM
86
86
  tempfile (0.1.3)
87
87
  test-unit (3.5.7)
88
88
  power_assert
89
- unicode-display_width (2.3.0)
89
+ unicode-display_width (2.4.2)
90
90
 
91
91
  PLATFORMS
92
92
  ruby
@@ -115,4 +115,4 @@ DEPENDENCIES
115
115
  test-unit
116
116
 
117
117
  BUNDLED WITH
118
- 2.3.14
118
+ 2.4.6
data/README.md CHANGED
@@ -131,6 +131,7 @@ puts singleton.methods[:gsub]
131
131
  - [Writing signatures guide](docs/sigs.md)
132
132
  - [Stdlib signatures guide](docs/stdlib.md)
133
133
  - [Syntax](docs/syntax.md)
134
+ - [RBS by Example](docs/rbs_by_example.md)
134
135
 
135
136
  ## Development
136
137
 
data/Rakefile CHANGED
@@ -69,7 +69,15 @@ FileList["test/stdlib/**/*_test.rb"].each do |test|
69
69
  task test => :compile do
70
70
  sh "#{ruby} -Ilib #{bin}/test_runner.rb #{test}"
71
71
  end
72
- task stdlib_test: test
72
+ end
73
+
74
+ task :stdlib_test do
75
+ test_files = FileList["test/stdlib/**/*_test.rb"].reject do |path|
76
+ path =~ %r{Ractor}
77
+ end
78
+ sh "#{ruby} -Ilib #{bin}/test_runner.rb #{test_files.join(' ')}"
79
+ # TODO: Ractor tests need to be run in a separate process
80
+ sh "#{ruby} -Ilib #{bin}/test_runner.rb test/stdlib/Ractor_test.rb"
73
81
  end
74
82
 
75
83
  task :rubocop do
@@ -135,7 +143,7 @@ namespace :generate do
135
143
  class <%= target %>SingletonTest < Test::Unit::TestCase
136
144
  include TypeAssertions
137
145
 
138
- # library "pathname", "set", "securerandom" # Declare library signatures to load
146
+ # library "pathname", "securerandom" # Declare library signatures to load
139
147
  testing "singleton(::<%= target %>)"
140
148
 
141
149
  <%- class_methods.each do |method_name, definition| %>
@@ -153,7 +161,7 @@ namespace :generate do
153
161
  class <%= target %>Test < Test::Unit::TestCase
154
162
  include TypeAssertions
155
163
 
156
- # library "pathname", "set", "securerandom" # Declare library signatures to load
164
+ # library "pathname", "securerandom" # Declare library signatures to load
157
165
  testing "::<%= target %>"
158
166
 
159
167
  <%- instance_methods.each do |method_name, definition| %>
@@ -225,3 +233,69 @@ task :test_generate_stdlib do
225
233
  sh "RBS_GENERATE_TEST_PATH=/tmp/Thread_Mutex_test.rb rake 'generate:stdlib_test[Thread::Mutex]'"
226
234
  sh "ruby -c /tmp/Thread_Mutex_test.rb"
227
235
  end
236
+
237
+ Rake::Task[:release].enhance do
238
+ Rake::Task[:"release:note"].invoke
239
+ end
240
+
241
+ namespace :release do
242
+ desc "Explain the post-release steps automatically"
243
+ task :note do
244
+ version = Gem::Version.new(RBS::VERSION)
245
+ major, minor, patch, *_ = RBS::VERSION.split(".")
246
+ major = major.to_i
247
+ minor = minor.to_i
248
+ patch = patch.to_i
249
+
250
+ puts "🎉🎉🎉🎉 Congratulations for **#{version}** release! 🎉🎉🎉🎉"
251
+ puts
252
+ puts "There are a few things left to complete the release. 💪"
253
+ puts
254
+
255
+ if patch == 0 || version.prerelease?
256
+ puts "* [ ] Update release note: https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor}"
257
+ end
258
+
259
+ if patch == 0 && !version.prerelease?
260
+ puts "* [ ] Delete `RBS XYZ is the latest version of...` from release note: https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor}"
261
+ end
262
+
263
+ puts "* [ ] Publish a release at GitHub"
264
+ puts "* [ ] Make some announcements on Twitter/Mustdon/Slack/???"
265
+
266
+ puts
267
+ puts
268
+
269
+ puts "✏️ Making a draft release on GitHub..."
270
+
271
+ content = File.read(File.join(__dir__, "CHANGELOG.md"))
272
+ changelog = content.scan(/^## \d.*?(?=^## \d)/m)[0]
273
+ changelog = changelog.sub(/^.*\n^.*\n/, "").rstrip
274
+
275
+ notes = <<NOTES
276
+ [Release note](https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor})
277
+
278
+ #{changelog}
279
+ NOTES
280
+
281
+ command = [
282
+ "gh",
283
+ "release",
284
+ "create",
285
+ "--draft",
286
+ "v#{RBS::VERSION}",
287
+ "--title=#{RBS::VERSION}",
288
+ "--notes=#{notes}"
289
+ ]
290
+
291
+ if version.prerelease?
292
+ command << "--prerelease"
293
+ end
294
+
295
+ require "open3"
296
+ output, status = Open3.capture2(*command)
297
+ if status.success?
298
+ puts " >> Done! Open #{output.chomp} and publish the release!"
299
+ end
300
+ end
301
+ end
data/Steepfile CHANGED
@@ -9,7 +9,7 @@ target :lib do
9
9
  "lib/rbs/test.rb"
10
10
  )
11
11
 
12
- library "set", "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest'
12
+ library "set", "pathname", "json", "logger", "monitor", "tsort", "uri", 'dbm', 'pstore', 'singleton', 'shellwords', 'fileutils', 'find', 'digest', 'ripper'
13
13
  signature 'stdlib/yaml/0'
14
14
  signature "stdlib/strscan/0/"
15
15
  signature "stdlib/optparse/0/"