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
data/sig/diff.rbs ADDED
@@ -0,0 +1,28 @@
1
+ module RBS
2
+ class Diff
3
+ @type_name: TypeName
4
+ @library_options: RBS::CLI::LibraryOptions
5
+ @after_path: Array[String]
6
+ @before_path: Array[String]
7
+ @detail: boolish
8
+
9
+ def initialize: (
10
+ type_name: TypeName,
11
+ library_options: RBS::CLI::LibraryOptions,
12
+ ?after_path: Array[String],
13
+ ?before_path: Array[String],
14
+ ?detail: boolish
15
+ ) -> void
16
+
17
+ def each_diff: () { (String before, String after) -> void } -> void
18
+
19
+ private def each_diff_by: (Symbol kind, Hash[::Symbol, Definition::Method] before_methods, Hash[::Symbol, Definition::Method] after_methods) { (String before, String after) -> void } -> void
20
+ private def build_methods: (Array[String] path) -> [ Hash[::Symbol, Definition::Method], Hash[::Symbol, Definition::Method] , Hash[Symbol, Constant]]
21
+ private def build_env: (Array[String] path) -> Environment
22
+ private def build_builder: (Environment env) -> DefinitionBuilder
23
+ private def definition_method_to_s: (Symbol key, Symbol kind, Definition::Method definition_method) -> String?
24
+ private def each_diff_methods: (Symbol kind, Hash[Symbol, Definition::Method], Hash[Symbol, Definition::Method]) { (String before, String after) -> void } -> void
25
+ private def each_diff_constants: (Hash[Symbol, Constant] before_constants, Hash[Symbol, Constant] after_constants) { (String before, String after) -> void } -> void
26
+ private def constant_to_s: (Constant?) -> String
27
+ end
28
+ end
@@ -0,0 +1,77 @@
1
+ module RBS
2
+ module AST
3
+ module Directives
4
+ type t = Use | ResolveTypeNames
5
+
6
+ class Base
7
+ end
8
+
9
+ # ```
10
+ # use Foo, Foo::Bar as FBar, Foo:Baz::*
11
+ # ```
12
+ #
13
+ class Use < Base
14
+ type clause = SingleClause | WildcardClause
15
+
16
+ class SingleClause
17
+ # Foo::Bar
18
+ # ^^^^^^^^ type_name
19
+ #
20
+ # Foo::Bar as X
21
+ # ^^ keyword
22
+ # ^ new_name
23
+ #
24
+ type loc = Location[:type_name, :keyword | :new_name]
25
+
26
+ attr_reader type_name: TypeName
27
+
28
+ attr_reader new_name: Symbol?
29
+
30
+ attr_reader location: loc?
31
+
32
+ def initialize: (type_name: TypeName, new_name: Symbol?, location: loc?) -> void
33
+ end
34
+
35
+ class WildcardClause
36
+ # Foo::Bar::*
37
+ # ^^^^^^^^^^ namespace
38
+ # ^ star
39
+ #
40
+ type loc = Location[:namespace | :star, bot]
41
+
42
+ attr_reader namespace: Namespace
43
+
44
+ attr_reader location: loc?
45
+
46
+ def initialize: (namespace: Namespace, location: loc?) -> void
47
+ end
48
+
49
+ # use Foo
50
+ # ^^^ keyword
51
+ type loc = Location[:keyword, bot]
52
+
53
+ attr_reader clauses: Array[clause]
54
+
55
+ attr_reader location: loc?
56
+
57
+ def initialize: (clauses: Array[clause], location: loc?) -> void
58
+ end
59
+
60
+ class ResolveTypeNames < Base
61
+ # ```
62
+ # # resolve-type-names: false
63
+ # ^^^^^^^^^^^^^^^^^^ keyword
64
+ # ^ colon
65
+ # ^^^^^ value
66
+ # ```
67
+ type loc = Location[:keyword | :colon | :value, bot]
68
+
69
+ attr_reader location: loc?
70
+
71
+ attr_reader value: bool
72
+
73
+ def initialize: (value: bool, location: loc?) -> void
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,50 @@
1
+ module RBS
2
+ class Environment
3
+ # Represents a class entry in the environment
4
+ #
5
+ # ```rb
6
+ # entry = ClassEntry.new(TypeName.parse("::String"))
7
+ # entry << [nil, declaration]
8
+ # entry << [[nil, TypeName.parse("::Kernel")], declaration]
9
+ # ```
10
+ class ClassEntry
11
+ attr_reader name: TypeName
12
+
13
+ type declaration = AST::Declarations::Class | AST::Ruby::Declarations::ClassDecl
14
+
15
+ type context_decl = [Resolver::context, declaration]
16
+
17
+ attr_reader context_decls: Array[context_decl]
18
+
19
+ @primary_decl: declaration?
20
+
21
+ def initialize: (TypeName) -> void
22
+
23
+ def <<: (context_decl) -> self
24
+
25
+ def each_decl: { (declaration) -> void } -> void
26
+ | () -> Enumerator[declaration]
27
+
28
+ # Returns true if the entry doesn't have any declaration
29
+ #
30
+ def empty?: () -> bool
31
+
32
+ # Find the *primary* declaration of the class
33
+ #
34
+ # * Returns the first declaration with super class
35
+ # * Returns the first declaration if the declaration doesn't have super class
36
+ #
37
+ %a{pure} def primary_decl: () -> declaration
38
+
39
+ # Returns the generics declaration
40
+ #
41
+ def type_params: () -> Array[AST::TypeParam]
42
+
43
+ # Confirms if the type parameters in the declaration are compatible
44
+ #
45
+ # * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
46
+ #
47
+ def validate_type_params: () -> void
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,50 @@
1
+ module RBS
2
+ class Environment
3
+ # Represents a class entry in the environment
4
+ #
5
+ # ```rb
6
+ # entry = ModuleEntry.new(TypeName.parse("::Kernel"))
7
+ # entry << [nil, declaration]
8
+ # entry << [[nil, TypeName.parse("::Object")], declaration]
9
+ # ```
10
+ #
11
+ class ModuleEntry
12
+ attr_reader name: TypeName
13
+
14
+ type declaration = AST::Declarations::Module | AST::Ruby::Declarations::ModuleDecl
15
+
16
+ type context_decl = [Resolver::context, declaration]
17
+
18
+ attr_reader context_decls: Array[context_decl]
19
+
20
+ def initialize: (TypeName) -> void
21
+
22
+ def <<: (context_decl) -> self
23
+
24
+ def each_decl: { (declaration) -> void } -> void
25
+ | () -> Enumerator[declaration]
26
+
27
+ # Returns true if the entry doesn't have any declaration
28
+ #
29
+ def empty?: () -> bool
30
+
31
+ # Returns the first declaration
32
+ #
33
+ # This method helps using the class with `ClassEntry` objects.
34
+ #
35
+ def primary_decl: () -> declaration
36
+
37
+ # Returns the generics declaration
38
+ #
39
+ def type_params: () -> Array[AST::TypeParam]
40
+
41
+ # Confirms if the type parameters in the declaration are compatible
42
+ #
43
+ # * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
44
+ #
45
+ def validate_type_params: () -> void
46
+
47
+ def self_types: () -> Array[AST::Declarations::Module::Self]
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,286 @@
1
+ module RBS
2
+ class Environment
3
+ type module_decl = AST::Declarations::Class | AST::Declarations::Module
4
+
5
+ # Name of object, it's (single) declaration, and the outer module declarations
6
+ #
7
+ class SingleEntry[N, D]
8
+ attr_reader name: N
9
+ attr_reader decl: D
10
+ attr_reader context: Resolver::context
11
+
12
+ def initialize: (name: N, decl: D, context: Resolver::context) -> void
13
+ end
14
+
15
+ class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
16
+ end
17
+
18
+ class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
19
+ end
20
+
21
+ class InterfaceEntry < SingleEntry[TypeName, AST::Declarations::Interface]
22
+ end
23
+
24
+ class TypeAliasEntry < SingleEntry[TypeName, AST::Declarations::TypeAlias]
25
+ end
26
+
27
+ class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant | AST::Ruby::Declarations::ConstantDecl]
28
+ end
29
+
30
+ class GlobalEntry < SingleEntry[Symbol, AST::Declarations::Global]
31
+ end
32
+
33
+ # Top level declarations
34
+ def declarations: () -> Array[AST::Ruby::Declarations::t | AST::Declarations::t]
35
+
36
+ # Array of source objects loaded in the environment
37
+ #
38
+ attr_reader sources: Array[Source::t]
39
+
40
+ # Class declarations
41
+ attr_reader class_decls: Hash[TypeName, ModuleEntry | ClassEntry]
42
+
43
+ attr_reader class_alias_decls: Hash[TypeName, ModuleAliasEntry | ClassAliasEntry]
44
+
45
+ # Interface declarations
46
+ attr_reader interface_decls: Hash[TypeName, InterfaceEntry]
47
+
48
+ # Type alias declarations
49
+ attr_reader type_alias_decls: Hash[TypeName, TypeAliasEntry]
50
+
51
+ # Constant declarations
52
+ attr_reader constant_decls: Hash[TypeName, ConstantEntry]
53
+
54
+ # Global declarations
55
+ attr_reader global_decls: Hash[Symbol, GlobalEntry]
56
+
57
+ def initialize: () -> void
58
+
59
+ def initialize_copy: (Environment) -> void
60
+
61
+ # Construct an environment from EnvironmentLoader
62
+ #
63
+ def self.from_loader: (EnvironmentLoader) -> Environment
64
+
65
+ def add_source: (Source::t) -> void
66
+
67
+ def each_rbs_source: () { (Source::RBS) -> void } -> void
68
+ | () -> Enumerator[Source::RBS]
69
+
70
+ def each_ruby_source: () { (Source::Ruby) -> void } -> void
71
+ | () -> Enumerator[Source::Ruby]
72
+
73
+ # Insert a declaration into the environment
74
+ #
75
+ private def insert_rbs_decl: (AST::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
76
+
77
+ # Insert a declaration into the environment
78
+ #
79
+ private def insert_ruby_decl: (AST::Ruby::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
80
+
81
+ # Resolve all type names in the environment to absolute type names.
82
+ # Relative type name will be left if absolute type name cannot be found.
83
+ #
84
+ # When `only` is given, it skips other _top-level_ declarations not included in the collection.
85
+ # This helps running resolution faster in the case of _partial updates_.
86
+ #
87
+ def resolve_type_names: (?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?) -> Environment
88
+
89
+ def resolve_signature: (
90
+ Resolver::TypeNameResolver,
91
+ UseMap::Table,
92
+ Array[AST::Directives::t],
93
+ Array[AST::Declarations::t],
94
+ ?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?
95
+ ) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
96
+
97
+ def inspect: () -> String
98
+
99
+ def buffers: () -> Array[Buffer]
100
+
101
+ # Remove declarations and directives that are loaded from `buffers`
102
+ #
103
+ def unload: (Set[Pathname] paths) -> Environment
104
+ | %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
105
+
106
+ # Returns true if an interface with the type name is defined
107
+ #
108
+ def interface_name?: (TypeName) -> bool
109
+
110
+ # Returns true if a type alias with the type name is defined
111
+ #
112
+ def type_alias_name?: (TypeName) -> bool
113
+
114
+ # Returns true if a module or class with the type name is defined
115
+ #
116
+ def module_name?: (TypeName) -> bool
117
+
118
+ # Returns true if the type name is defined
119
+ #
120
+ def type_name?: (TypeName) -> bool
121
+
122
+ # Returns if a constant of the name is defined
123
+ #
124
+ def constant_name?: (TypeName) -> bool
125
+
126
+ # Returns true if the type name is defined by constant declaration
127
+ #
128
+ def constant_decl?: (TypeName) -> bool
129
+
130
+ # Returns true if the type name is defined by class declaration
131
+ #
132
+ def class_decl?: (TypeName) -> bool
133
+
134
+ # Returns true if the type name is defined by module declaration
135
+ #
136
+ def module_decl?: (TypeName) -> bool
137
+
138
+ # Returns true if the type name is a module alias
139
+ #
140
+ def module_alias?: (TypeName) -> bool
141
+
142
+ # Returns true if the type name is a class alias
143
+ def class_alias?: (TypeName) -> bool
144
+
145
+ # Returns the entry for the class name
146
+ #
147
+ # Returns `nil` when:
148
+ #
149
+ # * The type name is not found
150
+ # * The type name is not a class
151
+ #
152
+ # It normalizes when `normalized: true` is given -- returns `ClassEntry` or `nil`.
153
+ #
154
+ def class_entry: (TypeName, normalized: true) -> ClassEntry?
155
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | nil)
156
+
157
+ # Returns ClassEntry if the class definition is found, normalized in case of alias
158
+ #
159
+ %a{deprecated: Use `class_entry(type_name, normalized: true)` instead. }
160
+ def normalized_class_entry: (TypeName) -> ClassEntry?
161
+
162
+ # Returns the entry for the module name
163
+ #
164
+ # Returns `nil` when:
165
+ #
166
+ # * The type name is not found
167
+ # * The type name is not a module
168
+ #
169
+ # It normalizes when `normalized: true` is given -- returns `ModuleEntry` or `nil`.
170
+ #
171
+ def module_entry: (TypeName, normalized: true) -> ModuleEntry?
172
+ | (TypeName, ?normalized: bool) -> (ModuleEntry | ModuleAliasEntry | nil)
173
+
174
+ # Returns ModuleEntry if the module definition is found, normalized in case of alias
175
+ #
176
+ %a{deprecated: Use `module_entry(type_name, normalized: true)` instead. }
177
+ def normalized_module_entry: (TypeName) -> ModuleEntry?
178
+
179
+ # Returns the entry for the type name
180
+ #
181
+ # The entry is one of ClassEntry, ModuleEntry, ConstantEntry, ClassAliasEntry, or ModuleAliasEntry.
182
+ # When `normalized: true` is given, it returns normalized entry -- one of ClassEntry, ModuleEntry, or ConstantEntry.
183
+ #
184
+ # Returns `nil` if not found.
185
+ #
186
+ def constant_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | ConstantEntry | nil)
187
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | ConstantEntry | nil)
188
+
189
+ # Returns ClassEntry or ModuleEntry if the class/module definition is found
190
+ #
191
+ # Normalizes when `normalized: true` is given.
192
+ #
193
+ def module_class_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | nil)
194
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | nil)
195
+
196
+ %a{deprecated: Use `module_class_entry(type_name, normalized: true)` instead. }
197
+ def normalized_module_class_entry: (TypeName) -> (ClassEntry | ModuleEntry | nil)
198
+
199
+ @normalize_module_name_cache: Hash[TypeName, TypeName | false | nil]
200
+
201
+ # Returns the original module name that is defined with `module` declaration
202
+ #
203
+ # * Calls `#absolute!` for relative module names
204
+ # * Returns `nil` if the rhs name cannot be found
205
+ # * Returns `false` if the name is cyclic
206
+ #
207
+ # Note that this method assumes the declarations have resolved type names.
208
+ #
209
+ def normalize_module_name?: (TypeName) -> (TypeName | nil | false)
210
+
211
+ # Returns the original module name that is defined with `module`/`class` declaration
212
+ #
213
+ # * Raises an error if given type name is not module/class
214
+ # * Calls `#absolute!` for relative module names
215
+ # * Returns the name itself if the name cannot be normalized to a class/module
216
+ #
217
+ # Note that this method assumes the declarations have resolved type names.
218
+ #
219
+ def normalize_module_name: (TypeName) -> TypeName
220
+
221
+ # Returns the original module name that is defined with `module`/`class` declaration
222
+ #
223
+ # * Raises an error if given type name is not a module/class
224
+ def normalize_module_name!: (TypeName) -> TypeName
225
+
226
+ # Returns a normalized module/class name or a type name with a normalized namespace
227
+ #
228
+ # * Calls `#absolute!` for relative module names
229
+ # * Returns `nil` if the typename cannot be found
230
+ # * Returns `false` if the name is cyclic
231
+ #
232
+ # Note that this method assumes the declarations have resolved type names.
233
+ #
234
+ def normalize_type_name?: (TypeName) -> (TypeName | nil | false)
235
+
236
+ # Normalize the type name or raises an error
237
+ #
238
+ # Note that this method assumes the declarations have resolved type names.
239
+ #
240
+ def normalize_type_name!: (TypeName) -> TypeName
241
+
242
+ # Returns a normalized module/class name or a type name with a normalized namespace
243
+ #
244
+ # * Calls `#absolute!` for relative module names
245
+ # * Returns the typename itself if the name cannot be normalized
246
+ #
247
+ # Note that this method assumes the declarations have resolved type names.
248
+ #
249
+ def normalize_type_name: (TypeName) -> TypeName
250
+
251
+ # Returns `true` if given type name is normalized
252
+ #
253
+ def normalized_type_name?: (TypeName) -> bool
254
+
255
+ # Returns the given type name if it's normalized, or raises
256
+ #
257
+ def normalized_type_name!: (TypeName) -> TypeName
258
+
259
+ # Runs generics type params validation over each class definitions
260
+ def validate_type_params: () -> void
261
+
262
+ private
263
+
264
+ # Returns a context for inside given decls
265
+ #
266
+ def resolver_context: (*module_decl) -> Resolver::context
267
+
268
+ def append_context: (Resolver::context, module_decl) -> Resolver::context
269
+
270
+ def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl, context: Resolver::context, prefix: Namespace) -> AST::Declarations::t
271
+
272
+ def resolve_member: (Resolver::TypeNameResolver, UseMap map, AST::Members::t, context: Resolver::context) -> AST::Members::t
273
+
274
+ def resolve_method_type: (Resolver::TypeNameResolver, UseMap map, RBS::MethodType, context: Resolver::context) -> RBS::MethodType
275
+
276
+ def resolve_type_params: (Resolver::TypeNameResolver resolver, UseMap map, Array[AST::TypeParam], context: Resolver::context) -> Array[AST::TypeParam]
277
+
278
+ def resolve_ruby_decl: (Resolver::TypeNameResolver, AST::Ruby::Declarations::t, context: Resolver::context, prefix: Namespace) -> AST::Ruby::Declarations::t
279
+
280
+ def resolve_ruby_member: (Resolver::TypeNameResolver, AST::Ruby::Members::t, context: Resolver::context) -> AST::Ruby::Members::t
281
+
282
+ def absolute_type: (Resolver::TypeNameResolver, UseMap? map, Types::t, context: Resolver::context) -> Types::t
283
+
284
+ def absolute_type_name: (Resolver::TypeNameResolver, UseMap? map, TypeName, context: Resolver::context) -> TypeName
285
+ end
286
+ end
@@ -0,0 +1,111 @@
1
+ module RBS
2
+ # EnvironmentLoader is an object to load RBS files from filesystem.
3
+ #
4
+ # Set up your configuration through repository and `#add` method.
5
+ #
6
+ # ```ruby
7
+ # # Set up the repository to load library RBSs from.
8
+ # repo = RBS::Repository.default
9
+ # repo.add(Pathname("vendor/rbs/gem-rbs"))
10
+ # repo.add(Pathname("vendor/rbs/internal-rbs"))
11
+ #
12
+ # loader = RBS::EnvironmentLoader.new(repository: repo)
13
+ #
14
+ # # Add libraries to load RBS files.
15
+ # loader.add(library: "minitest")
16
+ # loader.add(library: "rbs", version: "1.0.0")
17
+ #
18
+ # # Add dirs to load RBS files from.
19
+ # loader.add(path: Pathname("sig"))
20
+ #
21
+ # # Load RBSs into an environment.
22
+ # environment = RBS::Environment.new()
23
+ # loader.load(env: environment)
24
+ # ```
25
+ #
26
+ class EnvironmentLoader
27
+ class UnknownLibraryError < StandardError
28
+ attr_reader library: Library
29
+
30
+ def initialize: (lib: Library) -> void
31
+ end
32
+
33
+ class Library
34
+ attr_reader name: String
35
+ attr_reader version: String?
36
+
37
+ def initialize: (name: String, version: String?) -> void
38
+ end
39
+
40
+ include FileFinder
41
+
42
+ DEFAULT_CORE_ROOT: Pathname
43
+
44
+ attr_reader core_root: Pathname?
45
+ attr_reader repository: Repository
46
+
47
+ attr_reader libs: Set[Library]
48
+ attr_reader dirs: Array[Pathname]
49
+
50
+ # The source where the RBS comes from.
51
+ #
52
+ # `:core` means it is part of core library.
53
+ # `Library` means it is from library.
54
+ # `Pathname` means it is loaded from a directory.
55
+ #
56
+ type source = :core
57
+ | Library
58
+ | Pathname
59
+
60
+ # Accepts two optional keyword arguments.
61
+ #
62
+ # `core_root` is the path to the directory with RBSs for core classes.
63
+ # The default value is the core library included in RBS gem. (EnvironmentLoader::DEFAULT_CORE_ROOT)
64
+ # Passing `nil` means it skips loading core class definitions.
65
+ #
66
+ # `repository` is the repository for library classes.
67
+ # The default value is repository only with stdlib classes. (Repository.new)
68
+ #
69
+ def initialize: (?core_root: Pathname?, ?repository: Repository) -> void
70
+
71
+ # Add a path or library to load RBSs from.
72
+ #
73
+ # `path` can be a file or a directory.
74
+ # All `.rbs` files from the given directory will be loaded.
75
+ # Specifying a file will load the file regardless the extension of the file is.
76
+ #
77
+ # `library` can be a name of a gem.
78
+ # Specifying `nil` to `version` will load any version available.
79
+ # It first tries to load RBS files from gem with specified version.
80
+ # If RBS files cannot be found in the gem, it tries to load RBSs from repository.
81
+ #
82
+ def add: (path: Pathname) -> void
83
+ | (library: String, version: String?, ?resolve_dependencies: boolish) -> void
84
+
85
+ def resolve_dependencies: (library: String, version: String?) -> void
86
+
87
+ # Add repository path and libraries via rbs_collection.lock.yaml.
88
+ def add_collection: (Collection::Config::Lockfile lockfile) -> void
89
+
90
+ # This is helper function to test if RBS for a library is available or not.
91
+ #
92
+ def has_library?: (library: String, version: String?) -> bool
93
+
94
+ # Add all declarations to environment.
95
+ #
96
+ # Raises `UnknownLibraryError` if RBS cannot be loaded from a library.
97
+ #
98
+ # Returns an array of tuples of the declaration, path to the file, and the source.
99
+ #
100
+ def load: (env: Environment) -> Array[[AST::Declarations::t, Pathname, source]]
101
+
102
+ # Returns a pair of spec and path for a gem with RBS.
103
+ # Returns nil if the gem is not installed, or the gem doesn't provide RBS.
104
+ #
105
+ def self.gem_sig_path: (String name, String? version) -> [Gem::Specification, Pathname]?
106
+
107
+ def each_signature: () { (source, Pathname, Buffer, Array[AST::Declarations::t], Array[AST::Directives::t]) -> void } -> void
108
+
109
+ def each_dir: { (source, Pathname) -> void } -> void
110
+ end
111
+ end
@@ -0,0 +1,65 @@
1
+ module RBS
2
+ # EnvironmentWalker provides topological sort of class/module definitions.
3
+ #
4
+ # If a method, attribute, or ancestor in a class definition have a reference to another class, it is dependency.
5
+ #
6
+ # ```rb
7
+ # walker = EnvironmentWalker.new(env: env)
8
+ #
9
+ # walker.each_strongly_connected_component do |scc|
10
+ # # Yields an array of strongly connected components.
11
+ # end
12
+ # ```
13
+ #
14
+ # The `#only_ancestors!` method limits the dependency only to ancestors.
15
+ # Only super classes and included modules are dependencies with the option.
16
+ # This is useful to calculate the dependencies of class hierarchy.
17
+ #
18
+ # ```rb
19
+ # walker = EnvironmentWalker.new(env: env).only_ancestors!
20
+ #
21
+ # walker.each_strongly_connected_component do |scc|
22
+ # # Yields an array of strongly connected components.
23
+ # end
24
+ # ```
25
+ #
26
+ class EnvironmentWalker
27
+ class InstanceNode
28
+ attr_reader type_name: TypeName
29
+ def initialize: (type_name: TypeName) -> void
30
+ end
31
+
32
+ class SingletonNode
33
+ attr_reader type_name: TypeName
34
+ def initialize: (type_name: TypeName) -> void
35
+ end
36
+
37
+ class TypeNameNode
38
+ attr_reader type_name: TypeName
39
+ def initialize: (type_name: TypeName) -> void
40
+ end
41
+
42
+ attr_reader env: Environment
43
+ attr_reader only_ancestors: bool
44
+ attr_reader builder: DefinitionBuilder
45
+
46
+ def initialize: (env: Environment) -> void
47
+
48
+ def only_ancestors!: (?bool only) -> self
49
+
50
+ def only_ancestors?: () -> bool
51
+
52
+ type node = InstanceNode | SingletonNode | TypeNameNode
53
+ include TSort[node]
54
+
55
+ def tsort_each_node: () { (node) -> void } -> void
56
+
57
+ def tsort_each_child: (node) { (node) -> void } -> void
58
+
59
+ private
60
+
61
+ def each_type_name: (Types::t) { (TypeName) -> void } -> void
62
+
63
+ def each_type_node: (Types::t) { (node) -> void } -> void
64
+ end
65
+ end