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

Sign up to get free protection for your applications and to get access to all the features.
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/"