rbs 3.9.4 → 4.2.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 (354) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.dockerignore +37 -0
  5. data/.gitattributes +1 -0
  6. data/.github/dependabot.yml +16 -14
  7. data/.github/workflows/bundle-update.yml +63 -0
  8. data/.github/workflows/c-check.yml +66 -0
  9. data/.github/workflows/changelog.yml +121 -0
  10. data/.github/workflows/comments.yml +6 -4
  11. data/.github/workflows/dependabot.yml +2 -2
  12. data/.github/workflows/jruby.yml +74 -0
  13. data/.github/workflows/release-gems.yml +234 -0
  14. data/.github/workflows/ruby.yml +86 -32
  15. data/.github/workflows/rust.yml +186 -0
  16. data/.github/workflows/truffleruby.yml +54 -0
  17. data/.github/workflows/typecheck.yml +6 -3
  18. data/.github/workflows/wasm.yml +55 -0
  19. data/.github/workflows/windows.yml +10 -4
  20. data/.gitignore +16 -0
  21. data/.rubocop.yml +1 -2
  22. data/CHANGELOG.md +502 -0
  23. data/Dockerfile.jruby +53 -0
  24. data/README.md +42 -5
  25. data/Rakefile +892 -111
  26. data/Steepfile +11 -0
  27. data/config.yml +665 -62
  28. data/core/array.rbs +541 -398
  29. data/core/basic_object.rbs +9 -8
  30. data/core/binding.rbs +0 -2
  31. data/core/builtin.rbs +9 -8
  32. data/core/class.rbs +11 -8
  33. data/core/comparable.rbs +55 -34
  34. data/core/complex.rbs +104 -78
  35. data/core/dir.rbs +61 -49
  36. data/core/encoding.rbs +12 -15
  37. data/core/enumerable.rbs +297 -196
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +5 -5
  40. data/core/enumerator.rbs +91 -28
  41. data/core/errno.rbs +11 -2
  42. data/core/errors.rbs +58 -29
  43. data/core/exception.rbs +13 -13
  44. data/core/fiber.rbs +74 -54
  45. data/core/file.rbs +260 -1151
  46. data/core/file_constants.rbs +463 -0
  47. data/core/file_stat.rbs +534 -0
  48. data/core/file_test.rbs +3 -3
  49. data/core/float.rbs +257 -116
  50. data/core/gc.rbs +425 -281
  51. data/core/hash.rbs +1151 -829
  52. data/core/integer.rbs +156 -195
  53. data/core/io/buffer.rbs +53 -42
  54. data/core/io/wait.rbs +13 -35
  55. data/core/io.rbs +222 -155
  56. data/core/kernel.rbs +239 -163
  57. data/core/marshal.rbs +4 -4
  58. data/core/match_data.rbs +16 -14
  59. data/core/math.rbs +107 -66
  60. data/core/method.rbs +69 -33
  61. data/core/module.rbs +302 -150
  62. data/core/nil_class.rbs +7 -6
  63. data/core/numeric.rbs +77 -63
  64. data/core/object.rbs +9 -11
  65. data/core/object_space/weak_key_map.rbs +7 -7
  66. data/core/object_space.rbs +30 -23
  67. data/core/pathname.rbs +1312 -0
  68. data/core/proc.rbs +95 -58
  69. data/core/process.rbs +222 -202
  70. data/core/ractor.rbs +364 -518
  71. data/core/random.rbs +21 -3
  72. data/core/range.rbs +181 -79
  73. data/core/rational.rbs +60 -89
  74. data/core/rbs/ops.rbs +154 -0
  75. data/core/rbs/unnamed/argf.rbs +63 -56
  76. data/core/rbs/unnamed/env_class.rbs +19 -14
  77. data/core/rbs/unnamed/main_class.rbs +123 -0
  78. data/core/rbs/unnamed/random.rbs +11 -118
  79. data/core/regexp.rbs +258 -214
  80. data/core/ruby.rbs +53 -0
  81. data/core/ruby_vm.rbs +78 -34
  82. data/core/rubygems/config_file.rbs +5 -5
  83. data/core/rubygems/errors.rbs +6 -70
  84. data/core/rubygems/requirement.rbs +5 -15
  85. data/core/rubygems/rubygems.rbs +18 -81
  86. data/core/rubygems/specification.rbs +8 -0
  87. data/core/rubygems/version.rbs +2 -163
  88. data/core/set.rbs +493 -363
  89. data/core/signal.rbs +26 -16
  90. data/core/string.rbs +3234 -1285
  91. data/core/struct.rbs +43 -42
  92. data/core/symbol.rbs +41 -34
  93. data/core/thread.rbs +139 -83
  94. data/core/time.rbs +81 -50
  95. data/core/trace_point.rbs +41 -35
  96. data/core/true_class.rbs +2 -2
  97. data/core/unbound_method.rbs +24 -16
  98. data/core/warning.rbs +7 -7
  99. data/docs/CONTRIBUTING.md +3 -2
  100. data/docs/aliases.md +79 -0
  101. data/docs/collection.md +3 -3
  102. data/docs/config.md +171 -0
  103. data/docs/encoding.md +56 -0
  104. data/docs/gem.md +0 -1
  105. data/docs/inline.md +634 -0
  106. data/docs/rbs_by_example.md +20 -20
  107. data/docs/release.md +303 -0
  108. data/docs/rust.md +96 -0
  109. data/docs/sigs.md +3 -3
  110. data/docs/stdlib.md +8 -0
  111. data/docs/syntax.md +60 -18
  112. data/docs/type_fingerprint.md +21 -0
  113. data/docs/wasm_serialization.md +80 -0
  114. data/exe/rbs +1 -1
  115. data/ext/rbs_extension/ast_translation.c +1870 -0
  116. data/ext/rbs_extension/ast_translation.h +41 -0
  117. data/ext/rbs_extension/class_constants.c +189 -0
  118. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +24 -1
  119. data/ext/rbs_extension/compat.h +10 -0
  120. data/ext/rbs_extension/extconf.rb +26 -1
  121. data/ext/rbs_extension/legacy_location.c +299 -0
  122. data/ext/rbs_extension/legacy_location.h +82 -0
  123. data/ext/rbs_extension/main.c +639 -23
  124. data/ext/rbs_extension/rbs_extension.h +6 -21
  125. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  126. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  127. data/include/rbs/ast.h +1055 -0
  128. data/include/rbs/defines.h +104 -0
  129. data/include/rbs/lexer.h +208 -0
  130. data/include/rbs/location.h +40 -0
  131. data/include/rbs/parser.h +187 -0
  132. data/include/rbs/serialize.h +39 -0
  133. data/include/rbs/string.h +47 -0
  134. data/include/rbs/util/rbs_allocator.h +59 -0
  135. data/include/rbs/util/rbs_assert.h +20 -0
  136. data/include/rbs/util/rbs_buffer.h +83 -0
  137. data/include/rbs/util/rbs_constant_pool.h +6 -70
  138. data/include/rbs/util/rbs_encoding.h +282 -0
  139. data/include/rbs/util/rbs_unescape.h +24 -0
  140. data/include/rbs.h +9 -2
  141. data/lib/rbs/annotate/formatter.rb +3 -13
  142. data/lib/rbs/annotate/rdoc_annotator.rb +30 -32
  143. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  144. data/lib/rbs/ast/annotation.rb +1 -1
  145. data/lib/rbs/ast/comment.rb +1 -1
  146. data/lib/rbs/ast/declarations.rb +11 -11
  147. data/lib/rbs/ast/members.rb +14 -14
  148. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  149. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  150. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  151. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  152. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  153. data/lib/rbs/ast/ruby/members.rb +762 -0
  154. data/lib/rbs/ast/type_param.rb +25 -5
  155. data/lib/rbs/buffer.rb +142 -20
  156. data/lib/rbs/cli/diff.rb +16 -15
  157. data/lib/rbs/cli/validate.rb +63 -126
  158. data/lib/rbs/cli.rb +59 -29
  159. data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
  160. data/lib/rbs/collection/sources/git.rb +7 -0
  161. data/lib/rbs/definition.rb +6 -1
  162. data/lib/rbs/definition_builder/ancestor_builder.rb +129 -70
  163. data/lib/rbs/definition_builder/method_builder.rb +74 -33
  164. data/lib/rbs/definition_builder.rb +181 -21
  165. data/lib/rbs/diff.rb +7 -1
  166. data/lib/rbs/environment/class_entry.rb +81 -0
  167. data/lib/rbs/environment/module_entry.rb +91 -0
  168. data/lib/rbs/environment.rb +410 -215
  169. data/lib/rbs/environment_loader.rb +2 -8
  170. data/lib/rbs/errors.rb +31 -21
  171. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  172. data/lib/rbs/inline_parser.rb +568 -0
  173. data/lib/rbs/location_aux.rb +36 -4
  174. data/lib/rbs/locator.rb +5 -1
  175. data/lib/rbs/method_type.rb +5 -3
  176. data/lib/rbs/namespace.rb +47 -18
  177. data/lib/rbs/parser_aux.rb +37 -7
  178. data/lib/rbs/prototype/helpers.rb +24 -0
  179. data/lib/rbs/prototype/rb.rb +3 -28
  180. data/lib/rbs/prototype/rbi.rb +196 -45
  181. data/lib/rbs/prototype/runtime/value_object_generator.rb +0 -1
  182. data/lib/rbs/prototype/runtime.rb +13 -3
  183. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  184. data/lib/rbs/resolver/type_name_resolver.rb +120 -44
  185. data/lib/rbs/rewriter.rb +70 -0
  186. data/lib/rbs/source.rb +99 -0
  187. data/lib/rbs/subtractor.rb +7 -4
  188. data/lib/rbs/test/type_check.rb +25 -3
  189. data/lib/rbs/type_name.rb +34 -21
  190. data/lib/rbs/types.rb +135 -81
  191. data/lib/rbs/unit_test/convertibles.rb +1 -0
  192. data/lib/rbs/unit_test/type_assertions.rb +47 -11
  193. data/lib/rbs/validator.rb +2 -2
  194. data/lib/rbs/version.rb +1 -1
  195. data/lib/rbs/wasm/deserializer.rb +213 -0
  196. data/lib/rbs/wasm/location.rb +61 -0
  197. data/lib/rbs/wasm/parser.rb +174 -0
  198. data/lib/rbs/wasm/runtime.rb +211 -0
  199. data/lib/rbs/wasm/serialization_schema.rb +111 -0
  200. data/lib/rbs.rb +25 -2
  201. data/lib/rbs_jars.rb +39 -0
  202. data/lib/rdoc/discover.rb +1 -1
  203. data/lib/rdoc_plugin/parser.rb +8 -3
  204. data/rbs.gemspec +34 -6
  205. data/schema/function.json +12 -1
  206. data/schema/typeParam.json +17 -1
  207. data/sig/ancestor_builder.rbs +1 -1
  208. data/sig/annotate/formatter.rbs +2 -2
  209. data/sig/annotate/rdoc_annotater.rbs +13 -10
  210. data/sig/ast/ruby/annotations.rbs +470 -0
  211. data/sig/ast/ruby/comment_block.rbs +127 -0
  212. data/sig/ast/ruby/declarations.rbs +158 -0
  213. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  214. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  215. data/sig/ast/ruby/members.rbs +198 -0
  216. data/sig/buffer.rbs +81 -5
  217. data/sig/cli/diff.rbs +5 -11
  218. data/sig/cli/validate.rbs +12 -8
  219. data/sig/cli.rbs +18 -18
  220. data/sig/collection/config/lockfile_generator.rbs +2 -0
  221. data/sig/definition.rbs +6 -0
  222. data/sig/definition_builder.rbs +3 -1
  223. data/sig/environment/class_entry.rbs +56 -0
  224. data/sig/environment/module_entry.rbs +65 -0
  225. data/sig/environment.rbs +94 -87
  226. data/sig/errors.rbs +26 -20
  227. data/sig/inline_parser/comment_association.rbs +71 -0
  228. data/sig/inline_parser.rbs +126 -0
  229. data/sig/location.rbs +32 -7
  230. data/sig/locator.rbs +0 -2
  231. data/sig/manifest.yaml +0 -2
  232. data/sig/method_builder.rbs +9 -4
  233. data/sig/namespace.rbs +20 -5
  234. data/sig/parser.rbs +79 -15
  235. data/sig/prototype/helpers.rbs +2 -0
  236. data/sig/prototype/rbi.rbs +33 -4
  237. data/sig/resolver/type_name_resolver.rbs +36 -10
  238. data/sig/rewriter.rbs +45 -0
  239. data/sig/source.rbs +48 -0
  240. data/sig/type_param.rbs +13 -8
  241. data/sig/typename.rbs +15 -5
  242. data/sig/types.rbs +21 -9
  243. data/sig/unit_test/spy.rbs +0 -8
  244. data/sig/unit_test/type_assertions.rbs +17 -2
  245. data/sig/wasm/deserializer.rbs +66 -0
  246. data/sig/wasm/serialization_schema.rbs +13 -0
  247. data/src/ast.c +1644 -0
  248. data/src/lexer.c +3223 -0
  249. data/src/lexer.re +187 -0
  250. data/src/lexstate.c +222 -0
  251. data/src/location.c +31 -0
  252. data/src/parser.c +4318 -0
  253. data/src/serialize.c +965 -0
  254. data/src/string.c +41 -0
  255. data/src/util/rbs_allocator.c +171 -0
  256. data/src/util/rbs_assert.c +19 -0
  257. data/src/util/rbs_buffer.c +54 -0
  258. data/src/util/rbs_constant_pool.c +18 -92
  259. data/src/util/rbs_encoding.c +21454 -0
  260. data/src/util/rbs_unescape.c +167 -0
  261. data/stdlib/abbrev/0/array.rbs +1 -1
  262. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  263. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  264. data/stdlib/cgi/0/core.rbs +9 -393
  265. data/stdlib/cgi/0/manifest.yaml +1 -0
  266. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  267. data/stdlib/coverage/0/coverage.rbs +7 -4
  268. data/stdlib/csv/0/csv.rbs +5 -5
  269. data/stdlib/date/0/date.rbs +92 -79
  270. data/stdlib/date/0/date_time.rbs +25 -24
  271. data/stdlib/delegate/0/delegator.rbs +11 -7
  272. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  273. data/stdlib/digest/0/digest.rbs +117 -1
  274. data/stdlib/erb/0/erb.rbs +754 -353
  275. data/stdlib/etc/0/etc.rbs +73 -54
  276. data/stdlib/fileutils/0/fileutils.rbs +179 -160
  277. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  278. data/stdlib/io-console/0/io-console.rbs +2 -2
  279. data/stdlib/ipaddr/0/ipaddr.rbs +0 -5
  280. data/stdlib/json/0/json.rbs +232 -185
  281. data/stdlib/monitor/0/monitor.rbs +9 -9
  282. data/stdlib/net-http/0/net-http.rbs +162 -134
  283. data/stdlib/objspace/0/objspace.rbs +17 -34
  284. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  285. data/stdlib/open3/0/open3.rbs +469 -10
  286. data/stdlib/openssl/0/openssl.rbs +521 -397
  287. data/stdlib/optparse/0/optparse.rbs +26 -17
  288. data/stdlib/pathname/0/pathname.rbs +11 -1381
  289. data/stdlib/pp/0/pp.rbs +9 -8
  290. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  291. data/stdlib/pstore/0/pstore.rbs +35 -30
  292. data/stdlib/psych/0/psych.rbs +65 -12
  293. data/stdlib/psych/0/store.rbs +2 -4
  294. data/stdlib/pty/0/pty.rbs +9 -6
  295. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  296. data/stdlib/rdoc/0/code_object.rbs +4 -3
  297. data/stdlib/rdoc/0/comment.rbs +2 -0
  298. data/stdlib/rdoc/0/options.rbs +76 -0
  299. data/stdlib/rdoc/0/parser.rbs +1 -1
  300. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  301. data/stdlib/rdoc/0/store.rbs +2 -2
  302. data/stdlib/resolv/0/resolv.rbs +26 -69
  303. data/stdlib/ripper/0/ripper.rbs +25 -19
  304. data/stdlib/securerandom/0/manifest.yaml +2 -0
  305. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  306. data/stdlib/shellwords/0/shellwords.rbs +3 -3
  307. data/stdlib/singleton/0/singleton.rbs +6 -0
  308. data/stdlib/socket/0/addrinfo.rbs +9 -9
  309. data/stdlib/socket/0/basic_socket.rbs +3 -3
  310. data/stdlib/socket/0/ip_socket.rbs +10 -8
  311. data/stdlib/socket/0/socket.rbs +23 -10
  312. data/stdlib/socket/0/tcp_server.rbs +1 -1
  313. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  314. data/stdlib/socket/0/udp_socket.rbs +1 -1
  315. data/stdlib/socket/0/unix_server.rbs +1 -1
  316. data/stdlib/stringio/0/stringio.rbs +1211 -96
  317. data/stdlib/strscan/0/string_scanner.rbs +101 -80
  318. data/stdlib/tempfile/0/manifest.yaml +3 -0
  319. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  320. data/stdlib/time/0/time.rbs +8 -6
  321. data/stdlib/timeout/0/timeout.rbs +58 -7
  322. data/stdlib/tsort/0/cyclic.rbs +4 -1
  323. data/stdlib/tsort/0/interfaces.rbs +8 -8
  324. data/stdlib/tsort/0/tsort.rbs +16 -15
  325. data/stdlib/uri/0/common.rbs +42 -20
  326. data/stdlib/uri/0/file.rbs +3 -3
  327. data/stdlib/uri/0/generic.rbs +21 -18
  328. data/stdlib/uri/0/http.rbs +2 -2
  329. data/stdlib/uri/0/ldap.rbs +2 -2
  330. data/stdlib/uri/0/mailto.rbs +3 -3
  331. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  332. data/stdlib/zlib/0/deflate.rbs +4 -3
  333. data/stdlib/zlib/0/gzip_file.rbs +1 -1
  334. data/stdlib/zlib/0/gzip_reader.rbs +8 -8
  335. data/stdlib/zlib/0/gzip_writer.rbs +16 -13
  336. data/stdlib/zlib/0/inflate.rbs +1 -1
  337. data/stdlib/zlib/0/need_dict.rbs +1 -1
  338. data/wasm/README.md +109 -0
  339. data/wasm/rbs_wasm.c +479 -0
  340. metadata +133 -19
  341. data/ext/rbs_extension/lexer.c +0 -2728
  342. data/ext/rbs_extension/lexer.h +0 -179
  343. data/ext/rbs_extension/lexer.re +0 -147
  344. data/ext/rbs_extension/lexstate.c +0 -175
  345. data/ext/rbs_extension/location.c +0 -325
  346. data/ext/rbs_extension/location.h +0 -85
  347. data/ext/rbs_extension/parser.c +0 -2982
  348. data/ext/rbs_extension/parser.h +0 -18
  349. data/ext/rbs_extension/parserstate.c +0 -411
  350. data/ext/rbs_extension/parserstate.h +0 -163
  351. data/ext/rbs_extension/unescape.c +0 -32
  352. data/include/rbs/ruby_objs.h +0 -72
  353. data/src/constants.c +0 -153
  354. data/src/ruby_objs.c +0 -799
data/sig/source.rbs ADDED
@@ -0,0 +1,48 @@
1
+ module RBS
2
+ module Source
3
+ type t = RBS | Ruby
4
+
5
+ class RBS
6
+ attr_reader buffer: Buffer
7
+
8
+ attr_reader directives: Array[AST::Directives::t]
9
+
10
+ attr_reader declarations: Array[AST::Declarations::t]
11
+
12
+ def initialize: (Buffer, Array[AST::Directives::t], Array[AST::Declarations::t]) -> void
13
+
14
+ # Enumerates defined type names in the source
15
+ #
16
+ # The order is undefined. Deduplicated per source object.
17
+ #
18
+ def each_type_name: () { (TypeName) -> void } -> void
19
+ | () -> Enumerator[TypeName]
20
+
21
+ private def each_declaration_type_name: (Set[TypeName], AST::Declarations::t) { (TypeName) -> void } -> void
22
+ end
23
+
24
+ class Ruby
25
+ attr_reader buffer: Buffer
26
+
27
+ attr_reader prism_result: Prism::ParseResult
28
+
29
+ attr_reader declarations: Array[AST::Ruby::Declarations::t]
30
+
31
+ attr_reader diagnostics: Array[InlineParser::Diagnostic::t]
32
+
33
+ def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[InlineParser::Diagnostic::t]) -> void
34
+
35
+ def each_type_name: () { (TypeName) -> void } -> void
36
+ | () -> Enumerator[TypeName]
37
+
38
+ private def each_declaration_type_name: (Set[TypeName], AST::Ruby::Declarations::t) { (TypeName) -> void } -> void
39
+
40
+ # Compares the type declaration between `self` and `other`
41
+ #
42
+ # The comparison is based on the AST structure.
43
+ # Differences on Ruby code implementation may be ignored.
44
+ #
45
+ def ==: (other: Ruby) -> bool
46
+ end
47
+ end
48
+ end
data/sig/type_param.rbs CHANGED
@@ -4,13 +4,14 @@ module RBS
4
4
  # Key
5
5
  # ^^^ name
6
6
  #
7
- # unchecked out Elem < _ToJson = untyped
8
- # ^^^^^^^^^ unchecked
9
- # ^^^ variance
10
- # ^^^^ name
11
- # ^^^^^^^^^ upper_bound
12
- # ^^^^^^^^^ default
13
- type loc = Location[:name, :variance | :unchecked | :upper_bound | :default]
7
+ # unchecked out Elem < _ToJson > bot = untyped
8
+ # ^^^^^^^^^ unchecked
9
+ # ^^^ variance
10
+ # ^^^^ name
11
+ # ^^^^^^^^^ upper_bound
12
+ # ^^^^^ lower_bound
13
+ # ^^^^^^^^ default
14
+ type loc = Location[:name, :variance | :unchecked | :upper_bound | :lower_bound | :default]
14
15
 
15
16
  type variance = :invariant | :covariant | :contravariant
16
17
 
@@ -24,9 +25,13 @@ module RBS
24
25
 
25
26
  attr_reader upper_bound_type: Types::t?
26
27
 
28
+ %a{pure} def lower_bound: () -> bound?
29
+
30
+ attr_reader lower_bound_type: Types::t?
31
+
27
32
  attr_reader default_type: Types::t?
28
33
 
29
- def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
34
+ def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, lower_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
30
35
 
31
36
  include _ToJson
32
37
 
data/sig/typename.rbs CHANGED
@@ -28,6 +28,21 @@ module RBS
28
28
  #
29
29
  def initialize: (namespace: Namespace, name: Symbol) -> void
30
30
 
31
+ @hash: Integer?
32
+
33
+ self.@intern_mutex: Mutex
34
+
35
+ # Two-level Hash keyed by canonical Namespace identity (outer uses
36
+ # `compare_by_identity`) and name Symbol.
37
+ self.@intern_cache: Hash[Namespace, Hash[Symbol, TypeName]]
38
+
39
+ # Returns an interned `TypeName` instance.
40
+ #
41
+ # The given `namespace` is canonicalized so cached instances always hold an
42
+ # interned namespace. Subsequent calls with structurally equal arguments
43
+ # return the same object.
44
+ def self.[]: (Namespace namespace, Symbol name) -> TypeName
45
+
31
46
  def ==: (untyped other) -> bool
32
47
 
33
48
  def hash: () -> Integer
@@ -72,8 +87,3 @@ module RBS
72
87
  def self.parse: (String name) -> RBS::TypeName
73
88
  end
74
89
  end
75
-
76
- module Kernel
77
- # Deprecated: Use `RBS::TypeName.parse` instead
78
- %a{deprecated: Use `RBS::TypeName.parse` instead} def TypeName: (String name) -> RBS::TypeName
79
- end
data/sig/types.rbs CHANGED
@@ -172,24 +172,23 @@ module RBS
172
172
  class ClassSingleton
173
173
  # singleton(::Foo)
174
174
  # ^^^^^ => name
175
- type loc = Location[:name, bot]
176
-
177
- def initialize: (name: TypeName, location: loc?) -> void
175
+ type loc = Location[:name, :args]
178
176
 
179
- attr_reader name: TypeName
177
+ def initialize: (name: TypeName, location: loc?, ?args: Array[t]) -> void
180
178
 
181
179
  attr_reader location: loc?
182
180
 
183
181
  include _TypeBase
184
- include NoFreeVariables
185
- include NoSubst
186
- include EmptyEachType
182
+ include Application
187
183
 
188
184
  def ==: (untyped other) -> bool
189
185
 
190
186
  alias eql? ==
191
187
 
192
188
  def hash: () -> Integer
189
+
190
+ def map_type: () { (t) -> t } -> ClassSingleton
191
+ | () -> Enumerator[t, ClassSingleton]
193
192
  end
194
193
 
195
194
  module Application
@@ -386,6 +385,12 @@ module RBS
386
385
  | -> Enumerator[t, Param]
387
386
  end
388
387
 
388
+ class ForwardingParam
389
+ attr_reader location: Location?
390
+
391
+ def initialize: (location: Location) -> void
392
+ end
393
+
389
394
  attr_reader required_positionals: Array[Param]
390
395
  attr_reader optional_positionals: Array[Param]
391
396
  attr_reader rest_positionals: Param?
@@ -393,6 +398,7 @@ module RBS
393
398
  attr_reader required_keywords: Hash[Symbol, Param]
394
399
  attr_reader optional_keywords: Hash[Symbol, Param]
395
400
  attr_reader rest_keywords: Param?
401
+ attr_reader forwarding: ForwardingParam?
396
402
  attr_reader return_type: t
397
403
 
398
404
  def initialize: (required_positionals: Array[Param],
@@ -402,7 +408,8 @@ module RBS
402
408
  required_keywords: Hash[Symbol, Param],
403
409
  optional_keywords: Hash[Symbol, Param],
404
410
  rest_keywords: Param?,
405
- return_type: t) -> void
411
+ return_type: t,
412
+ ?forwarding: ForwardingParam?) -> void
406
413
 
407
414
  def free_variables: (?Set[Symbol]) -> Set[Symbol]
408
415
 
@@ -432,9 +439,11 @@ module RBS
432
439
  ?required_keywords: Hash[Symbol, Param],
433
440
  ?optional_keywords: Hash[Symbol, Param],
434
441
  ?rest_keywords: Param?,
442
+ ?forwarding: ForwardingParam?,
435
443
  ?return_type: t) -> Function
436
444
 
437
445
  def empty?: () -> bool
446
+ def forwarding?: () -> bool
438
447
 
439
448
  def param_to_s: () -> String
440
449
  def return_to_s: () -> String
@@ -518,7 +527,10 @@ module RBS
518
527
 
519
528
  attr_reader self_type: t?
520
529
 
521
- def initialize: (type: function, ?self_type: t?, required: boolish) -> void
530
+ type loc = Location[bot, bot]
531
+ attr_reader location: loc?
532
+
533
+ def initialize: (?location: loc?, type: function, ?self_type: t?, required: boolish) -> void
522
534
 
523
535
  def ==: (untyped other) -> bool
524
536
 
@@ -20,11 +20,3 @@ module RBS
20
20
  end
21
21
  end
22
22
  end
23
-
24
- class Proc
25
- def ruby2_keywords: () -> self
26
- end
27
-
28
- class Module
29
- def ruby2_keywords: (*Symbol) -> void
30
- end
@@ -30,11 +30,11 @@ module RBS
30
30
  type target_type = Types::ClassInstance | Types::ClassSingleton
31
31
 
32
32
  interface _BaseAssertions
33
- def assert: (untyped, ?String?) -> void
33
+ def assert: (untyped, ?(String | ^() -> String)?) -> void
34
34
 
35
35
  def refute: (untyped, ?String?) -> void
36
36
 
37
- def assert_empty: (untyped, ?String?) -> void
37
+ def assert_empty: (untyped, ?(String | ^() -> String)?) -> void
38
38
 
39
39
  def assert_operator: (untyped, Symbol, *untyped) -> void
40
40
 
@@ -153,6 +153,17 @@ module RBS
153
153
  #
154
154
  def refute_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
155
155
 
156
+ # Calls a method `method_name`, validates if it's compatible with RBS type definition, and ensures it raises the `exception` class.
157
+ #
158
+ # 1. It calls `method_name` with `receiver` passing `args` and given block,
159
+ # 2. Validates if it's compatible with given `method_type`, and
160
+ # 3. Validates if it's compatible with one of the overloads defined in RBS type definition
161
+ # 4. Ensures that `exception` is thrown
162
+ #
163
+ # See `assert_send_type` for the details.
164
+ #
165
+ def assert_send_type_error: (String | MethodType method_type, Class exception, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
166
+
156
167
  # Asserts if the constant `constant_name` has `constant_type`, and the RBS definition has compatible type
157
168
  #
158
169
  # ```ruby
@@ -168,6 +179,10 @@ module RBS
168
179
  #
169
180
  def assert_type: (String | Types::t value_type, untyped value) -> void
170
181
 
182
+ # Asserts if RBS definition declares given `method_name` with `visibility`
183
+ #
184
+ def assert_visibility: (:private | :public visibility, Symbol method_name) -> void
185
+
171
186
  # Allow non _simple-type_ method types given to `assert_send_type` and `refute_send_type`
172
187
  #
173
188
  # ```ruby
@@ -0,0 +1,66 @@
1
+ module RBS
2
+ module WASM
3
+ # Rebuilds RBS::AST objects from the binary buffer produced by
4
+ # `rbs_serialize_node` (src/serialize.c), driven by SerializationSchema.
5
+ class Deserializer
6
+ @bytes: String
7
+
8
+ @buffer: Buffer
9
+
10
+ @encoding: Encoding
11
+
12
+ @pos: Integer
13
+
14
+ @class_cache: Hash[String, untyped]
15
+
16
+ # Deserialize a buffer produced for a whole signature, returning
17
+ # `[directives, declarations]` to match RBS::Parser._parse_signature.
18
+ def self.deserialize: (String bytes, Buffer buffer) -> untyped
19
+
20
+ # Deserialize a bare node list (RBS::Parser._parse_type_params).
21
+ def self.deserialize_node_list: (String bytes, Buffer buffer) -> Array[untyped]
22
+
23
+ # Deserialize the token stream from rbs_wasm_lex (RBS::Parser._lex).
24
+ def self.deserialize_tokens: (String bytes, Buffer buffer) -> Array[[ Symbol, Location ]]
25
+
26
+ def initialize: (String bytes, Buffer buffer) -> void
27
+
28
+ # Reads the next node and returns the reconstructed Ruby value.
29
+ def read_node: () -> untyped
30
+
31
+ def read_node_list: () -> Array[untyped]
32
+
33
+ def read_tokens: () -> Array[[ Symbol, Location ]]
34
+
35
+ private
36
+
37
+ def read_struct: (Array[untyped] entry) -> untyped
38
+
39
+ def read_field: (untyped reader) -> untyped
40
+
41
+ def read_hash: () -> Hash[untyped, untyped]
42
+
43
+ def read_count: () -> Integer
44
+
45
+ def read_location: (Array[untyped]? loc_children) -> Location?
46
+
47
+ def read_location_value: () -> Location?
48
+
49
+ def read_location_value_list: () -> Array[Location?]
50
+
51
+ def read_attr_ivar_name: () -> (Symbol | false | nil)
52
+
53
+ def read_range: () -> [ Integer, Integer ]?
54
+
55
+ def read_u8: () -> Integer
56
+
57
+ def read_u32: () -> Integer
58
+
59
+ def read_i32: () -> Integer
60
+
61
+ def read_string: (Encoding encoding) -> String
62
+
63
+ def class_for: (String name) -> untyped
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,13 @@
1
+ module RBS
2
+ module WASM
3
+ # Generated from config.yml. See `templates/lib/rbs/wasm/serialization_schema.rb.erb`.
4
+ module SerializationSchema
5
+ # The node tag used for interned symbols (`rbs_ast_symbol`).
6
+ SYMBOL_TAG: Integer
7
+
8
+ # Indexed by node tag. Each entry describes how to decode one node; see the
9
+ # generated file for the exact shape.
10
+ SCHEMA: Array[Array[untyped]?]
11
+ end
12
+ end
13
+ end