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/schema/types.json ADDED
@@ -0,0 +1,317 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "definitions": {
4
+ "base": {
5
+ "title": "Base types",
6
+ "type": "object",
7
+ "properties": {
8
+ "class": {
9
+ "type": "string",
10
+ "enum": [
11
+ "bool",
12
+ "void",
13
+ "untyped",
14
+ "nil",
15
+ "top",
16
+ "bot",
17
+ "self",
18
+ "instance",
19
+ "class"
20
+ ]
21
+ },
22
+ "location": {
23
+ "$ref": "location.json"
24
+ }
25
+ },
26
+ "required": ["class", "location"]
27
+ },
28
+ "variable": {
29
+ "title": "Type variables: `X`, `Y`, `Elem`, `Key`, ...",
30
+ "type": "object",
31
+ "properties": {
32
+ "class": {
33
+ "type": "string",
34
+ "enum": ["variable"]
35
+ },
36
+ "name": {
37
+ "type": "string"
38
+ },
39
+ "location": {
40
+ "$ref": "location.json"
41
+ }
42
+ },
43
+ "required": ["class", "name", "location"]
44
+ },
45
+ "classSingleton": {
46
+ "title": "Class singleton type: `singleton(Object)`, `singleton(::Kernel)`, ...",
47
+ "type": "object",
48
+ "properties": {
49
+ "class": {
50
+ "type": "string",
51
+ "enum": ["class_singleton"]
52
+ },
53
+ "name": {
54
+ "type": "string"
55
+ },
56
+ "location": {
57
+ "$ref": "location.json"
58
+ }
59
+ },
60
+ "required": ["class", "name", "location"]
61
+ },
62
+ "classInstance": {
63
+ "title": "Class instance type: `String`, `::Enumerable`, `Array[::Symbol]`, ...",
64
+ "type": "object",
65
+ "properties": {
66
+ "class": {
67
+ "type": "string",
68
+ "enum": ["class_instance"]
69
+ },
70
+ "name": {
71
+ "type": "string"
72
+ },
73
+ "args": {
74
+ "type": "array",
75
+ "items": {
76
+ "$ref": "#"
77
+ }
78
+ },
79
+ "location": {
80
+ "$ref": "location.json"
81
+ }
82
+ },
83
+ "required": ["class", "name", "args", "location"]
84
+ },
85
+ "interface": {
86
+ "title": "Interface type: `_Each[String, void]`, `_ToStr`, ...",
87
+ "type": "object",
88
+ "properties": {
89
+ "class": {
90
+ "type": "string",
91
+ "enum": ["interface"]
92
+ },
93
+ "name": {
94
+ "type": "string"
95
+ },
96
+ "args": {
97
+ "type": "array",
98
+ "items": {
99
+ "$ref": "#"
100
+ }
101
+ },
102
+ "location": {
103
+ "$ref": "location.json"
104
+ }
105
+ },
106
+ "required": ["class", "name", "args", "location"]
107
+ },
108
+ "alias": {
109
+ "title": "Type alias: `u`, `ty`, `json`, `list[Integer]`, ...",
110
+ "type": "object",
111
+ "properties": {
112
+ "class": {
113
+ "type": "string",
114
+ "enum": ["alias"]
115
+ },
116
+ "name": {
117
+ "type": "string"
118
+ },
119
+ "args": {
120
+ "type": "array",
121
+ "items": {
122
+ "$ref": "#"
123
+ }
124
+ },
125
+ "location": {
126
+ "$ref": "location.json"
127
+ }
128
+ },
129
+ "required": ["class", "name", "args", "location"]
130
+ },
131
+ "tuple": {
132
+ "title": "Tuple type: `[Foo, bar]`, ...",
133
+ "type": "object",
134
+ "properties": {
135
+ "class": {
136
+ "type": "string",
137
+ "enum": ["tuple"]
138
+ },
139
+ "types": {
140
+ "type": "array",
141
+ "items": {
142
+ "$ref": "#"
143
+ }
144
+ },
145
+ "location": {
146
+ "$ref": "location.json"
147
+ }
148
+ },
149
+ "required": ["class", "types", "location"]
150
+ },
151
+ "record": {
152
+ "title": "Record type: `{ id: Integer, email: String }`, ...",
153
+ "type": "object",
154
+ "properties": {
155
+ "class": {
156
+ "type": "string",
157
+ "enum": ["record"]
158
+ },
159
+ "fields": {
160
+ "type": "object",
161
+ "additionalProperties": {
162
+ "$ref": "#"
163
+ }
164
+ },
165
+ "location": {
166
+ "$ref": "location.json"
167
+ }
168
+ },
169
+ "required": ["class", "fields", "location"]
170
+ },
171
+ "optional": {
172
+ "title": "Optional types: `Integer?`, ...",
173
+ "type": "object",
174
+ "properties": {
175
+ "class": {
176
+ "type": "string",
177
+ "enum": ["optional"]
178
+ },
179
+ "type": {
180
+ "$ref": "#"
181
+ },
182
+ "location": {
183
+ "$ref": "location.json"
184
+ }
185
+ },
186
+ "required": ["class", "type", "location"]
187
+ },
188
+ "union": {
189
+ "title": "Union types: `Integer | String`, ...",
190
+ "type": "object",
191
+ "properties": {
192
+ "class": {
193
+ "type": "string",
194
+ "enum": ["union"]
195
+ },
196
+ "types": {
197
+ "type": "array",
198
+ "items": {
199
+ "$ref": "#"
200
+ }
201
+ },
202
+ "location": {
203
+ "$ref": "location.json"
204
+ }
205
+ },
206
+ "required": ["class", "types", "location"]
207
+ },
208
+ "intersection": {
209
+ "title": "Intersection types: `Integer & String`, ...",
210
+ "type": "object",
211
+ "properties": {
212
+ "class": {
213
+ "type": "string",
214
+ "enum": ["intersection"]
215
+ },
216
+ "types": {
217
+ "type": "array",
218
+ "items": {
219
+ "$ref": "#"
220
+ }
221
+ },
222
+ "location": {
223
+ "$ref": "location.json"
224
+ }
225
+ },
226
+ "required": ["class", "types", "location"]
227
+ },
228
+ "proc": {
229
+ "title": "Proc types: `^() -> void`, ...",
230
+ "type": "object",
231
+ "properties": {
232
+ "class": {
233
+ "type": "string",
234
+ "enum": ["proc"]
235
+ },
236
+ "type": {
237
+ "$ref": "function.json"
238
+ },
239
+ "location": {
240
+ "$ref": "location.json"
241
+ },
242
+ "block": {
243
+ "oneOf": [
244
+ { "$ref": "methodType.json#/definitions/block" },
245
+ { "type": "null" }
246
+ ]
247
+ },
248
+ "self_type": {
249
+ "oneOf": [
250
+ { "$ref": "#" },
251
+ { "type": "null" }
252
+ ]
253
+ }
254
+ },
255
+ "required": ["class", "type", "location", "block", "self_type"]
256
+ },
257
+ "literal": {
258
+ "title": "Literal types: `1`, `:foo`, `\"foo\"`, ...",
259
+ "type": "object",
260
+ "properties": {
261
+ "class": {
262
+ "type": "string",
263
+ "enum": ["literal"]
264
+ },
265
+ "literal": {
266
+ "type": "string"
267
+ },
268
+ "location": {
269
+ "$ref": "location.json"
270
+ }
271
+ },
272
+ "required": ["class", "literal", "location"]
273
+ }
274
+ },
275
+ "title": "Type",
276
+ "oneOf": [
277
+ {
278
+ "$ref": "#/definitions/base"
279
+ },
280
+ {
281
+ "$ref": "#/definitions/variable"
282
+ },
283
+ {
284
+ "$ref": "#/definitions/classInstance"
285
+ },
286
+ {
287
+ "$ref": "#/definitions/classSingleton"
288
+ },
289
+ {
290
+ "$ref": "#/definitions/interface"
291
+ },
292
+ {
293
+ "$ref": "#/definitions/alias"
294
+ },
295
+ {
296
+ "$ref": "#/definitions/tuple"
297
+ },
298
+ {
299
+ "$ref": "#/definitions/record"
300
+ },
301
+ {
302
+ "$ref": "#/definitions/union"
303
+ },
304
+ {
305
+ "$ref": "#/definitions/intersection"
306
+ },
307
+ {
308
+ "$ref": "#/definitions/optional"
309
+ },
310
+ {
311
+ "$ref": "#/definitions/proc"
312
+ },
313
+ {
314
+ "$ref": "#/definitions/literal"
315
+ }
316
+ ]
317
+ }
@@ -0,0 +1,163 @@
1
+ module RBS
2
+ class DefinitionBuilder
3
+ # AncestorBuilder calculates the ancestors of a class or module.
4
+ #
5
+ class AncestorBuilder
6
+ # OneAncestors represents a list of _direct_ ancestors of a type name
7
+ #
8
+ # _Direct_ ancestors is defined as follows:
9
+ #
10
+ # * Super class is a direct ancestor
11
+ # * Self type constraints are direct ancestors
12
+ # * Mixin modules are direct ancestors
13
+ # * Mixin interfaces are direct ancestors
14
+ #
15
+ # The optional attributes are defined by the type of the ancestors object, one of the following five groups:
16
+ #
17
+ # 1. Instance of a class -- with super_class, included_modules, included_interfaces, and prepended_modules
18
+ # 2. Instance of a module -- with self_types, included_modules, included_interfaces, and prepended_modules
19
+ # 3. Singleton of a class or module -- with super_class, extended_modules, and extended_interfaces
20
+ # 4. Interface -- with included_interfaces
21
+ #
22
+ class OneAncestors
23
+ attr_reader type_name: TypeName
24
+ attr_reader params: Array[Symbol]?
25
+
26
+ # Returns super_class ancestor if specified
27
+ #
28
+ # * Always `nil` if this is not a class.
29
+ #
30
+ attr_reader super_class: Definition::Ancestor::t?
31
+
32
+ # Returns list of _self type constraints_ of a module
33
+ #
34
+ # * Returns `nil` if it is not a module instance.
35
+ #
36
+ attr_reader self_types: Array[Definition::Ancestor::Instance]?
37
+
38
+ # Returns the list of included modules
39
+ #
40
+ # * Returns `nil` if it is an interface or it is a singleton.
41
+ #
42
+ attr_reader included_modules: Array[Definition::Ancestor::Instance]?
43
+
44
+ # Returns the list of included interfaces
45
+ #
46
+ # * Returns `nil` it it is a singleton.
47
+ #
48
+ attr_reader included_interfaces: Array[Definition::Ancestor::Instance]?
49
+
50
+ # Returns the list of prepended modules
51
+ #
52
+ # * Returns `nil` if it is an interface or it is a singleton.
53
+ #
54
+ attr_reader prepended_modules: Array[Definition::Ancestor::Instance]?
55
+
56
+ # Returns the list of extended modules
57
+ #
58
+ # * Returns `nil` if it is an interface or it is an instance.
59
+ #
60
+ attr_reader extended_modules: Array[Definition::Ancestor::Instance]?
61
+
62
+ # Returns the list of extended interfaces
63
+ #
64
+ # * Returns `nil` if it is an interface or it is an instance.
65
+ #
66
+ attr_reader extended_interfaces: Array[Definition::Ancestor::Instance]?
67
+
68
+ def initialize: (type_name: TypeName,
69
+ params: Array[Symbol]?,
70
+ super_class: Definition::Ancestor::t?,
71
+ self_types: Array[Definition::Ancestor::Instance]?,
72
+ included_modules: Array[Definition::Ancestor::Instance]?,
73
+ included_interfaces: Array[Definition::Ancestor::Instance]?,
74
+ prepended_modules: Array[Definition::Ancestor::Instance]?,
75
+ extended_modules: Array[Definition::Ancestor::Instance]?,
76
+ extended_interfaces: Array[Definition::Ancestor::Instance]?) -> void
77
+
78
+ def each_ancestor: { (Definition::Ancestor::t) -> void } -> void
79
+ | -> Enumerator[Definition::Ancestor::t, void]
80
+
81
+ # Returns a OneAncestors object for class instance
82
+ def self.class_instance: (type_name: TypeName, params: Array[Symbol], super_class: Definition::Ancestor::t?) -> instance
83
+
84
+ # Returns a OneAncestors object for module instance
85
+ def self.module_instance: (type_name: TypeName, params: Array[Symbol]) -> instance
86
+
87
+ # Returns a OneAncestors object for class/module singleton
88
+ def self.singleton: (type_name: TypeName, super_class: Definition::Ancestor::t) -> instance
89
+
90
+ # Returns a OneAncestors object for interface
91
+ def self.interface: (type_name: TypeName, params: Array[Symbol]) -> instance
92
+
93
+ def each_included_module: () { (Definition::Ancestor::Instance) -> void } -> void
94
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
95
+
96
+ def each_included_interface: () { (Definition::Ancestor::Instance) -> void } -> void
97
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
98
+
99
+ def each_prepended_module: () { (Definition::Ancestor::Instance) -> void } -> void
100
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
101
+
102
+ def each_extended_module: () { (Definition::Ancestor::Instance) -> void } -> void
103
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
104
+
105
+ def each_extended_interface: () { (Definition::Ancestor::Instance) -> void } -> void
106
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
107
+
108
+ def each_self_type: () { (Definition::Ancestor::Instance) -> void } -> void
109
+ | () -> Enumerator[Definition::Ancestor::Instance, void]
110
+ end
111
+
112
+ attr_reader env: Environment
113
+
114
+ attr_reader one_instance_ancestors_cache: Hash[TypeName, OneAncestors]
115
+ attr_reader instance_ancestors_cache: Hash[TypeName, Definition::InstanceAncestors]
116
+
117
+ attr_reader one_singleton_ancestors_cache: Hash[TypeName, OneAncestors]
118
+ attr_reader singleton_ancestors_cache: Hash[TypeName, Definition::SingletonAncestors]
119
+
120
+ attr_reader one_interface_ancestors_cache: Hash[TypeName, OneAncestors]
121
+ attr_reader interface_ancestors_cache: Hash[TypeName, Definition::InstanceAncestors]
122
+
123
+ def initialize: (env: Environment) -> void
124
+
125
+ def instance_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
126
+
127
+ def singleton_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::SingletonAncestors
128
+
129
+ def interface_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
130
+
131
+ def one_instance_ancestors: (TypeName) -> OneAncestors
132
+
133
+ def one_singleton_ancestors: (TypeName) -> OneAncestors
134
+
135
+ def one_interface_ancestors: (TypeName) -> OneAncestors
136
+
137
+ private
138
+
139
+ def validate_super_class!: (TypeName, Environment::ClassEntry) -> void
140
+
141
+ def mixin_ancestors: (Environment::ClassEntry | Environment::ModuleEntry,
142
+ TypeName,
143
+ included_modules: Array[Definition::Ancestor::Instance]?,
144
+ included_interfaces: Array[Definition::Ancestor::Instance]?,
145
+ prepended_modules: Array[Definition::Ancestor::Instance]?,
146
+ extended_modules: Array[Definition::Ancestor::Instance]?,
147
+ extended_interfaces: Array[Definition::Ancestor::Instance]?) -> void
148
+
149
+ def mixin_ancestors0: (AST::Declarations::Class | AST::Declarations::Module | AST::Declarations::Interface | AST::Ruby::Declarations::ClassDecl | AST::Ruby::Declarations::ModuleDecl,
150
+ TypeName,
151
+ align_params: Substitution?,
152
+ included_modules: Array[Definition::Ancestor::Instance]?,
153
+ included_interfaces: Array[Definition::Ancestor::Instance]?,
154
+ prepended_modules: Array[Definition::Ancestor::Instance]?,
155
+ extended_modules: Array[Definition::Ancestor::Instance]?,
156
+ extended_interfaces: Array[Definition::Ancestor::Instance]?) -> void
157
+
158
+ # Fill `#source` of instance ancestor if `ancestor.name == name` and its `source` is `nil`
159
+ #
160
+ def fill_ancestor_source: (Definition::Ancestor::t, name: TypeName, source: Definition::Ancestor::Instance::source) -> Definition::Ancestor::t
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,60 @@
1
+ module RBS
2
+ # AncestorGraph is a utility class that helps iterating through ancestors and descendants of a class/module
3
+ #
4
+ # ```ruby
5
+ # graph = AncestorGraph.new(env: env, ancestor_builder: ancestor_builder)
6
+ #
7
+ # graph.each_parent(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
8
+ # graph.each_ancestor(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
9
+ #
10
+ # graph.each_child(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
11
+ # graph.each_descendant(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
12
+ # ```
13
+ #
14
+ # Note that the class works for class/module declarations.
15
+ # All of the *alias* classes/modules are ignored.
16
+ #
17
+ # * Alias classes/modules doesn't count as a parent nor child
18
+ # * Passing alias classes/modules to the method doesn't yield anything
19
+ #
20
+ class AncestorGraph
21
+ class InstanceNode
22
+ attr_reader type_name: TypeName
23
+ def initialize: (type_name: TypeName) -> void
24
+ end
25
+
26
+ class SingletonNode
27
+ attr_reader type_name: TypeName
28
+ def initialize: (type_name: TypeName) -> void
29
+ end
30
+
31
+ type node = InstanceNode | SingletonNode
32
+
33
+ attr_reader env: Environment
34
+ attr_reader ancestor_builder: DefinitionBuilder::AncestorBuilder
35
+ attr_reader parents: Hash[node, Set[node]]
36
+ attr_reader children: Hash[node, Set[node]]
37
+
38
+ def initialize: (env: Environment, ?ancestor_builder: DefinitionBuilder::AncestorBuilder) -> void
39
+
40
+ def each_parent: (node) { (node) -> void } -> void
41
+ | (node) -> Enumerator[node, void]
42
+
43
+ def each_ancestor: (node, ?yielded: Set[node]) { (node) -> void } -> void
44
+ | (node) -> Enumerator[node, void]
45
+
46
+ def each_child: (node) { (node) -> void } -> void
47
+ | (node) -> Enumerator[node, void]
48
+
49
+ def each_descendant: (node, ?yielded: Set[node]) { (node) -> void } -> void
50
+ | (node) -> Enumerator[node, void]
51
+
52
+ private
53
+
54
+ def build: () -> void
55
+
56
+ def build_ancestors: (node, DefinitionBuilder::AncestorBuilder::OneAncestors) -> void
57
+
58
+ def register: (parent: node, child: node) -> void
59
+ end
60
+ end
@@ -0,0 +1,102 @@
1
+ module RBS
2
+ module Annotate
3
+ class Annotations
4
+ type t = Skip | Source | Copy
5
+
6
+ def self.parse: (AST::Annotation) -> t?
7
+
8
+ attr_reader items: Array[t]
9
+
10
+ def initialize: (Array[t]) -> void
11
+
12
+ def skip?: () -> bool
13
+
14
+ def skip_all?: () -> bool
15
+
16
+ def test_path: (String path) -> bool
17
+
18
+ def test_path_string: (String pattern, String path) -> bool
19
+
20
+ def copy_annotation: -> Copy?
21
+
22
+ # Skip annotation allows skipping generating annotation of a subject.
23
+ #
24
+ # %a{annotate:rdoc:skip}
25
+ # %a{annotate:rdoc:skip:all}
26
+ #
27
+ class Skip
28
+ attr_reader annotation: AST::Annotation
29
+
30
+ attr_reader skip_children: bool
31
+
32
+ def initialize: (annotation: AST::Annotation, skip_children: bool) -> void
33
+
34
+ def hash: () -> Integer
35
+
36
+ def ==: (untyped) -> bool
37
+
38
+ alias eql? ==
39
+ end
40
+
41
+ # Source annotation allows where the documents are copied from.
42
+ #
43
+ # It allows specifying two directions: the source to read from, and the source to skip.
44
+ #
45
+ # %a{annotate:rdoc:source:from=ext/pathname}
46
+ # %a{annotate:rdoc:source:skip=ext/pathname/doc}
47
+ #
48
+ # When you want to specify several paths, repeat writing the Source annotation.
49
+ #
50
+ class Source
51
+ attr_reader annotation: AST::Annotation
52
+
53
+ attr_reader include_source: String?
54
+ attr_reader skip_source: String?
55
+
56
+ def initialize: (annotation: AST::Annotation, include: String) -> void
57
+ | (annotation: AST::Annotation, skip: String) -> void
58
+
59
+ def hash: () -> Integer
60
+
61
+ def ==: (untyped) -> bool
62
+
63
+ alias eql? ==
64
+ end
65
+
66
+ # Copy annotation allows copying the doc from another subject.
67
+ # This helps working with incorrect RDoc annotations.
68
+ #
69
+ # %a{annotate:rdoc:copy:Bar#baz}
70
+ # %a{annotate:rdoc:copy:Bar.baz}
71
+ # %a{annotate:rdoc:copy:Bar::Baz}
72
+ #
73
+ class Copy
74
+ attr_reader annotation: AST::Annotation
75
+
76
+ attr_reader source: String
77
+
78
+ def initialize: (annotation: AST::Annotation, source: String) -> void
79
+
80
+ # Returns a tuple of:
81
+ #
82
+ # - Type name
83
+ # - A pair of:
84
+ # - Boolean which holds if it is singleton
85
+ # - Name of method
86
+ def partition: () -> [TypeName, [bool, Symbol]?]
87
+
88
+ def type_name: () -> TypeName
89
+
90
+ def method_name: () -> Symbol?
91
+
92
+ def singleton?: () -> bool
93
+
94
+ def hash: () -> Integer
95
+
96
+ def ==: (untyped) -> bool
97
+
98
+ alias eql? ==
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,24 @@
1
+ module RBS
2
+ module Annotate
3
+ class Formatter
4
+ attr_reader buffer: String
5
+
6
+ @pending_separator: String?
7
+
8
+ def initialize: () -> void
9
+
10
+ def <<: (String | RDoc::Markup::Document | nil) -> self
11
+
12
+ def margin: (?separator: String) -> self
13
+
14
+ def empty?: () -> bool
15
+
16
+ def format: (newline_at_end: bool) -> String
17
+
18
+ def self.translate: (RDoc::Markup::Document) -> String?
19
+
20
+ def self.each_part: (RDoc::Markup::Document) { (RDoc::Markup::Document) -> void } -> void
21
+ | (RDoc::Markup::Document) -> Enumerator[RDoc::Markup::Document, void]
22
+ end
23
+ end
24
+ end