rbs 4.0.0.dev.4 → 4.0.0

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 (281) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +14 -14
  3. data/.github/workflows/bundle-update.yml +60 -0
  4. data/.github/workflows/c-check.yml +18 -11
  5. data/.github/workflows/comments.yml +5 -3
  6. data/.github/workflows/dependabot.yml +2 -2
  7. data/.github/workflows/ruby.yml +27 -34
  8. data/.github/workflows/rust.yml +95 -0
  9. data/.github/workflows/typecheck.yml +2 -2
  10. data/.github/workflows/windows.yml +2 -2
  11. data/.rubocop.yml +1 -1
  12. data/CHANGELOG.md +323 -0
  13. data/README.md +1 -1
  14. data/Rakefile +43 -33
  15. data/Steepfile +1 -0
  16. data/config.yml +426 -24
  17. data/core/array.rbs +307 -227
  18. data/core/basic_object.rbs +9 -8
  19. data/core/binding.rbs +0 -2
  20. data/core/builtin.rbs +2 -2
  21. data/core/class.rbs +6 -5
  22. data/core/comparable.rbs +55 -34
  23. data/core/complex.rbs +104 -78
  24. data/core/dir.rbs +61 -49
  25. data/core/encoding.rbs +12 -15
  26. data/core/enumerable.rbs +179 -87
  27. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  28. data/core/enumerator.rbs +65 -2
  29. data/core/errno.rbs +11 -2
  30. data/core/errors.rbs +58 -29
  31. data/core/exception.rbs +13 -13
  32. data/core/fiber.rbs +74 -54
  33. data/core/file.rbs +280 -177
  34. data/core/file_test.rbs +3 -3
  35. data/core/float.rbs +257 -92
  36. data/core/gc.rbs +425 -281
  37. data/core/hash.rbs +1045 -739
  38. data/core/integer.rbs +135 -137
  39. data/core/io/buffer.rbs +53 -42
  40. data/core/io/wait.rbs +13 -35
  41. data/core/io.rbs +192 -144
  42. data/core/kernel.rbs +216 -155
  43. data/core/marshal.rbs +4 -4
  44. data/core/match_data.rbs +15 -13
  45. data/core/math.rbs +107 -66
  46. data/core/method.rbs +69 -33
  47. data/core/module.rbs +244 -106
  48. data/core/nil_class.rbs +7 -6
  49. data/core/numeric.rbs +74 -63
  50. data/core/object.rbs +9 -11
  51. data/core/object_space.rbs +30 -23
  52. data/core/pathname.rbs +1322 -0
  53. data/core/proc.rbs +95 -58
  54. data/core/process.rbs +222 -202
  55. data/core/ractor.rbs +371 -515
  56. data/core/random.rbs +21 -3
  57. data/core/range.rbs +159 -57
  58. data/core/rational.rbs +60 -89
  59. data/core/rbs/unnamed/argf.rbs +60 -53
  60. data/core/rbs/unnamed/env_class.rbs +19 -14
  61. data/core/rbs/unnamed/main_class.rbs +123 -0
  62. data/core/rbs/unnamed/random.rbs +11 -118
  63. data/core/regexp.rbs +258 -214
  64. data/core/ruby.rbs +53 -0
  65. data/core/ruby_vm.rbs +38 -34
  66. data/core/rubygems/config_file.rbs +5 -5
  67. data/core/rubygems/errors.rbs +4 -71
  68. data/core/rubygems/requirement.rbs +5 -5
  69. data/core/rubygems/rubygems.rbs +16 -82
  70. data/core/rubygems/version.rbs +2 -3
  71. data/core/set.rbs +490 -360
  72. data/core/signal.rbs +26 -16
  73. data/core/string.rbs +3234 -1285
  74. data/core/struct.rbs +27 -26
  75. data/core/symbol.rbs +41 -34
  76. data/core/thread.rbs +135 -67
  77. data/core/time.rbs +81 -50
  78. data/core/trace_point.rbs +41 -35
  79. data/core/true_class.rbs +2 -2
  80. data/core/unbound_method.rbs +24 -16
  81. data/core/warning.rbs +7 -7
  82. data/docs/aliases.md +79 -0
  83. data/docs/collection.md +3 -3
  84. data/docs/config.md +171 -0
  85. data/docs/encoding.md +56 -0
  86. data/docs/gem.md +0 -1
  87. data/docs/inline.md +576 -0
  88. data/docs/sigs.md +3 -3
  89. data/docs/syntax.md +46 -16
  90. data/docs/type_fingerprint.md +21 -0
  91. data/exe/rbs +1 -1
  92. data/ext/rbs_extension/ast_translation.c +544 -116
  93. data/ext/rbs_extension/ast_translation.h +3 -0
  94. data/ext/rbs_extension/class_constants.c +16 -2
  95. data/ext/rbs_extension/class_constants.h +8 -0
  96. data/ext/rbs_extension/extconf.rb +5 -1
  97. data/ext/rbs_extension/legacy_location.c +33 -56
  98. data/ext/rbs_extension/legacy_location.h +37 -0
  99. data/ext/rbs_extension/main.c +44 -35
  100. data/include/rbs/ast.h +448 -173
  101. data/include/rbs/defines.h +27 -0
  102. data/include/rbs/lexer.h +30 -11
  103. data/include/rbs/location.h +25 -44
  104. data/include/rbs/parser.h +6 -6
  105. data/include/rbs/string.h +0 -2
  106. data/include/rbs/util/rbs_allocator.h +34 -13
  107. data/include/rbs/util/rbs_assert.h +12 -1
  108. data/include/rbs/util/rbs_constant_pool.h +0 -3
  109. data/include/rbs/util/rbs_encoding.h +2 -0
  110. data/include/rbs/util/rbs_unescape.h +2 -1
  111. data/include/rbs.h +8 -0
  112. data/lib/rbs/ast/annotation.rb +1 -1
  113. data/lib/rbs/ast/comment.rb +1 -1
  114. data/lib/rbs/ast/declarations.rb +10 -10
  115. data/lib/rbs/ast/members.rb +14 -14
  116. data/lib/rbs/ast/ruby/annotations.rb +293 -3
  117. data/lib/rbs/ast/ruby/comment_block.rb +24 -0
  118. data/lib/rbs/ast/ruby/declarations.rb +198 -3
  119. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
  120. data/lib/rbs/ast/ruby/members.rb +532 -22
  121. data/lib/rbs/ast/type_param.rb +24 -4
  122. data/lib/rbs/buffer.rb +20 -15
  123. data/lib/rbs/cli/diff.rb +16 -15
  124. data/lib/rbs/cli/validate.rb +38 -106
  125. data/lib/rbs/cli.rb +52 -19
  126. data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
  127. data/lib/rbs/collection/sources/git.rb +1 -0
  128. data/lib/rbs/definition.rb +1 -1
  129. data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
  130. data/lib/rbs/definition_builder/method_builder.rb +20 -0
  131. data/lib/rbs/definition_builder.rb +147 -25
  132. data/lib/rbs/diff.rb +7 -1
  133. data/lib/rbs/environment.rb +227 -74
  134. data/lib/rbs/environment_loader.rb +0 -6
  135. data/lib/rbs/errors.rb +27 -18
  136. data/lib/rbs/inline_parser.rb +342 -6
  137. data/lib/rbs/location_aux.rb +1 -1
  138. data/lib/rbs/locator.rb +5 -1
  139. data/lib/rbs/method_type.rb +5 -3
  140. data/lib/rbs/parser_aux.rb +20 -7
  141. data/lib/rbs/prototype/helpers.rb +57 -0
  142. data/lib/rbs/prototype/rb.rb +3 -28
  143. data/lib/rbs/prototype/rbi.rb +3 -20
  144. data/lib/rbs/prototype/runtime.rb +8 -0
  145. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  146. data/lib/rbs/resolver/type_name_resolver.rb +116 -38
  147. data/lib/rbs/subtractor.rb +3 -1
  148. data/lib/rbs/test/type_check.rb +19 -2
  149. data/lib/rbs/type_name.rb +1 -1
  150. data/lib/rbs/types.rb +88 -78
  151. data/lib/rbs/unit_test/type_assertions.rb +35 -8
  152. data/lib/rbs/validator.rb +2 -2
  153. data/lib/rbs/version.rb +1 -1
  154. data/lib/rbs.rb +1 -2
  155. data/lib/rdoc/discover.rb +1 -1
  156. data/lib/rdoc_plugin/parser.rb +1 -1
  157. data/rbs.gemspec +4 -3
  158. data/rust/.gitignore +1 -0
  159. data/rust/Cargo.lock +378 -0
  160. data/rust/Cargo.toml +7 -0
  161. data/rust/ruby-rbs/Cargo.toml +22 -0
  162. data/rust/ruby-rbs/build.rs +764 -0
  163. data/rust/ruby-rbs/examples/locations.rs +60 -0
  164. data/rust/ruby-rbs/src/lib.rs +1 -0
  165. data/rust/ruby-rbs/src/node/mod.rs +742 -0
  166. data/rust/ruby-rbs/tests/sanity.rs +47 -0
  167. data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
  168. data/rust/ruby-rbs-sys/Cargo.toml +23 -0
  169. data/rust/ruby-rbs-sys/build.rs +204 -0
  170. data/rust/ruby-rbs-sys/src/lib.rs +50 -0
  171. data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
  172. data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
  173. data/rust/ruby-rbs-sys/wrapper.h +1 -0
  174. data/schema/typeParam.json +17 -1
  175. data/sig/ast/ruby/annotations.rbs +315 -4
  176. data/sig/ast/ruby/comment_block.rbs +8 -0
  177. data/sig/ast/ruby/declarations.rbs +102 -4
  178. data/sig/ast/ruby/members.rbs +108 -2
  179. data/sig/cli/diff.rbs +5 -11
  180. data/sig/cli/validate.rbs +12 -8
  181. data/sig/cli.rbs +18 -18
  182. data/sig/definition.rbs +6 -1
  183. data/sig/definition_builder.rbs +2 -0
  184. data/sig/environment.rbs +70 -12
  185. data/sig/errors.rbs +13 -14
  186. data/sig/inline_parser.rbs +39 -2
  187. data/sig/locator.rbs +0 -2
  188. data/sig/manifest.yaml +0 -1
  189. data/sig/method_builder.rbs +3 -1
  190. data/sig/parser.rbs +31 -13
  191. data/sig/prototype/helpers.rbs +2 -0
  192. data/sig/resolver/type_name_resolver.rbs +35 -7
  193. data/sig/source.rbs +3 -3
  194. data/sig/type_param.rbs +13 -8
  195. data/sig/types.rbs +6 -7
  196. data/sig/unit_test/spy.rbs +0 -8
  197. data/sig/unit_test/type_assertions.rbs +11 -0
  198. data/src/ast.c +410 -153
  199. data/src/lexer.c +1392 -1313
  200. data/src/lexer.re +3 -0
  201. data/src/lexstate.c +58 -37
  202. data/src/location.c +8 -48
  203. data/src/parser.c +977 -516
  204. data/src/string.c +0 -48
  205. data/src/util/rbs_allocator.c +89 -71
  206. data/src/util/rbs_assert.c +1 -1
  207. data/src/util/rbs_buffer.c +2 -2
  208. data/src/util/rbs_constant_pool.c +10 -14
  209. data/src/util/rbs_encoding.c +4 -8
  210. data/src/util/rbs_unescape.c +56 -20
  211. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  212. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  213. data/stdlib/cgi/0/core.rbs +9 -393
  214. data/stdlib/cgi/0/manifest.yaml +1 -0
  215. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  216. data/stdlib/coverage/0/coverage.rbs +7 -4
  217. data/stdlib/date/0/date.rbs +92 -79
  218. data/stdlib/date/0/date_time.rbs +25 -24
  219. data/stdlib/delegate/0/delegator.rbs +10 -7
  220. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  221. data/stdlib/digest/0/digest.rbs +110 -0
  222. data/stdlib/erb/0/erb.rbs +748 -347
  223. data/stdlib/etc/0/etc.rbs +55 -50
  224. data/stdlib/fileutils/0/fileutils.rbs +158 -139
  225. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  226. data/stdlib/io-console/0/io-console.rbs +2 -2
  227. data/stdlib/json/0/json.rbs +217 -136
  228. data/stdlib/monitor/0/monitor.rbs +3 -3
  229. data/stdlib/net-http/0/net-http.rbs +162 -134
  230. data/stdlib/objspace/0/objspace.rbs +17 -34
  231. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  232. data/stdlib/open3/0/open3.rbs +469 -10
  233. data/stdlib/openssl/0/openssl.rbs +475 -357
  234. data/stdlib/optparse/0/optparse.rbs +26 -17
  235. data/stdlib/pathname/0/pathname.rbs +11 -1381
  236. data/stdlib/pp/0/pp.rbs +9 -8
  237. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  238. data/stdlib/pstore/0/pstore.rbs +35 -30
  239. data/stdlib/psych/0/psych.rbs +65 -12
  240. data/stdlib/psych/0/store.rbs +2 -4
  241. data/stdlib/pty/0/pty.rbs +9 -6
  242. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  243. data/stdlib/rdoc/0/code_object.rbs +2 -1
  244. data/stdlib/rdoc/0/parser.rbs +1 -1
  245. data/stdlib/rdoc/0/rdoc.rbs +1 -1
  246. data/stdlib/rdoc/0/store.rbs +1 -1
  247. data/stdlib/resolv/0/resolv.rbs +25 -68
  248. data/stdlib/ripper/0/ripper.rbs +22 -19
  249. data/stdlib/securerandom/0/manifest.yaml +2 -0
  250. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  251. data/stdlib/shellwords/0/shellwords.rbs +2 -2
  252. data/stdlib/singleton/0/singleton.rbs +3 -0
  253. data/stdlib/socket/0/addrinfo.rbs +7 -7
  254. data/stdlib/socket/0/basic_socket.rbs +3 -3
  255. data/stdlib/socket/0/ip_socket.rbs +10 -8
  256. data/stdlib/socket/0/socket.rbs +23 -10
  257. data/stdlib/socket/0/tcp_server.rbs +1 -1
  258. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  259. data/stdlib/socket/0/udp_socket.rbs +1 -1
  260. data/stdlib/socket/0/unix_server.rbs +1 -1
  261. data/stdlib/stringio/0/stringio.rbs +1177 -85
  262. data/stdlib/strscan/0/string_scanner.rbs +27 -25
  263. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  264. data/stdlib/time/0/time.rbs +8 -6
  265. data/stdlib/timeout/0/timeout.rbs +63 -7
  266. data/stdlib/tsort/0/cyclic.rbs +3 -0
  267. data/stdlib/tsort/0/tsort.rbs +7 -6
  268. data/stdlib/uri/0/common.rbs +42 -20
  269. data/stdlib/uri/0/file.rbs +3 -3
  270. data/stdlib/uri/0/generic.rbs +26 -18
  271. data/stdlib/uri/0/http.rbs +2 -2
  272. data/stdlib/uri/0/ldap.rbs +2 -2
  273. data/stdlib/uri/0/mailto.rbs +3 -3
  274. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  275. data/stdlib/zlib/0/deflate.rbs +4 -3
  276. data/stdlib/zlib/0/gzip_reader.rbs +6 -6
  277. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  278. data/stdlib/zlib/0/inflate.rbs +1 -1
  279. data/stdlib/zlib/0/need_dict.rbs +1 -1
  280. data/stdlib/zlib/0/zstream.rbs +1 -0
  281. metadata +50 -6
@@ -192,6 +192,31 @@ module RBS
192
192
  end
193
193
  end
194
194
 
195
+ ruby2_keywords def assert_send_type_error(method_type, error_type, receiver, method, *args, &block)
196
+ send_setup(method_type, receiver, method, args, block) do |method_type, trace, result, exception|
197
+ typecheck = RBS::Test::TypeCheck.new(
198
+ self_class: receiver.class,
199
+ builder: builder,
200
+ sample_size: 100,
201
+ unchecked_classes: [],
202
+ instance_class: instance_class,
203
+ class_class: class_class
204
+ )
205
+ errors = typecheck.method_call(method, method_type, trace, errors: [])
206
+
207
+ assert_empty errors.map {|x| RBS::Test::Errors.to_string(x) }, "Call trace does not match with given method type: #{trace.inspect}"
208
+
209
+ method_defs = method_defs(method)
210
+ all_errors = method_defs.map {|t| typecheck.method_call(method, t.type, trace, errors: [], annotations: t.each_annotation.to_a) }
211
+ assert all_errors.any? {|es| es.empty? }, "Call trace does not match one of method definitions:\n #{trace.inspect}\n #{method_defs.map(&:type).join(" | ")}"
212
+
213
+ # Use `instnace_of?` instead of `is_a?` as we want to check for _the exact exception class_.
214
+ assert exception.instance_of? error_type
215
+
216
+ result
217
+ end
218
+ end
219
+
195
220
  ruby2_keywords def refute_send_type(method_type, receiver, method, *args, &block)
196
221
  send_setup(method_type, receiver, method, args, block) do |method_type, trace, result, exception|
197
222
  method_type = method_type.update(
@@ -231,15 +256,17 @@ module RBS
231
256
  type, definition = target
232
257
 
233
258
  case type
234
- when Types::ClassInstance
235
- subst = RBS::Substitution.build(definition.type_params, type.args)
236
- definition.methods[method].defs.map do |type_def|
237
- type_def.update(
238
- type: type_def.type.sub(subst)
239
- )
259
+ when Types::ClassInstance, Types::ClassSingleton
260
+ if type.is_a?(Types::ClassSingleton) && type.args.empty?
261
+ definition.methods[method].defs
262
+ else
263
+ subst = RBS::Substitution.build(definition.type_params, type.args)
264
+ definition.methods[method].defs.map do |type_def|
265
+ type_def.update(
266
+ type: type_def.type.sub(subst)
267
+ )
268
+ end
240
269
  end
241
- when Types::ClassSingleton
242
- definition.methods[method].defs
243
270
  else
244
271
  raise
245
272
  end
data/lib/rbs/validator.rb CHANGED
@@ -127,8 +127,8 @@ module RBS
127
127
  # @type var each_child: ^(Symbol) { (Symbol) -> void } -> void
128
128
  each_child = -> (name, &block) do
129
129
  if param = params.find {|p| p.name == name }
130
- if b = param.upper_bound_type
131
- b.free_variables.each do |tv|
130
+ [param.upper_bound_type, param.lower_bound_type].compact.each do |bound|
131
+ bound.free_variables.each do |tv|
132
132
  block[tv]
133
133
  end
134
134
  end
data/lib/rbs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RBS
4
- VERSION = "4.0.0.dev.4"
4
+ VERSION = "4.0.0"
5
5
  end
data/lib/rbs.rb CHANGED
@@ -4,9 +4,8 @@ require "rbs/version"
4
4
 
5
5
  require "set"
6
6
  require "json"
7
- require "pathname"
7
+ require "pathname" unless defined?(Pathname)
8
8
  require "pp"
9
- require "ripper"
10
9
  require "logger"
11
10
  require "tsort"
12
11
  require "strscan"
data/lib/rdoc/discover.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  begin
4
- gem 'rdoc', '~> 6.13'
4
+ gem 'rdoc', '>= 6.16'
5
5
  require 'rdoc_plugin/parser'
6
6
  module RDoc
7
7
  class Parser
@@ -76,7 +76,7 @@ module RBS
76
76
  method.visibility = decl.visibility
77
77
  method.call_seq = decl.overloads.map {|overload| "#{decl.name.to_s}#{overload.method_type.to_s}" }.join("\n")
78
78
  if loc = decl.location
79
- method.start_collecting_tokens
79
+ method.start_collecting_tokens(:ruby)
80
80
  method.add_token({ line_no: 1, char_no: 1, kind: :on_comment, text: "# File #{@top_level.relative_name}, line(s) #{loc.start_line}:#{loc.end_line}\n" })
81
81
  method.add_token({ line_no: 1, char_no: 1, text: loc.source })
82
82
  method.line = loc.start_line
data/rbs.gemspec CHANGED
@@ -38,13 +38,14 @@ Gem::Specification.new do |spec|
38
38
  spec.extensions = %w{ext/rbs_extension/extconf.rb}
39
39
 
40
40
  if false
41
- spec.required_ruby_version = ">= 3.3"
41
+ spec.required_ruby_version = ">= 3.4"
42
42
  end
43
43
 
44
44
  spec.bindir = "exe"
45
45
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
46
46
  spec.require_paths = ["lib"]
47
- spec.required_ruby_version = ">= 3.1"
47
+ spec.required_ruby_version = ">= 3.2"
48
48
  spec.add_dependency "logger"
49
- spec.add_dependency "prism", ">= 1.3.0"
49
+ spec.add_dependency "prism", ">= 1.6.0"
50
+ spec.add_dependency "tsort"
50
51
  end
data/rust/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /target/
data/rust/Cargo.lock ADDED
@@ -0,0 +1,378 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "aho-corasick"
7
+ version = "1.1.3"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
10
+ dependencies = [
11
+ "memchr",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "bindgen"
16
+ version = "0.72.0"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f"
19
+ dependencies = [
20
+ "bitflags",
21
+ "cexpr",
22
+ "clang-sys",
23
+ "itertools",
24
+ "log",
25
+ "prettyplease",
26
+ "proc-macro2",
27
+ "quote",
28
+ "regex",
29
+ "rustc-hash",
30
+ "shlex",
31
+ "syn",
32
+ ]
33
+
34
+ [[package]]
35
+ name = "bitflags"
36
+ version = "2.9.1"
37
+ source = "registry+https://github.com/rust-lang/crates.io-index"
38
+ checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
39
+
40
+ [[package]]
41
+ name = "cc"
42
+ version = "1.2.29"
43
+ source = "registry+https://github.com/rust-lang/crates.io-index"
44
+ checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362"
45
+ dependencies = [
46
+ "shlex",
47
+ ]
48
+
49
+ [[package]]
50
+ name = "cexpr"
51
+ version = "0.6.0"
52
+ source = "registry+https://github.com/rust-lang/crates.io-index"
53
+ checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
54
+ dependencies = [
55
+ "nom",
56
+ ]
57
+
58
+ [[package]]
59
+ name = "cfg-if"
60
+ version = "1.0.1"
61
+ source = "registry+https://github.com/rust-lang/crates.io-index"
62
+ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
63
+
64
+ [[package]]
65
+ name = "clang-sys"
66
+ version = "1.8.1"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
69
+ dependencies = [
70
+ "glob",
71
+ "libc",
72
+ "libloading",
73
+ ]
74
+
75
+ [[package]]
76
+ name = "either"
77
+ version = "1.15.0"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
80
+
81
+ [[package]]
82
+ name = "equivalent"
83
+ version = "1.0.2"
84
+ source = "registry+https://github.com/rust-lang/crates.io-index"
85
+ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
86
+
87
+ [[package]]
88
+ name = "glob"
89
+ version = "0.3.2"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
92
+
93
+ [[package]]
94
+ name = "hashbrown"
95
+ version = "0.15.5"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
98
+
99
+ [[package]]
100
+ name = "indexmap"
101
+ version = "2.10.0"
102
+ source = "registry+https://github.com/rust-lang/crates.io-index"
103
+ checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
104
+ dependencies = [
105
+ "equivalent",
106
+ "hashbrown",
107
+ ]
108
+
109
+ [[package]]
110
+ name = "itertools"
111
+ version = "0.13.0"
112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
113
+ checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
114
+ dependencies = [
115
+ "either",
116
+ ]
117
+
118
+ [[package]]
119
+ name = "itoa"
120
+ version = "1.0.15"
121
+ source = "registry+https://github.com/rust-lang/crates.io-index"
122
+ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
123
+
124
+ [[package]]
125
+ name = "libc"
126
+ version = "0.2.174"
127
+ source = "registry+https://github.com/rust-lang/crates.io-index"
128
+ checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
129
+
130
+ [[package]]
131
+ name = "libloading"
132
+ version = "0.8.8"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
135
+ dependencies = [
136
+ "cfg-if",
137
+ "windows-targets",
138
+ ]
139
+
140
+ [[package]]
141
+ name = "log"
142
+ version = "0.4.27"
143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
144
+ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
145
+
146
+ [[package]]
147
+ name = "memchr"
148
+ version = "2.7.5"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
151
+
152
+ [[package]]
153
+ name = "minimal-lexical"
154
+ version = "0.2.1"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
157
+
158
+ [[package]]
159
+ name = "nom"
160
+ version = "7.1.3"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
163
+ dependencies = [
164
+ "memchr",
165
+ "minimal-lexical",
166
+ ]
167
+
168
+ [[package]]
169
+ name = "prettyplease"
170
+ version = "0.2.35"
171
+ source = "registry+https://github.com/rust-lang/crates.io-index"
172
+ checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a"
173
+ dependencies = [
174
+ "proc-macro2",
175
+ "syn",
176
+ ]
177
+
178
+ [[package]]
179
+ name = "proc-macro2"
180
+ version = "1.0.95"
181
+ source = "registry+https://github.com/rust-lang/crates.io-index"
182
+ checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
183
+ dependencies = [
184
+ "unicode-ident",
185
+ ]
186
+
187
+ [[package]]
188
+ name = "quote"
189
+ version = "1.0.40"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
192
+ dependencies = [
193
+ "proc-macro2",
194
+ ]
195
+
196
+ [[package]]
197
+ name = "regex"
198
+ version = "1.11.1"
199
+ source = "registry+https://github.com/rust-lang/crates.io-index"
200
+ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
201
+ dependencies = [
202
+ "aho-corasick",
203
+ "memchr",
204
+ "regex-automata",
205
+ "regex-syntax",
206
+ ]
207
+
208
+ [[package]]
209
+ name = "regex-automata"
210
+ version = "0.4.9"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
213
+ dependencies = [
214
+ "aho-corasick",
215
+ "memchr",
216
+ "regex-syntax",
217
+ ]
218
+
219
+ [[package]]
220
+ name = "regex-syntax"
221
+ version = "0.8.5"
222
+ source = "registry+https://github.com/rust-lang/crates.io-index"
223
+ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
224
+
225
+ [[package]]
226
+ name = "ruby-rbs"
227
+ version = "0.2.0"
228
+ dependencies = [
229
+ "ruby-rbs-sys",
230
+ "serde",
231
+ "serde_yaml",
232
+ ]
233
+
234
+ [[package]]
235
+ name = "ruby-rbs-sys"
236
+ version = "0.2.0"
237
+ dependencies = [
238
+ "bindgen",
239
+ "cc",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "rustc-hash"
244
+ version = "2.1.1"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
247
+
248
+ [[package]]
249
+ name = "ryu"
250
+ version = "1.0.20"
251
+ source = "registry+https://github.com/rust-lang/crates.io-index"
252
+ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
253
+
254
+ [[package]]
255
+ name = "serde"
256
+ version = "1.0.219"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
259
+ dependencies = [
260
+ "serde_derive",
261
+ ]
262
+
263
+ [[package]]
264
+ name = "serde_derive"
265
+ version = "1.0.219"
266
+ source = "registry+https://github.com/rust-lang/crates.io-index"
267
+ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
268
+ dependencies = [
269
+ "proc-macro2",
270
+ "quote",
271
+ "syn",
272
+ ]
273
+
274
+ [[package]]
275
+ name = "serde_yaml"
276
+ version = "0.9.34+deprecated"
277
+ source = "registry+https://github.com/rust-lang/crates.io-index"
278
+ checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
279
+ dependencies = [
280
+ "indexmap",
281
+ "itoa",
282
+ "ryu",
283
+ "serde",
284
+ "unsafe-libyaml",
285
+ ]
286
+
287
+ [[package]]
288
+ name = "shlex"
289
+ version = "1.3.0"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
292
+
293
+ [[package]]
294
+ name = "syn"
295
+ version = "2.0.104"
296
+ source = "registry+https://github.com/rust-lang/crates.io-index"
297
+ checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
298
+ dependencies = [
299
+ "proc-macro2",
300
+ "quote",
301
+ "unicode-ident",
302
+ ]
303
+
304
+ [[package]]
305
+ name = "unicode-ident"
306
+ version = "1.0.18"
307
+ source = "registry+https://github.com/rust-lang/crates.io-index"
308
+ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
309
+
310
+ [[package]]
311
+ name = "unsafe-libyaml"
312
+ version = "0.2.11"
313
+ source = "registry+https://github.com/rust-lang/crates.io-index"
314
+ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
315
+
316
+ [[package]]
317
+ name = "windows-targets"
318
+ version = "0.53.2"
319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
320
+ checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
321
+ dependencies = [
322
+ "windows_aarch64_gnullvm",
323
+ "windows_aarch64_msvc",
324
+ "windows_i686_gnu",
325
+ "windows_i686_gnullvm",
326
+ "windows_i686_msvc",
327
+ "windows_x86_64_gnu",
328
+ "windows_x86_64_gnullvm",
329
+ "windows_x86_64_msvc",
330
+ ]
331
+
332
+ [[package]]
333
+ name = "windows_aarch64_gnullvm"
334
+ version = "0.53.0"
335
+ source = "registry+https://github.com/rust-lang/crates.io-index"
336
+ checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
337
+
338
+ [[package]]
339
+ name = "windows_aarch64_msvc"
340
+ version = "0.53.0"
341
+ source = "registry+https://github.com/rust-lang/crates.io-index"
342
+ checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
343
+
344
+ [[package]]
345
+ name = "windows_i686_gnu"
346
+ version = "0.53.0"
347
+ source = "registry+https://github.com/rust-lang/crates.io-index"
348
+ checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
349
+
350
+ [[package]]
351
+ name = "windows_i686_gnullvm"
352
+ version = "0.53.0"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
355
+
356
+ [[package]]
357
+ name = "windows_i686_msvc"
358
+ version = "0.53.0"
359
+ source = "registry+https://github.com/rust-lang/crates.io-index"
360
+ checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
361
+
362
+ [[package]]
363
+ name = "windows_x86_64_gnu"
364
+ version = "0.53.0"
365
+ source = "registry+https://github.com/rust-lang/crates.io-index"
366
+ checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
367
+
368
+ [[package]]
369
+ name = "windows_x86_64_gnullvm"
370
+ version = "0.53.0"
371
+ source = "registry+https://github.com/rust-lang/crates.io-index"
372
+ checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
373
+
374
+ [[package]]
375
+ name = "windows_x86_64_msvc"
376
+ version = "0.53.0"
377
+ source = "registry+https://github.com/rust-lang/crates.io-index"
378
+ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
data/rust/Cargo.toml ADDED
@@ -0,0 +1,7 @@
1
+ [workspace]
2
+ members = [
3
+ "ruby-rbs",
4
+ "ruby-rbs-sys",
5
+ ]
6
+
7
+ resolver = "3"
@@ -0,0 +1,22 @@
1
+ [package]
2
+ name = "ruby-rbs"
3
+ version = "0.2.0"
4
+ edition = "2024"
5
+ license = "BSD-2-Clause"
6
+ description = "Rust bindings for RBS -- the type signature language for Ruby programs"
7
+ homepage = "https://github.com/ruby/rbs"
8
+ repository = "https://github.com/ruby/rbs.git"
9
+ readme = "../../README.md"
10
+ include = [
11
+ "src/**/*",
12
+ "vendor/**/*",
13
+ "build.rs",
14
+ "Cargo.toml",
15
+ ]
16
+
17
+ [dependencies]
18
+ ruby-rbs-sys = { version = "0.2", path = "../ruby-rbs-sys" }
19
+
20
+ [build-dependencies]
21
+ serde = { version = "1.0", features = ["derive"] }
22
+ serde_yaml = "0.9"