rbs 4.1.0.pre.2-java

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 (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,182 @@
1
+ module RBS
2
+ module Prototype
3
+ class Runtime
4
+ module Reflection
5
+ self.@object_class: UnboundMethod
6
+ def self.object_class: (Module value) -> Class
7
+
8
+ self.@constants_of: UnboundMethod
9
+ def self.constants_of: (Module mod, ?bool inherit) -> Array[Symbol]
10
+ end
11
+
12
+ module Helpers
13
+ @module_name_method: UnboundMethod
14
+ @untyped: Types::Bases::Any
15
+
16
+ private
17
+
18
+ def const_name: (Module const) -> String?
19
+
20
+ def const_name!: (Module const) -> String
21
+
22
+ # Returns the exact name & not compactly declared name
23
+ def only_name: (Module mod) -> String
24
+
25
+ def to_type_name: (String name, ?full_name: bool) -> TypeName
26
+
27
+ def untyped: () -> Types::Bases::Any
28
+ end
29
+
30
+ class ValueObjectBase
31
+ include Helpers
32
+
33
+ # @target_class stores the singleton object of `Data` or `Struct` subclass
34
+ @target_class: untyped
35
+
36
+ def build_decl: () -> AST::Declarations::Class
37
+
38
+ private
39
+
40
+ def build_member_accessors: (untyped ast_members_class) -> untyped
41
+
42
+ def build_s_members: () -> Array[AST::Members::MethodDefinition]
43
+
44
+ def build_super_class: () -> AST::Declarations::Class::Super
45
+
46
+ def add_decl_members: (AST::Declarations::Class) -> void
47
+
48
+ def initialize: (Class target_class) -> void
49
+ end
50
+
51
+ class StructGenerator < ValueObjectBase
52
+ def self.generatable?: (Class target) -> bool
53
+
54
+ private
55
+
56
+ def add_decl_members: (AST::Declarations::Class decl) -> void
57
+
58
+ def build_overload_for_keyword_arguments: () -> AST::Members::MethodDefinition::Overload
59
+
60
+ def build_overload_for_positional_arguments: () -> AST::Members::MethodDefinition::Overload
61
+
62
+ def build_s_keyword_init_p: () -> Array[AST::Members::MethodDefinition]
63
+
64
+ def build_s_new: () -> Array[AST::Members::MethodDefinition]
65
+
66
+ def build_super_class: () -> AST::Declarations::Class::Super
67
+
68
+ CAN_CALL_KEYWORD_INIT_P: bool
69
+ end
70
+
71
+ class DataGenerator < ValueObjectBase
72
+ def self.generatable?: (Class target) -> bool
73
+
74
+ private
75
+
76
+ def add_decl_members: (AST::Declarations::Class decl) -> void
77
+
78
+ def build_s_new: () -> Array[AST::Members::MethodDefinition]
79
+
80
+ def build_super_class: () -> AST::Declarations::Class::Super
81
+ end
82
+
83
+ class Todo
84
+ @builder: DefinitionBuilder
85
+
86
+ @mixin_decls_cache: Hash[TypeName, Array[untyped]]
87
+
88
+ def initialize: (builder: DefinitionBuilder) -> void
89
+
90
+ def skip_mixin?: (type_name: TypeName, module_name: TypeName, mixin_class: mixin_class) -> bool
91
+
92
+ def skip_singleton_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
93
+
94
+ def skip_instance_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
95
+
96
+ def skip_constant?: (module_name: String, name: Symbol) -> bool
97
+
98
+ private def mixin_decls: (TypeName type_name) -> Array[AST::Members::Include | AST::Members::Extend | AST::Members::Prepend]
99
+ end
100
+
101
+ type mixin_class = singleton(AST::Members::Include) | singleton(AST::Members::Prepend) | singleton(AST::Members::Extend)
102
+
103
+ @decls: Array[AST::Declarations::t]?
104
+
105
+ @modules: Hash[String, Module]
106
+
107
+ @builder: DefinitionBuilder
108
+
109
+ @module_name_method: UnboundMethod
110
+ @object_class: UnboundMethod
111
+
112
+ @todo_object: Todo?
113
+
114
+ include Helpers
115
+
116
+ attr_reader patterns: Array[String]
117
+
118
+ attr_reader env: Environment
119
+
120
+ attr_reader merge: bool
121
+
122
+ attr_reader todo: bool
123
+
124
+ attr_accessor outline: bool
125
+
126
+ attr_reader owners_included: Array[Module]
127
+
128
+ def initialize: (patterns: Array[String], env: Environment, merge: bool, ?todo: bool, ?owners_included: Array[Symbol]) -> void
129
+
130
+ def target?: (Module const) -> bool
131
+
132
+ def todo_object: () -> Todo?
133
+
134
+ def builder: () -> DefinitionBuilder
135
+
136
+ def parse: (String file) -> void
137
+
138
+ def decls: () -> Array[AST::Declarations::t]
139
+
140
+ def each_mixined_module: (TypeName type_name, Module mod) { (TypeName, TypeName, mixin_class) -> void } -> void
141
+
142
+ def each_mixined_module_one: (TypeName type_name, Module mod) { (TypeName, TypeName, bool) -> void } -> void
143
+
144
+ def method_type: (UnboundMethod method) -> MethodType
145
+
146
+ def merge_rbs: [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, singleton: Symbol) { () -> A } -> A?
147
+ | [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, instance: Symbol) { () -> A } -> A?
148
+
149
+ def target_method?: (Module mod, instance: Symbol) -> bool
150
+ | (Module mod, singleton: Symbol) -> bool
151
+
152
+ def generate_methods: (Module mod, TypeName module_name, Array[AST::Declarations::Class::member] members) -> void
153
+
154
+ def generate_constants: (Module mod, Array[AST::Declarations::Class::member] decls) -> void
155
+
156
+ def generate_super_class: (Class mod) -> AST::Declarations::Class::Super?
157
+
158
+ def generate_class: (Class mod) -> void
159
+
160
+ def generate_module: (Module mod) -> void
161
+
162
+ def generate_mixin: (Module mod, AST::Declarations::Class | AST::Declarations::Module, TypeName, TypeName) -> void
163
+
164
+ # Generate/find outer module declarations
165
+ # This is broken down into another method to comply with `DRY`
166
+ # This generates/finds declarations in nested form & returns the last array of declarations
167
+ def ensure_outer_module_declarations: (Module mod) -> Array[AST::Declarations::Class::member]
168
+
169
+ def object_class: (untyped) -> untyped
170
+
171
+ def type_args: (TypeName type_name) -> Array[Types::t]
172
+
173
+ def block_from_ast_of: (UnboundMethod method) -> Types::Block?
174
+
175
+ def block_from_body: (RubyVM::AbstractSyntaxTree::Node) -> Types::Block?
176
+
177
+ def can_alias?: (Module, UnboundMethod) -> bool
178
+
179
+ def type_params: (Module) -> Array[AST::TypeParam]
180
+ end
181
+ end
182
+ end
data/sig/rbs.rbs ADDED
@@ -0,0 +1,21 @@
1
+ module RBS
2
+ def self.logger: () -> Logger
3
+
4
+ def self.logger_level: () -> Integer?
5
+
6
+ def self.logger_level=: (Integer?) -> Integer?
7
+
8
+ %a{pure} def self.logger_output: () -> IO?
9
+
10
+ def self.logger_output=: (IO) -> IO
11
+
12
+ def self.print_warning: () { () -> String } -> void
13
+
14
+ self.@logger: Logger?
15
+
16
+ self.@logger_output: IO?
17
+
18
+ self.@logger_level: Integer?
19
+
20
+ self.@warnings: Set[String]
21
+ end
data/sig/rdoc/rbs.rbs ADDED
@@ -0,0 +1,67 @@
1
+ module RDoc
2
+ class Parser
3
+ class RBS < Parser
4
+ end
5
+ end
6
+ end
7
+
8
+ module RBS
9
+ module RDocPlugin
10
+ class Parser
11
+ @top_level: RDoc::TopLevel
12
+
13
+ @content: String
14
+
15
+ type allowed_decls = RBS::AST::Declarations::Class
16
+ | RBS::AST::Declarations::Module
17
+ | RBS::AST::Declarations::Constant
18
+
19
+ def initialize: (RDoc::TopLevel top_level, String content) -> void
20
+
21
+ def scan: () -> RDoc::TopLevel
22
+
23
+ def parse_member: (decl: RBS::AST::Declarations::t | RBS::AST::Members::t, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
24
+
25
+ def parse_class_decl: (decl: RBS::AST::Declarations::Class, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
26
+
27
+ def parse_module_decl: (decl: RBS::AST::Declarations::Module | RBS::AST::Declarations::Interface, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
28
+
29
+ def parse_constant_decl: (decl: RBS::AST::Declarations::Constant, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
30
+
31
+ def parse_method_decl: (decl: RBS::AST::Members::MethodDefinition, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
32
+
33
+ def parse_method_alias_decl: (decl: RBS::AST::Members::Alias, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
34
+
35
+ def parse_attr_decl: (decl: RBS::AST::Members::AttrReader | RBS::AST::Members::AttrAccessor | RBS::AST::Members::AttrWriter, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
36
+
37
+ def parse_include_decl: (decl: RBS::AST::Members::Include, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
38
+
39
+ def parse_extend_decl: (decl: RBS::AST::Members::Extend, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
40
+
41
+ private
42
+
43
+ def construct_comment: (context: RDoc::Context, comment: String) -> RDoc::Comment
44
+
45
+ # _DeclWithComment is a utility interface that has `#comment`
46
+ #
47
+ interface _DeclWithComment
48
+ def comment: () -> ::RBS::AST::Comment?
49
+ end
50
+
51
+ # Extract comment string from a declaration with comment
52
+ #
53
+ # * If `#comment" returns a Comment object, it returns its `#string` value
54
+ # * If `#comment` returns `nil`, it raises an error
55
+ #
56
+ # Note that you have to confirm if the `#comment` of given declaration exists.
57
+ #
58
+ # ```ruby
59
+ # comment = construct_comment(context: context, comment: comment_string(decl)) if decl.comment
60
+ # ```
61
+ #
62
+ def comment_string: (_DeclWithComment) -> String
63
+
64
+ def fully_qualified_name: (outer_name: RBS::TypeName?, decl: allowed_decls) -> RBS::TypeName
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,85 @@
1
+ module RBS
2
+ # Set of RBS repositories.
3
+ #
4
+ # A repository object can handle multiple repository roots.
5
+ #
6
+ # ```ruby
7
+ # repo = RBS::Repository.new()
8
+ # repo.add(Pathname("vendor/rbs/gem-rbs"))
9
+ # repo.add(Pathname("vendor/rbs/internal-rbs"))
10
+ # repo.add(Pathname("vendor/rbs/definitely-rbs"))
11
+ #
12
+ # repo.lookup("minitest", "2.1.3") # => Pathname or nil
13
+ # ```
14
+ #
15
+ # If one gem version can resolve to several directories, the last added dir wins.
16
+ #
17
+ class Repository
18
+ class GemRBS
19
+ attr_reader name: String
20
+
21
+ # Array of gem dirs.
22
+ # Gem dir contains directories for each version.
23
+ attr_reader paths: Array[Pathname]
24
+
25
+ # Hash from a version to VersionPath object.
26
+ attr_reader versions(): Hash[Gem::Version, VersionPath]
27
+
28
+ @versions: Hash[Gem::Version, VersionPath]?
29
+
30
+ def initialize: (name: String) -> void
31
+
32
+ def load!: () -> void
33
+
34
+ def version_names: () -> Array[Gem::Version]
35
+
36
+ def oldest_version: () -> VersionPath
37
+
38
+ def latest_version: () -> VersionPath
39
+
40
+ def find_best_version: (Gem::Version?) -> VersionPath
41
+
42
+ # Returns true if versions is empty.
43
+ def empty?: () -> bool
44
+ end
45
+
46
+ class VersionPath
47
+ attr_reader gem: GemRBS
48
+ attr_reader version: Gem::Version
49
+ attr_reader path: Pathname
50
+
51
+ def initialize: (gem: GemRBS, version: Gem::Version, path: Pathname) -> void
52
+ end
53
+
54
+ DEFAULT_STDLIB_ROOT: Pathname
55
+
56
+ # Array of _root dir_s of repositories.
57
+ #
58
+ attr_reader dirs: Array[Pathname]
59
+
60
+ attr_reader gems: Hash[String, GemRBS]
61
+
62
+ def self.default: () -> instance
63
+
64
+ def self.find_best_version: (Gem::Version? version, Array[Gem::Version] candidates) -> Gem::Version
65
+
66
+ # An optional keyword argument `no_stdlib` is to skip adding directory for stdlib classes.
67
+ # Passing truthy value will skip loading stdlib. (You can add the stdlib root by yourself.)
68
+ #
69
+ def initialize: (?no_stdlib: bool) -> void
70
+
71
+ # Add new _root dir_ to the repository set.
72
+ # If two repository dirs have exactly same gem-version definitions, the latter overwrites the prior.
73
+ #
74
+ def add: (Pathname dir) -> void
75
+
76
+ # Returns a directory for given `gem` name and `version`.
77
+ # `version` can be `nil` for _any version_.
78
+ #
79
+ # If the given gem cannot be found, it returns `nil`.
80
+ #
81
+ def lookup: (String gem, String? version) -> Pathname?
82
+
83
+ def lookup_path: (String gem, String? version) -> [GemRBS, VersionPath]?
84
+ end
85
+ end
@@ -0,0 +1,92 @@
1
+ module RBS
2
+ module Resolver
3
+ class ConstantResolver
4
+ # Table stores the set of immediate child constants of a module.
5
+ #
6
+ # ```rb
7
+ # table = RBS::ConstantResolver::Table.new(env)
8
+ #
9
+ # table.children(TypeName.parse("::Object")) # -> { ... } Returns a hash of name and constants.
10
+ # table.children(TypeName.parse("::File::PATH_SEPARATOR")) # -> nil Returns nil because the constant is not a module.
11
+ #
12
+ # table.toplevel # -> { ... } Returns a hash of top level constants.
13
+ # ```
14
+ #
15
+ # The `#toplevel` is incompatible with Ruby.
16
+ # All constants in Ruby are defined under `Object`, and they are accessed with `::` (Colon3) operator.
17
+ # RBS is different.
18
+ # `::` constants are _toplevel_ constants, and they are not defined under `::Object`.
19
+ #
20
+ # The behavior is simulated in `ConstantResolver`.
21
+ #
22
+ class Table
23
+ attr_reader children_table: Hash[TypeName, Hash[Symbol, Constant]?]
24
+ attr_reader constants_table: Hash[TypeName, Constant]
25
+ attr_reader toplevel: Hash[Symbol, Constant]
26
+
27
+ def initialize: (Environment) -> void
28
+
29
+ def constant: (TypeName constant_name) -> Constant?
30
+
31
+ # Returns a set of constants defined under `module_name`.
32
+ # Returns `nil` if there is no module with given `module_name`.
33
+ #
34
+ def children: (TypeName module_name) -> Hash[Symbol, Constant]?
35
+
36
+ private
37
+
38
+ def constant_of_module: (TypeName name, Environment::ClassEntry | Environment::ModuleEntry) -> Constant
39
+
40
+ def constant_of_constant: (TypeName name, Environment::ConstantEntry) -> Constant
41
+ end
42
+
43
+ attr_reader builder: DefinitionBuilder
44
+ attr_reader table: Table
45
+ attr_reader context_constants_cache: Hash[context, Hash[Symbol, Constant]?]
46
+ attr_reader child_constants_cache: Hash[TypeName, Hash[Symbol, Constant]]
47
+
48
+ def initialize: (builder: DefinitionBuilder) -> void
49
+
50
+ # Resolves to `Constant` with given constant name `name` and `context`.
51
+ # Returns `nil` if the constant cannot be resolved from the context.
52
+ #
53
+ def resolve: (Symbol name, context: context) -> Constant?
54
+
55
+ # Returns the available all constants from `context`.
56
+ #
57
+ # Returns `nil` when the `context` is invalid.
58
+ def constants: (context) -> Hash[Symbol, Constant]?
59
+
60
+ # Resolves the module_name and constant name to `Constant`
61
+ #
62
+ # ```ruby
63
+ # A::B
64
+ # ^ <- module_name
65
+ # ^ <- constant_name
66
+ # ```
67
+ #
68
+ def resolve_child: (TypeName module_name, Symbol constant_name) -> Constant?
69
+
70
+ # Returns the table of all constants accessible with `::` (colon2) operator.
71
+ #
72
+ # * The constants under the module are included.
73
+ # * The constants under the ancestor modules are included.
74
+ # * The constants under the `::Object` class are not included.
75
+ # * The top level constants are not included.
76
+ #
77
+ def children: (TypeName module_name) -> Hash[Symbol, Constant]
78
+
79
+ private
80
+
81
+ def load_context_constants: (context) -> void
82
+
83
+ def load_child_constants: (TypeName) -> void
84
+
85
+ def constants_from_context: (context, constants: Hash[Symbol, Constant]) -> bool
86
+
87
+ def constants_from_ancestors: (TypeName, constants: Hash[Symbol, Constant]) -> void
88
+
89
+ def constants_itself: (context, constants: Hash[Symbol, Constant]) -> void
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,34 @@
1
+ module RBS
2
+ module Resolver
3
+ # `context` represents the module nesting structure.
4
+ #
5
+ # - `nil` means toplevel
6
+ # - A 2-tuple represents parent and the most inner module
7
+ # - `TypeName` is for a module
8
+ # - `false` is for unknown module
9
+ #
10
+ # Note that the `TypeName` must be an absolute type name.
11
+ #
12
+ # The following Ruby code has context of `[[nil, TypeName.parse("::Foo")], false]` where
13
+ #
14
+ # * `Foo` is a class defined in RBS file
15
+ # * `Bar` is not defined in RBS files
16
+ #
17
+ # ```ruby
18
+ # class Foo
19
+ # module Bar
20
+ # # Context here
21
+ # end
22
+ # end
23
+ # ```
24
+ #
25
+ # The unknown module (`false`) appears only in Ruby code.
26
+ # RBS modules/classes are always exists (or defines new module).
27
+ # Nesting a unknown module cannot happen in RBS.
28
+ #
29
+ # In Ruby this happens when the module/class is not declared in RBS files.
30
+ #
31
+ type context = [context, TypeName | false]
32
+ | nil
33
+ end
34
+ end
@@ -0,0 +1,61 @@
1
+ module RBS
2
+ module Resolver
3
+ # TypeNameResolver resolves given relative type name to absolute type name under a module nesting context.
4
+ #
5
+ # The type name resolution doesn't take account of ancestors of modules.
6
+ # It just ignores included modules and super classes.
7
+ #
8
+ class TypeNameResolver
9
+ def initialize: (Set[TypeName] all_names, Hash[TypeName, [TypeName, context]] aliases) -> void
10
+
11
+ def self.build: (Environment) -> instance
12
+
13
+ # Translates given type name to absolute type name
14
+ #
15
+ # Returns `nil` if cannot find associated type name.
16
+ # Module names in the type name are normalized.
17
+ #
18
+ def resolve: (TypeName, context: context) -> TypeName?
19
+
20
+ # Translates given type name to absolute type name
21
+ #
22
+ # Returns `false` if a cycle is detected while resolving aliases.
23
+ # Returns `nil` if the type name cannot be resolved.
24
+ #
25
+ def resolve_namespace: (TypeName, context: context) -> (TypeName | false | nil)
26
+
27
+ private
28
+
29
+ attr_reader all_names: Set[TypeName]
30
+
31
+ attr_reader aliases: Hash[TypeName, [TypeName, context]]
32
+
33
+ attr_reader cache: Hash[context, Hash[TypeName, TypeName?]]
34
+
35
+ # Returns the type name if it exists in `all_names` (normalized)
36
+ #
37
+ def has_type_name?: (TypeName) -> TypeName?
38
+
39
+ # Returns the type name if it is an alias (not normalized)
40
+ #
41
+ def aliased_name?: (TypeName) -> TypeName?
42
+
43
+ def try_cache: (TypeName, context) { () -> TypeName? } -> TypeName?
44
+
45
+ # Translates the head module name in the context and returns an absolute type name
46
+ #
47
+ # Returns `nil` if cannot find associated type name.
48
+ # The returned namespace may be an alias
49
+ #
50
+ def resolve_head_namespace: (Symbol, context) -> TypeName?
51
+
52
+ # Resolves the type name in the given context
53
+ #
54
+ def resolve_type_name: (Symbol, context) -> TypeName?
55
+
56
+ def resolve_namespace0: (TypeName, context, Set[TypeName]) -> (TypeName | false | nil)
57
+
58
+ def normalize_namespace: (TypeName, TypeName rhs, context, Set[TypeName]) -> (TypeName | false | nil)
59
+ end
60
+ end
61
+ end
data/sig/rewriter.rbs ADDED
@@ -0,0 +1,45 @@
1
+ module RBS
2
+ # Rewriter performs targeted character-range replacements on Buffer content.
3
+ #
4
+ # Unlike Writer which regenerates entire source from AST, Rewriter preserves
5
+ # everything outside the rewritten ranges, including non-documentation comments.
6
+ #
7
+ # Rewrite requests are buffered and applied all at once when `#string` is called.
8
+ #
9
+ class Rewriter
10
+ attr_reader buffer: Buffer
11
+
12
+ # Initialize with a toplevel buffer.
13
+ # Raises if the buffer has a parent (non-toplevel).
14
+ #
15
+ def initialize: (Buffer buffer) -> void
16
+
17
+ # Register a rewrite request for the given location.
18
+ #
19
+ def rewrite: (Location[untyped, untyped] location, String string) -> self
20
+
21
+ # Add a new comment before the earliest of the given locations.
22
+ #
23
+ def add_comment: (*Location[untyped, untyped] locations, content: String) -> self
24
+
25
+ # Replace an existing comment's content.
26
+ #
27
+ def replace_comment: (AST::Comment comment, content: String) -> self
28
+
29
+ # Delete an existing comment.
30
+ #
31
+ def delete_comment: (AST::Comment comment) -> self
32
+
33
+ # Apply all buffered rewrites and return the resulting string.
34
+ #
35
+ # Raises if any rewrite ranges overlap.
36
+ #
37
+ def string: () -> String
38
+
39
+ private
40
+
41
+ def format_comment: (String content, String indent) -> String
42
+
43
+ @rewrites: Array[[Location[untyped, untyped], String]]
44
+ end
45
+ end
@@ -0,0 +1,38 @@
1
+ module Bundler
2
+ class LockfileParser
3
+ def initialize: (String) -> void
4
+
5
+ def specs: () -> Array[LazySpecification]
6
+ end
7
+
8
+ class LazySpecification
9
+ def name: () -> String
10
+
11
+ def version: () -> String
12
+
13
+ def dependencies: () -> Array[Gem::Dependency]
14
+ end
15
+
16
+ class Dependency < Gem::Dependency
17
+ attr_reader autorequire: Array[String]?
18
+
19
+ attr_reader source: untyped
20
+ end
21
+
22
+ class Definition
23
+ def lockfile: () -> Pathname
24
+
25
+ def locked_gems: () -> LockfileParser
26
+
27
+ def dependencies: () -> Array[Dependency]
28
+ end
29
+
30
+ def self.default_lockfile: () -> Pathname
31
+
32
+ def self.definition: () -> Definition
33
+
34
+ module Source
35
+ class Gemspec
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ module Enumerable[unchecked out Elem] : _Each[Elem]
2
+ def each_slice: (2) { ([Elem, Elem]) -> void } -> void
3
+ | (2) -> Enumerator[[Elem, Elem], void]
4
+ | ...
5
+ end
@@ -0,0 +1,19 @@
1
+ module Gem
2
+ class Specification
3
+ attr_reader version (): Version
4
+
5
+ attr_reader gem_dir (): String
6
+
7
+ def self.find_by_name: (String name, *String requirements) -> instance
8
+
9
+ def dependencies: () -> Array[Dependency]
10
+ end
11
+
12
+ class Dependency
13
+ def name: () -> String
14
+ end
15
+
16
+ module ::Kernel
17
+ def self?.gem: (String, *String) -> void
18
+ end
19
+ end