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/location.rbs ADDED
@@ -0,0 +1,135 @@
1
+ module RBS
2
+ # Location is the range on buffer, `start_pos..end_pos`.
3
+ # The index is based on characters.
4
+ #
5
+ # A location can have _child_ locations.
6
+ #
7
+ class Location[in RequiredChildKeys = untyped, in OptionalChildKeys = untyped]
8
+ # The buffer this location points on.
9
+ attr_reader buffer (): Buffer
10
+
11
+ # The absolute start index of character the range starts from
12
+ #
13
+ # It returns the index in the `buffer.top_buffer`.
14
+ #
15
+ attr_reader start_pos (): Integer
16
+
17
+ # The absolute end index of character the range ends at
18
+ #
19
+ # It returns the index in the `buffer.top_buffer`.
20
+ #
21
+ attr_reader end_pos (): Integer
22
+
23
+ def initialize: (Buffer, Integer start_pos, Integer end_pos) -> void
24
+
25
+ def self.new: (Buffer, Integer start_pos, Integer end_pos) -> instance
26
+ | (buffer: Buffer, start_pos: Integer, end_pos: Integer) -> instance
27
+
28
+ def inspect: () -> String
29
+
30
+ # Returns the name of the buffer.
31
+ def name: () -> untyped
32
+
33
+ # The *raw* index of character the range starts from.
34
+ attr_reader _start_pos (): Integer
35
+
36
+ # The *raw* index of character the range ends at.
37
+ attr_reader _end_pos (): Integer
38
+
39
+ # Line of the `start_pos` (1 origin, absolute)
40
+ attr_reader start_line (): Integer
41
+
42
+ # Column of the `start_pos` (0 origin, absolute)
43
+ attr_reader start_column (): Integer
44
+
45
+ # Line of the `end_pos` (1 origin, absolute)
46
+ attr_reader end_line (): Integer
47
+
48
+ # Column of the `end_pos` (0 origin, absolute)
49
+ attr_reader end_column (): Integer
50
+
51
+ # The absolute line-column pair of the start position
52
+ #
53
+ attr_reader start_loc (): Buffer::loc
54
+
55
+ @start_loc: Buffer::loc?
56
+
57
+ # The absolute line-column pair of the end position
58
+ #
59
+ attr_reader end_loc (): Buffer::loc
60
+
61
+ @end_loc: Buffer::loc?
62
+
63
+ # The absolute range of the start and end position
64
+ attr_reader range (): Range[Integer]
65
+
66
+ @range: Range[Integer]?
67
+
68
+ # A substring of buffer associated to the location.
69
+ def source: () -> String
70
+
71
+ @source: String?
72
+
73
+ def to_s: () -> String
74
+
75
+ # Returns a string representation suitable for terminal output.
76
+ #
77
+ # Location.to_string(loc) # => a.rb:1:0...3:4
78
+ # Location.to_string(nil) # => *:*:*..*:*
79
+ #
80
+ def self.to_string: (Location[untyped, untyped]? location, ?default: ::String default) -> String
81
+
82
+ def ==: (untyped other) -> bool
83
+
84
+ include _ToJson
85
+
86
+ def add_optional_child: (OptionalChildKeys name, Range[Integer]? range) -> void
87
+
88
+ def add_required_child: (RequiredChildKeys name, Range[Integer] range) -> void
89
+
90
+ # Returns `Location` instance for given _child_ name.
91
+ #
92
+ # # @type var loc: Location::WithChildren[:name, :args]
93
+ # loc[:name] # => Location
94
+ # loc[:args] # => may be nil
95
+ #
96
+ # Note that passing unknown symbol raises an error even if the child is _optional_.
97
+ # You need explicitly set `nil` for absent optional children.
98
+ #
99
+ def []: (RequiredChildKeys) -> Location[bot, bot]
100
+ | (OptionalChildKeys) -> Location[bot, bot]?
101
+ | (Symbol) -> Location[bot, bot]?
102
+
103
+ alias aref []
104
+
105
+ def each_optional_key: () { (Symbol) -> void } -> void
106
+ | () -> Enumerator[Symbol, void]
107
+
108
+ def each_required_key: () { (Symbol) -> void } -> void
109
+ | () -> Enumerator[Symbol, void]
110
+
111
+ def optional_key?: (Symbol) -> bool
112
+
113
+ def required_key?: (Symbol) -> bool
114
+
115
+ def key?: (Symbol) -> bool
116
+
117
+ # Returns the location of the buffer, but the buffer is detached from the parent buffer
118
+ #
119
+ def local_location: () -> self
120
+
121
+ # Returns the source of `#local_location`
122
+ #
123
+ def local_source: () -> String
124
+
125
+ private
126
+
127
+ def _add_required_child: (RequiredChildKeys name, Integer start_pos, Integer end_pos) -> void
128
+ def _add_optional_child: (OptionalChildKeys name, Integer start_pos, Integer end_pos) -> void
129
+ def _add_optional_no_child: (OptionalChildKeys name) -> void
130
+ def _optional_keys: () -> Array[Symbol]
131
+ def _required_keys: () -> Array[Symbol]
132
+
133
+ WithChildren: singleton(Location)
134
+ end
135
+ end
data/sig/locator.rbs ADDED
@@ -0,0 +1,56 @@
1
+ module RBS
2
+ # Locator helps finding RBS elements based on locations in the RBS source text.
3
+ #
4
+ class Locator
5
+ type component = Symbol
6
+ | Types::t
7
+ | MethodType
8
+ | AST::Declarations::t
9
+ | AST::Members::t
10
+ | AST::TypeParam
11
+ | AST::Declarations::Class::Super
12
+ | AST::Declarations::Module::Self
13
+ | AST::Directives::t
14
+ | AST::Directives::Use::clause
15
+
16
+ # The buffer the location points to
17
+ #
18
+ attr_reader buffer: Buffer
19
+
20
+ # Array of _top-level_ declarations.
21
+ #
22
+ attr_reader decls: Array[AST::Declarations::t]
23
+
24
+ # Array of directives.
25
+ #
26
+ attr_reader dirs: Array[AST::Directives::t]
27
+
28
+ def initialize: (buffer: Buffer, decls: Array[AST::Declarations::t], dirs: Array[AST::Directives::t]) -> void
29
+
30
+ # Returns list of components.
31
+ # Inner component comes first.
32
+ #
33
+ def find: (line: Integer, column: Integer) -> Array[component]
34
+
35
+ # Returns pair of the inner most symbol and outer components.
36
+ # It ensures the array starts with a AST/type component.
37
+ #
38
+ def find2: (line: Integer, column: Integer) -> [Symbol?, Array[component]]?
39
+
40
+ def find_in_directive: (Integer pos, AST::Directives::t, Array[component]) -> bool
41
+
42
+ def find_in_decl: (Integer pos, decl: AST::Declarations::t, array: Array[component]) -> bool
43
+
44
+ def find_in_member: (Integer pos, member: AST::Members::t, array: Array[component]) -> bool
45
+
46
+ def find_in_method_type: (Integer pos, method_type: MethodType, array: Array[component]) -> bool
47
+
48
+ def find_in_type: (Integer pos, type: Types::t, array: Array[component]) -> bool
49
+
50
+ def find_in_type_param: (Integer pos, type_param: AST::TypeParam, array: Array[component]) -> bool
51
+
52
+ def find_in_loc: (Integer pos, location: Location[untyped, untyped]?, array: Array[component]) -> bool
53
+
54
+ def test_loc: (Integer pos, location: Location[untyped, untyped]?) -> bool
55
+ end
56
+ end
data/sig/manifest.yaml ADDED
@@ -0,0 +1,5 @@
1
+ dependencies:
2
+ - name: json
3
+ - name: optparse
4
+ - name: tsort
5
+ - name: rdoc
data/sig/members.rbs ADDED
@@ -0,0 +1,258 @@
1
+ module RBS
2
+ module AST
3
+ module Members
4
+ type t = MethodDefinition
5
+ | InstanceVariable | ClassInstanceVariable | ClassVariable
6
+ | Include | Extend | Prepend
7
+ | AttrReader | AttrWriter | AttrAccessor
8
+ | Public | Private
9
+ | Alias
10
+
11
+ # Base class for members.
12
+ class Base
13
+ end
14
+
15
+ type visibility = :public | :private
16
+
17
+ class MethodDefinition < Base
18
+ class Overload
19
+ attr_reader method_type: MethodType
20
+
21
+ attr_reader annotations: Array[Annotation]
22
+
23
+ def initialize: (method_type: MethodType, annotations: Array[Annotation]) -> void
24
+
25
+ def ==: (untyped) -> bool
26
+
27
+ def hash: () -> Integer
28
+
29
+ alias eql? ==
30
+
31
+ def update: (?annotations: Array[Annotation], ?method_type: MethodType) -> Overload
32
+
33
+ def sub: (Substitution) -> Overload
34
+
35
+ include _ToJson
36
+ end
37
+
38
+ type kind = :instance | :singleton | :singleton_instance
39
+
40
+ # def foo: () -> void
41
+ # ^^^ keyword
42
+ # ^^^ name
43
+ #
44
+ # private def self.bar: () -> void | ...
45
+ # ^^^^^^^ visibility
46
+ # ^^^ keyword
47
+ # ^^^^^ kind
48
+ # ^^^ name
49
+ # ^^^ overloading
50
+ #
51
+ type loc = Location[:keyword | :name, :kind | :overloading | :visibility]
52
+
53
+ attr_reader name: Symbol
54
+ attr_reader kind: kind
55
+ attr_reader overloads: Array[Overload]
56
+ attr_reader annotations: Array[Annotation]
57
+ attr_reader location: loc?
58
+ attr_reader comment: Comment?
59
+ attr_reader overloading: bool
60
+ attr_reader visibility: visibility?
61
+
62
+ def initialize: (name: Symbol, kind: kind, overloads: Array[Overload], annotations: Array[Annotation], location: loc?, comment: Comment?, overloading: bool, visibility: visibility?) -> void
63
+
64
+ include _HashEqual
65
+ include _ToJson
66
+
67
+ # Returns true if the `def` is to define instance method
68
+ def instance?: () -> bool
69
+
70
+ # Returns true if the `def` is to define singleton method
71
+ def singleton?: () -> bool
72
+
73
+ # Returns true if the `def` is overloading (== with `...`)
74
+ #
75
+ def overloading?: () -> bool
76
+
77
+ def update: (?name: Symbol, ?kind: kind, ?overloads: Array[Overload], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?overloading: bool, ?visibility: visibility?) -> MethodDefinition
78
+ end
79
+
80
+ module Var
81
+ # @foo: String
82
+ # ^^^^ name
83
+ # ^ colon
84
+ #
85
+ # self.@all: Array[String]
86
+ # ^^^^^ kind
87
+ # ^^^^ name
88
+ # ^ colon
89
+ #
90
+ type loc = Location[:name | :colon, :kind]
91
+
92
+ attr_reader name: Symbol
93
+ attr_reader type: Types::t
94
+ attr_reader location: loc?
95
+ attr_reader comment: Comment?
96
+
97
+ def initialize: (name: Symbol, type: Types::t, location: loc?, comment: Comment?) -> void
98
+
99
+ include _HashEqual
100
+ end
101
+
102
+ class InstanceVariable < Base
103
+ include Var
104
+ include _ToJson
105
+ end
106
+
107
+ class ClassInstanceVariable < Base
108
+ include Var
109
+ include _ToJson
110
+ end
111
+
112
+ class ClassVariable < Base
113
+ include Var
114
+ include _ToJson
115
+ end
116
+
117
+ module Mixin
118
+ # include Foo
119
+ # ^^^^^^^ keyword
120
+ # ^^^ name
121
+ #
122
+ # include Array[String]
123
+ # ^^^^^^^ keyword
124
+ # ^^^^^ name
125
+ # ^^^^^^^^ args
126
+ #
127
+ type loc = Location[:name | :keyword, :args]
128
+
129
+ attr_reader name: TypeName
130
+ attr_reader args: Array[Types::t]
131
+ attr_reader annotations: Array[Annotation]
132
+ attr_reader location: loc?
133
+ attr_reader comment: Comment?
134
+
135
+ def initialize: (name: TypeName, args: Array[Types::t], annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
136
+
137
+ include _HashEqual
138
+ end
139
+
140
+ class Include < Base
141
+ include Mixin
142
+ include _ToJson
143
+ end
144
+
145
+ class Extend < Base
146
+ include Mixin
147
+ include _ToJson
148
+ end
149
+
150
+ class Prepend < Base
151
+ include Mixin
152
+ include _ToJson
153
+ end
154
+
155
+ module Attribute
156
+ type kind = :instance | :singleton
157
+
158
+ # attr_reader name: String
159
+ # ^^^^^^^^^^^ keyword
160
+ # ^^^^ name
161
+ # ^ colon
162
+ #
163
+ # public attr_accessor self.name (@foo) : String
164
+ # ^^^^^^ visibility
165
+ # ^^^^^^^^^^^^^ keyword
166
+ # ^^^^^ kind
167
+ # ^^^^ name
168
+ # ^^^^^^ ivar
169
+ # ^^^^ ivar_name
170
+ # ^ colon
171
+ #
172
+ type loc = Location[:keyword | :name | :colon, :kind | :ivar | :ivar_name | :visibility]
173
+
174
+ attr_reader name: Symbol
175
+ attr_reader type: Types::t
176
+ attr_reader kind: kind
177
+ attr_reader ivar_name: Symbol | false | nil
178
+ attr_reader annotations: Array[Annotation]
179
+ attr_reader location: loc?
180
+ attr_reader comment: Comment?
181
+ attr_reader visibility: visibility?
182
+
183
+ def initialize: (name: Symbol, type: Types::t, ivar_name: Symbol | false | nil, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?, ?visibility: visibility?) -> void
184
+
185
+ include _HashEqual
186
+
187
+ def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?visibility: visibility?) -> instance
188
+ end
189
+
190
+ class AttrReader < Base
191
+ include Attribute
192
+ include _ToJson
193
+ end
194
+
195
+ class AttrAccessor < Base
196
+ include Attribute
197
+ include _ToJson
198
+ end
199
+
200
+ class AttrWriter < Base
201
+ include Attribute
202
+ include _ToJson
203
+ end
204
+
205
+ module LocationOnly
206
+ attr_reader location: Location[bot, bot]?
207
+
208
+ def initialize: (location: Location[bot, bot]?) -> void
209
+
210
+ include _HashEqual
211
+ end
212
+
213
+ class Public < Base
214
+ include LocationOnly
215
+ include _ToJson
216
+ end
217
+
218
+ class Private < Base
219
+ include LocationOnly
220
+ include _ToJson
221
+ end
222
+
223
+ class Alias < Base
224
+ type kind = :instance | :singleton
225
+
226
+ # alias foo bar
227
+ # ^^^^^ keyword
228
+ # ^^^ new_name
229
+ # ^^^ old_name
230
+ #
231
+ # alias self.foo self.bar
232
+ # ^^^^^ keyword
233
+ # ^^^^^ new_kind
234
+ # ^^^ new_name
235
+ # ^^^^^ old_kind
236
+ # ^^^ old_name
237
+ #
238
+ type loc = Location[:keyword | :new_name | :old_name, :new_kind | :old_kind]
239
+
240
+ attr_reader new_name: Symbol
241
+ attr_reader old_name: Symbol
242
+ attr_reader kind: kind
243
+ attr_reader annotations: Array[Annotation]
244
+ attr_reader location: loc?
245
+ attr_reader comment: Comment?
246
+
247
+ def initialize: (new_name: Symbol, old_name: Symbol, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
248
+
249
+ include _HashEqual
250
+ include _ToJson
251
+
252
+ def instance?: () -> bool
253
+
254
+ def singleton?: () -> bool
255
+ end
256
+ end
257
+ end
258
+ end
@@ -0,0 +1,89 @@
1
+ module RBS
2
+ class DefinitionBuilder
3
+ # MethodBuilder calculates the sequence of methods available on given type
4
+ #
5
+ # The sequence are sorted topologically.
6
+ #
7
+ class MethodBuilder
8
+ # Set of methods defined in a type.
9
+ #
10
+ class Methods
11
+ type instance_type = Types::ClassInstance | Types::ClassSingleton | Types::Interface
12
+
13
+ # Definition of a method in the type
14
+ #
15
+ # The Definition object allows invalid method definition so that more than one _original_ definitions may exist.
16
+ #
17
+ class Definition
18
+ type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
19
+ | AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
20
+
21
+ type overloading_definition = AST::Members::MethodDefinition | AST::Ruby::Members::DefMember
22
+
23
+ type accessibility = RBS::Definition::accessibility
24
+
25
+ attr_reader name: Symbol
26
+ attr_reader type: instance_type
27
+ attr_reader originals: Array[original]
28
+ attr_reader overloads: Array[overloading_definition]
29
+ attr_reader accessibilities: Array[accessibility]
30
+
31
+ def initialize: (name: Symbol, type: instance_type, originals: Array[original], overloads: Array[overloading_definition], accessibilities: Array[accessibility]) -> void
32
+
33
+ def original: () -> original?
34
+
35
+ def accessibility: () -> accessibility
36
+
37
+ def self.empty: (name: Symbol, type: instance_type) -> Definition
38
+ end
39
+
40
+ attr_reader type: instance_type
41
+ attr_reader methods: Hash[Symbol, Definition]
42
+
43
+ def initialize: (type: instance_type) -> void
44
+
45
+ def validate!: () -> self
46
+
47
+ def each: () { (Definition) -> void } -> void
48
+ | () -> Enumerator[Definition, void]
49
+
50
+ class Sorter
51
+ include TSort[Definition]
52
+
53
+ attr_reader methods: Hash[Symbol, Definition]
54
+
55
+ def initialize: (Hash[Symbol, Definition]) -> void
56
+
57
+ def tsort_each_node: { (Definition) -> void } -> void
58
+
59
+ def tsort_each_child: (Definition) { (Definition) -> void } -> void
60
+ end
61
+ end
62
+
63
+ attr_reader env: Environment
64
+ attr_reader instance_methods: Hash[TypeName, Methods]
65
+ attr_reader singleton_methods: Hash[TypeName, Methods]
66
+ attr_reader interface_methods: Hash[TypeName, Methods]
67
+
68
+ def initialize: (env: Environment) -> void
69
+
70
+ def build_instance: (TypeName) -> Methods
71
+
72
+ def build_singleton: (TypeName) -> Methods
73
+
74
+ def build_interface: (TypeName) -> Methods
75
+
76
+ def build_alias: (Methods, Methods::instance_type, member: AST::Members::Alias) -> void
77
+
78
+ def build_attribute: (Methods, Methods::instance_type, member: AST::Members::AttrAccessor | AST::Members::AttrReader | AST::Members::AttrWriter, accessibility: Definition::accessibility) -> void
79
+
80
+ def build_ruby_attribute: (Methods, Methods::instance_type, member: AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember, accessibility: Definition::accessibility) -> void
81
+
82
+ def build_method: (Methods, Methods::instance_type, member: AST::Members::MethodDefinition | AST::Ruby::Members::DefMember, accessibility: Definition::accessibility) -> void
83
+
84
+ def each_rbs_member_with_accessibility: (Array[AST::Members::t | AST::Declarations::t], ?accessibility: Definition::accessibility) { (AST::Members::t | AST::Declarations::t, Definition::accessibility) -> void } -> void
85
+
86
+ def update: (env: Environment, except: _Each[TypeName]) -> MethodBuilder
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,58 @@
1
+ module RBS
2
+ class MethodType
3
+ # () -> void
4
+ # ^^^^^^^^^^ type
5
+ #
6
+ # [A] () { () -> A } -> A
7
+ # ^^^ type_params
8
+ # ^^^^^^^^^^^^^^^^^^^ type
9
+ #
10
+ type def_loc = Location[:type, :type_params]
11
+
12
+ type attr_loc = AST::Members::Attribute::loc
13
+
14
+ type loc = def_loc | attr_loc
15
+
16
+ attr_reader type_params: Array[AST::TypeParam]
17
+ attr_reader type: Types::function
18
+ attr_reader block: Types::Block?
19
+ attr_reader location: loc?
20
+
21
+ def initialize: (type_params: Array[AST::TypeParam], type: Types::function, block: Types::Block?, location: loc?) -> void
22
+
23
+ def ==: (untyped other) -> bool
24
+
25
+ include _ToJson
26
+
27
+ # Substitute type variables to some types.
28
+ # Takes care of type parameter bounds.
29
+ #
30
+ def sub: (Substitution) -> MethodType
31
+
32
+ def update: (?type_params: Array[AST::TypeParam], ?type: Types::function, ?block: Types::Block?, ?location: loc?) -> MethodType
33
+
34
+ def free_variables: (?Set[Symbol] set) -> Set[Symbol]
35
+
36
+ # Apply the mapping included in the MethodType.
37
+ #
38
+ # Note that type bound in generics parameter is not handled by this method.
39
+ # You may want to use `#map_type_bound` explicitly, or `#sub` for simple substitution.
40
+ #
41
+ def map_type: () { (Types::t) -> Types::t } -> MethodType
42
+
43
+ def map_type_bound: () { (Types::t) -> Types::t } -> MethodType
44
+
45
+ def each_type: () { (Types::t) -> void } -> void
46
+ | () -> Enumerator[Types::t, void]
47
+
48
+ def to_s: () -> String
49
+
50
+ def type_param_names: () -> Array[Symbol]
51
+
52
+ def has_self_type?: () -> bool
53
+
54
+ def has_classish_type?: () -> bool
55
+
56
+ def with_nonreturn_void?: () -> bool
57
+ end
58
+ end