rbs 4.1.0.pre.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. checksums.yaml +7 -0
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.github/dependabot.yml +24 -0
  5. data/.github/workflows/bundle-update.yml +63 -0
  6. data/.github/workflows/c-check.yml +61 -0
  7. data/.github/workflows/comments.yml +37 -0
  8. data/.github/workflows/dependabot.yml +30 -0
  9. data/.github/workflows/jruby.yml +67 -0
  10. data/.github/workflows/milestone.yml +83 -0
  11. data/.github/workflows/ruby.yml +158 -0
  12. data/.github/workflows/rust.yml +184 -0
  13. data/.github/workflows/truffleruby.yml +54 -0
  14. data/.github/workflows/typecheck.yml +39 -0
  15. data/.github/workflows/wasm.yml +53 -0
  16. data/.github/workflows/windows.yml +49 -0
  17. data/.gitignore +38 -0
  18. data/.rubocop.yml +72 -0
  19. data/BSDL +22 -0
  20. data/CHANGELOG.md +2292 -0
  21. data/COPYING +56 -0
  22. data/README.md +240 -0
  23. data/Rakefile +869 -0
  24. data/Steepfile +53 -0
  25. data/config.yml +913 -0
  26. data/core/array.rbs +4142 -0
  27. data/core/basic_object.rbs +376 -0
  28. data/core/binding.rbs +148 -0
  29. data/core/builtin.rbs +278 -0
  30. data/core/class.rbs +223 -0
  31. data/core/comparable.rbs +192 -0
  32. data/core/complex.rbs +812 -0
  33. data/core/constants.rbs +96 -0
  34. data/core/data.rbs +415 -0
  35. data/core/dir.rbs +993 -0
  36. data/core/encoding.rbs +1368 -0
  37. data/core/enumerable.rbs +2506 -0
  38. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  39. data/core/enumerator/product.rbs +92 -0
  40. data/core/enumerator.rbs +705 -0
  41. data/core/env.rbs +6 -0
  42. data/core/errno.rbs +682 -0
  43. data/core/errors.rbs +789 -0
  44. data/core/exception.rbs +485 -0
  45. data/core/false_class.rbs +82 -0
  46. data/core/fiber.rbs +570 -0
  47. data/core/fiber_error.rbs +11 -0
  48. data/core/file.rbs +2045 -0
  49. data/core/file_constants.rbs +463 -0
  50. data/core/file_stat.rbs +534 -0
  51. data/core/file_test.rbs +331 -0
  52. data/core/float.rbs +1316 -0
  53. data/core/gc.rbs +788 -0
  54. data/core/global_variables.rbs +184 -0
  55. data/core/hash.rbs +2183 -0
  56. data/core/integer.rbs +1374 -0
  57. data/core/io/buffer.rbs +995 -0
  58. data/core/io/wait.rbs +48 -0
  59. data/core/io.rbs +3472 -0
  60. data/core/kernel.rbs +3172 -0
  61. data/core/marshal.rbs +207 -0
  62. data/core/match_data.rbs +637 -0
  63. data/core/math.rbs +770 -0
  64. data/core/method.rbs +422 -0
  65. data/core/module.rbs +1856 -0
  66. data/core/nil_class.rbs +210 -0
  67. data/core/numeric.rbs +832 -0
  68. data/core/object.rbs +108 -0
  69. data/core/object_space/weak_key_map.rbs +166 -0
  70. data/core/object_space.rbs +197 -0
  71. data/core/pathname.rbs +1322 -0
  72. data/core/proc.rbs +905 -0
  73. data/core/process.rbs +2316 -0
  74. data/core/ractor.rbs +924 -0
  75. data/core/random.rbs +255 -0
  76. data/core/range.rbs +1209 -0
  77. data/core/rational.rbs +502 -0
  78. data/core/rb_config.rbs +88 -0
  79. data/core/rbs/ops.rbs +154 -0
  80. data/core/rbs/unnamed/argf.rbs +1236 -0
  81. data/core/rbs/unnamed/env_class.rbs +1214 -0
  82. data/core/rbs/unnamed/main_class.rbs +123 -0
  83. data/core/rbs/unnamed/random.rbs +186 -0
  84. data/core/refinement.rbs +59 -0
  85. data/core/regexp.rbs +1974 -0
  86. data/core/ruby.rbs +53 -0
  87. data/core/ruby_vm.rbs +809 -0
  88. data/core/rubygems/basic_specification.rbs +6 -0
  89. data/core/rubygems/config_file.rbs +38 -0
  90. data/core/rubygems/dependency_installer.rbs +6 -0
  91. data/core/rubygems/errors.rbs +109 -0
  92. data/core/rubygems/installer.rbs +15 -0
  93. data/core/rubygems/path_support.rbs +6 -0
  94. data/core/rubygems/platform.rbs +7 -0
  95. data/core/rubygems/request_set.rbs +49 -0
  96. data/core/rubygems/requirement.rbs +148 -0
  97. data/core/rubygems/rubygems.rbs +1105 -0
  98. data/core/rubygems/source_list.rbs +15 -0
  99. data/core/rubygems/specification.rbs +23 -0
  100. data/core/rubygems/stream_ui.rbs +5 -0
  101. data/core/rubygems/uninstaller.rbs +10 -0
  102. data/core/rubygems/version.rbs +293 -0
  103. data/core/set.rbs +751 -0
  104. data/core/signal.rbs +110 -0
  105. data/core/string.rbs +5532 -0
  106. data/core/struct.rbs +668 -0
  107. data/core/symbol.rbs +482 -0
  108. data/core/thread.rbs +1826 -0
  109. data/core/thread_group.rbs +79 -0
  110. data/core/time.rbs +1793 -0
  111. data/core/trace_point.rbs +483 -0
  112. data/core/true_class.rbs +98 -0
  113. data/core/unbound_method.rbs +337 -0
  114. data/core/warning.rbs +87 -0
  115. data/docs/CONTRIBUTING.md +107 -0
  116. data/docs/aliases.md +79 -0
  117. data/docs/architecture.md +110 -0
  118. data/docs/collection.md +192 -0
  119. data/docs/config.md +171 -0
  120. data/docs/data_and_struct.md +86 -0
  121. data/docs/encoding.md +56 -0
  122. data/docs/gem.md +56 -0
  123. data/docs/inline.md +634 -0
  124. data/docs/rbs_by_example.md +309 -0
  125. data/docs/repo.md +125 -0
  126. data/docs/rust.md +96 -0
  127. data/docs/sigs.md +167 -0
  128. data/docs/stdlib.md +147 -0
  129. data/docs/syntax.md +940 -0
  130. data/docs/tools.md +17 -0
  131. data/docs/type_fingerprint.md +21 -0
  132. data/docs/wasm_serialization.md +80 -0
  133. data/exe/rbs +7 -0
  134. data/ext/rbs_extension/ast_translation.c +1855 -0
  135. data/ext/rbs_extension/ast_translation.h +41 -0
  136. data/ext/rbs_extension/class_constants.c +187 -0
  137. data/ext/rbs_extension/class_constants.h +104 -0
  138. data/ext/rbs_extension/compat.h +10 -0
  139. data/ext/rbs_extension/extconf.rb +40 -0
  140. data/ext/rbs_extension/legacy_location.c +294 -0
  141. data/ext/rbs_extension/legacy_location.h +82 -0
  142. data/ext/rbs_extension/main.c +613 -0
  143. data/ext/rbs_extension/rbs_extension.h +16 -0
  144. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  145. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  146. data/goodcheck.yml +91 -0
  147. data/include/rbs/ast.h +1047 -0
  148. data/include/rbs/defines.h +99 -0
  149. data/include/rbs/lexer.h +207 -0
  150. data/include/rbs/location.h +40 -0
  151. data/include/rbs/parser.h +153 -0
  152. data/include/rbs/serialize.h +39 -0
  153. data/include/rbs/string.h +47 -0
  154. data/include/rbs/util/rbs_allocator.h +59 -0
  155. data/include/rbs/util/rbs_assert.h +20 -0
  156. data/include/rbs/util/rbs_buffer.h +83 -0
  157. data/include/rbs/util/rbs_constant_pool.h +155 -0
  158. data/include/rbs/util/rbs_encoding.h +282 -0
  159. data/include/rbs/util/rbs_unescape.h +24 -0
  160. data/include/rbs.h +14 -0
  161. data/lib/rbs/ancestor_graph.rb +92 -0
  162. data/lib/rbs/annotate/annotations.rb +199 -0
  163. data/lib/rbs/annotate/formatter.rb +82 -0
  164. data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
  165. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  166. data/lib/rbs/annotate.rb +8 -0
  167. data/lib/rbs/ast/annotation.rb +29 -0
  168. data/lib/rbs/ast/comment.rb +29 -0
  169. data/lib/rbs/ast/declarations.rb +472 -0
  170. data/lib/rbs/ast/directives.rb +49 -0
  171. data/lib/rbs/ast/members.rb +451 -0
  172. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  173. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  174. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  175. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  176. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  177. data/lib/rbs/ast/ruby/members.rb +762 -0
  178. data/lib/rbs/ast/type_param.rb +235 -0
  179. data/lib/rbs/ast/visitor.rb +137 -0
  180. data/lib/rbs/buffer.rb +189 -0
  181. data/lib/rbs/builtin_names.rb +58 -0
  182. data/lib/rbs/cli/colored_io.rb +48 -0
  183. data/lib/rbs/cli/diff.rb +84 -0
  184. data/lib/rbs/cli/validate.rb +294 -0
  185. data/lib/rbs/cli.rb +1253 -0
  186. data/lib/rbs/collection/cleaner.rb +38 -0
  187. data/lib/rbs/collection/config/lockfile.rb +92 -0
  188. data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
  189. data/lib/rbs/collection/config.rb +81 -0
  190. data/lib/rbs/collection/installer.rb +32 -0
  191. data/lib/rbs/collection/sources/base.rb +14 -0
  192. data/lib/rbs/collection/sources/git.rb +265 -0
  193. data/lib/rbs/collection/sources/local.rb +81 -0
  194. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  195. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  196. data/lib/rbs/collection/sources.rb +38 -0
  197. data/lib/rbs/collection.rb +16 -0
  198. data/lib/rbs/constant.rb +28 -0
  199. data/lib/rbs/definition.rb +415 -0
  200. data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
  201. data/lib/rbs/definition_builder/method_builder.rb +295 -0
  202. data/lib/rbs/definition_builder.rb +1054 -0
  203. data/lib/rbs/diff.rb +131 -0
  204. data/lib/rbs/environment/class_entry.rb +69 -0
  205. data/lib/rbs/environment/module_entry.rb +66 -0
  206. data/lib/rbs/environment/use_map.rb +77 -0
  207. data/lib/rbs/environment.rb +1028 -0
  208. data/lib/rbs/environment_loader.rb +167 -0
  209. data/lib/rbs/environment_walker.rb +155 -0
  210. data/lib/rbs/errors.rb +634 -0
  211. data/lib/rbs/factory.rb +18 -0
  212. data/lib/rbs/file_finder.rb +28 -0
  213. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  214. data/lib/rbs/inline_parser.rb +568 -0
  215. data/lib/rbs/location_aux.rb +170 -0
  216. data/lib/rbs/locator.rb +247 -0
  217. data/lib/rbs/method_type.rb +145 -0
  218. data/lib/rbs/namespace.rb +154 -0
  219. data/lib/rbs/parser/lex_result.rb +15 -0
  220. data/lib/rbs/parser/token.rb +23 -0
  221. data/lib/rbs/parser_aux.rb +142 -0
  222. data/lib/rbs/prototype/helpers.rb +197 -0
  223. data/lib/rbs/prototype/node_usage.rb +99 -0
  224. data/lib/rbs/prototype/rb.rb +816 -0
  225. data/lib/rbs/prototype/rbi.rb +625 -0
  226. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  227. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  228. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  229. data/lib/rbs/prototype/runtime.rb +680 -0
  230. data/lib/rbs/repository.rb +127 -0
  231. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  232. data/lib/rbs/resolver/type_name_resolver.rb +167 -0
  233. data/lib/rbs/rewriter.rb +70 -0
  234. data/lib/rbs/sorter.rb +198 -0
  235. data/lib/rbs/source.rb +99 -0
  236. data/lib/rbs/substitution.rb +83 -0
  237. data/lib/rbs/subtractor.rb +204 -0
  238. data/lib/rbs/test/errors.rb +80 -0
  239. data/lib/rbs/test/guaranteed.rb +30 -0
  240. data/lib/rbs/test/hook.rb +212 -0
  241. data/lib/rbs/test/observer.rb +19 -0
  242. data/lib/rbs/test/setup.rb +84 -0
  243. data/lib/rbs/test/setup_helper.rb +50 -0
  244. data/lib/rbs/test/tester.rb +167 -0
  245. data/lib/rbs/test/type_check.rb +457 -0
  246. data/lib/rbs/test.rb +112 -0
  247. data/lib/rbs/type_alias_dependency.rb +100 -0
  248. data/lib/rbs/type_alias_regularity.rb +126 -0
  249. data/lib/rbs/type_name.rb +122 -0
  250. data/lib/rbs/types.rb +1604 -0
  251. data/lib/rbs/unit_test/convertibles.rb +177 -0
  252. data/lib/rbs/unit_test/spy.rb +138 -0
  253. data/lib/rbs/unit_test/type_assertions.rb +383 -0
  254. data/lib/rbs/unit_test/with_aliases.rb +145 -0
  255. data/lib/rbs/unit_test.rb +6 -0
  256. data/lib/rbs/validator.rb +186 -0
  257. data/lib/rbs/variance_calculator.rb +189 -0
  258. data/lib/rbs/vendorer.rb +71 -0
  259. data/lib/rbs/version.rb +5 -0
  260. data/lib/rbs/wasm/deserializer.rb +213 -0
  261. data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
  262. data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
  263. data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
  264. data/lib/rbs/wasm/jars/asm-util.jar +0 -0
  265. data/lib/rbs/wasm/jars/asm.jar +0 -0
  266. data/lib/rbs/wasm/jars/compiler.jar +0 -0
  267. data/lib/rbs/wasm/jars/log.jar +0 -0
  268. data/lib/rbs/wasm/jars/runtime.jar +0 -0
  269. data/lib/rbs/wasm/jars/wasi.jar +0 -0
  270. data/lib/rbs/wasm/jars/wasm.jar +0 -0
  271. data/lib/rbs/wasm/location.rb +61 -0
  272. data/lib/rbs/wasm/parser.rb +137 -0
  273. data/lib/rbs/wasm/rbs_parser.wasm +0 -0
  274. data/lib/rbs/wasm/runtime.rb +217 -0
  275. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  276. data/lib/rbs/writer.rb +424 -0
  277. data/lib/rbs.rb +117 -0
  278. data/lib/rdoc/discover.rb +20 -0
  279. data/lib/rdoc_plugin/parser.rb +163 -0
  280. data/rbs.gemspec +68 -0
  281. data/schema/annotation.json +14 -0
  282. data/schema/comment.json +26 -0
  283. data/schema/decls.json +326 -0
  284. data/schema/function.json +87 -0
  285. data/schema/location.json +56 -0
  286. data/schema/members.json +266 -0
  287. data/schema/methodType.json +50 -0
  288. data/schema/typeParam.json +52 -0
  289. data/schema/types.json +317 -0
  290. data/sig/ancestor_builder.rbs +163 -0
  291. data/sig/ancestor_graph.rbs +60 -0
  292. data/sig/annotate/annotations.rbs +102 -0
  293. data/sig/annotate/formatter.rbs +24 -0
  294. data/sig/annotate/rdoc_annotater.rbs +85 -0
  295. data/sig/annotate/rdoc_source.rbs +32 -0
  296. data/sig/annotation.rbs +27 -0
  297. data/sig/ast/ruby/annotations.rbs +470 -0
  298. data/sig/ast/ruby/comment_block.rbs +127 -0
  299. data/sig/ast/ruby/declarations.rbs +158 -0
  300. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  301. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  302. data/sig/ast/ruby/members.rbs +198 -0
  303. data/sig/buffer.rbs +108 -0
  304. data/sig/builtin_names.rbs +44 -0
  305. data/sig/cli/colored_io.rbs +15 -0
  306. data/sig/cli/diff.rbs +15 -0
  307. data/sig/cli/validate.rbs +47 -0
  308. data/sig/cli.rbs +89 -0
  309. data/sig/collection/cleaner.rbs +13 -0
  310. data/sig/collection/config/lockfile.rbs +74 -0
  311. data/sig/collection/config/lockfile_generator.rbs +68 -0
  312. data/sig/collection/config.rbs +46 -0
  313. data/sig/collection/installer.rbs +17 -0
  314. data/sig/collection/sources.rbs +214 -0
  315. data/sig/collection.rbs +4 -0
  316. data/sig/comment.rbs +26 -0
  317. data/sig/constant.rbs +21 -0
  318. data/sig/declarations.rbs +274 -0
  319. data/sig/definition.rbs +232 -0
  320. data/sig/definition_builder.rbs +181 -0
  321. data/sig/diff.rbs +28 -0
  322. data/sig/directives.rbs +77 -0
  323. data/sig/environment/class_entry.rbs +50 -0
  324. data/sig/environment/module_entry.rbs +50 -0
  325. data/sig/environment.rbs +286 -0
  326. data/sig/environment_loader.rbs +111 -0
  327. data/sig/environment_walker.rbs +65 -0
  328. data/sig/errors.rbs +408 -0
  329. data/sig/factory.rbs +5 -0
  330. data/sig/file_finder.rbs +28 -0
  331. data/sig/inline_parser/comment_association.rbs +71 -0
  332. data/sig/inline_parser.rbs +126 -0
  333. data/sig/location.rbs +135 -0
  334. data/sig/locator.rbs +56 -0
  335. data/sig/manifest.yaml +5 -0
  336. data/sig/members.rbs +258 -0
  337. data/sig/method_builder.rbs +89 -0
  338. data/sig/method_types.rbs +58 -0
  339. data/sig/namespace.rbs +161 -0
  340. data/sig/parser.rbs +164 -0
  341. data/sig/prototype/helpers.rbs +29 -0
  342. data/sig/prototype/node_usage.rbs +20 -0
  343. data/sig/prototype/rb.rbs +96 -0
  344. data/sig/prototype/rbi.rbs +75 -0
  345. data/sig/prototype/runtime.rbs +182 -0
  346. data/sig/rbs.rbs +21 -0
  347. data/sig/rdoc/rbs.rbs +67 -0
  348. data/sig/repository.rbs +85 -0
  349. data/sig/resolver/constant_resolver.rbs +92 -0
  350. data/sig/resolver/context.rbs +34 -0
  351. data/sig/resolver/type_name_resolver.rbs +61 -0
  352. data/sig/rewriter.rbs +45 -0
  353. data/sig/shims/bundler.rbs +38 -0
  354. data/sig/shims/enumerable.rbs +5 -0
  355. data/sig/shims/rubygems.rbs +19 -0
  356. data/sig/sorter.rbs +41 -0
  357. data/sig/source.rbs +48 -0
  358. data/sig/substitution.rbs +48 -0
  359. data/sig/subtractor.rbs +37 -0
  360. data/sig/test/errors.rbs +52 -0
  361. data/sig/test/guranteed.rbs +9 -0
  362. data/sig/test/type_check.rbs +19 -0
  363. data/sig/test.rbs +82 -0
  364. data/sig/type_alias_dependency.rbs +53 -0
  365. data/sig/type_alias_regularity.rbs +98 -0
  366. data/sig/type_param.rbs +115 -0
  367. data/sig/typename.rbs +89 -0
  368. data/sig/types.rbs +578 -0
  369. data/sig/unit_test/convertibles.rbs +154 -0
  370. data/sig/unit_test/spy.rbs +22 -0
  371. data/sig/unit_test/type_assertions.rbs +211 -0
  372. data/sig/unit_test/with_aliases.rbs +136 -0
  373. data/sig/use_map.rbs +35 -0
  374. data/sig/util.rbs +9 -0
  375. data/sig/validator.rbs +63 -0
  376. data/sig/variance_calculator.rbs +87 -0
  377. data/sig/vendorer.rbs +51 -0
  378. data/sig/version.rbs +3 -0
  379. data/sig/visitor.rbs +47 -0
  380. data/sig/wasm/deserializer.rbs +66 -0
  381. data/sig/wasm/serialization_schema.rbs +13 -0
  382. data/sig/writer.rbs +127 -0
  383. data/src/ast.c +1628 -0
  384. data/src/lexer.c +3217 -0
  385. data/src/lexer.re +155 -0
  386. data/src/lexstate.c +217 -0
  387. data/src/location.c +31 -0
  388. data/src/parser.c +4255 -0
  389. data/src/serialize.c +958 -0
  390. data/src/string.c +41 -0
  391. data/src/util/rbs_allocator.c +162 -0
  392. data/src/util/rbs_assert.c +19 -0
  393. data/src/util/rbs_buffer.c +54 -0
  394. data/src/util/rbs_constant_pool.c +268 -0
  395. data/src/util/rbs_encoding.c +21308 -0
  396. data/src/util/rbs_unescape.c +167 -0
  397. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  398. data/stdlib/abbrev/0/array.rbs +26 -0
  399. data/stdlib/base64/0/base64.rbs +355 -0
  400. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  401. data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
  402. data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
  403. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  404. data/stdlib/cgi/0/core.rbs +911 -0
  405. data/stdlib/cgi/0/manifest.yaml +4 -0
  406. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  407. data/stdlib/coverage/0/coverage.rbs +266 -0
  408. data/stdlib/csv/0/csv.rbs +3776 -0
  409. data/stdlib/csv/0/manifest.yaml +3 -0
  410. data/stdlib/date/0/date.rbs +1598 -0
  411. data/stdlib/date/0/date_time.rbs +617 -0
  412. data/stdlib/date/0/time.rbs +26 -0
  413. data/stdlib/dbm/0/dbm.rbs +421 -0
  414. data/stdlib/delegate/0/delegator.rbs +187 -0
  415. data/stdlib/delegate/0/kernel.rbs +47 -0
  416. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  417. data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
  418. data/stdlib/digest/0/digest.rbs +687 -0
  419. data/stdlib/erb/0/erb.rbs +933 -0
  420. data/stdlib/etc/0/etc.rbs +884 -0
  421. data/stdlib/fileutils/0/fileutils.rbs +1753 -0
  422. data/stdlib/find/0/find.rbs +49 -0
  423. data/stdlib/forwardable/0/forwardable.rbs +271 -0
  424. data/stdlib/io-console/0/io-console.rbs +414 -0
  425. data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
  426. data/stdlib/json/0/json.rbs +1963 -0
  427. data/stdlib/kconv/0/kconv.rbs +166 -0
  428. data/stdlib/logger/0/formatter.rbs +45 -0
  429. data/stdlib/logger/0/log_device.rbs +100 -0
  430. data/stdlib/logger/0/logger.rbs +796 -0
  431. data/stdlib/logger/0/manifest.yaml +2 -0
  432. data/stdlib/logger/0/period.rbs +17 -0
  433. data/stdlib/logger/0/severity.rbs +34 -0
  434. data/stdlib/minitest/0/kernel.rbs +42 -0
  435. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  436. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  437. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  438. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  439. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  440. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  441. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  442. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  443. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  444. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  445. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  446. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  447. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  448. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  449. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  450. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  451. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  452. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  453. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  454. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  455. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  456. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  457. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  458. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  459. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  460. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  461. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  462. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  463. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  464. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  465. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  466. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  467. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  468. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  469. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  470. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  471. data/stdlib/minitest/0/minitest.rbs +115 -0
  472. data/stdlib/monitor/0/monitor.rbs +363 -0
  473. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  474. data/stdlib/net-http/0/manifest.yaml +3 -0
  475. data/stdlib/net-http/0/net-http.rbs +5580 -0
  476. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  477. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  478. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  479. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  480. data/stdlib/nkf/0/nkf.rbs +402 -0
  481. data/stdlib/objspace/0/objspace.rbs +470 -0
  482. data/stdlib/observable/0/observable.rbs +217 -0
  483. data/stdlib/open-uri/0/manifest.yaml +4 -0
  484. data/stdlib/open-uri/0/open-uri.rbs +433 -0
  485. data/stdlib/open3/0/open3.rbs +606 -0
  486. data/stdlib/openssl/0/manifest.yaml +3 -0
  487. data/stdlib/openssl/0/openssl.rbs +12231 -0
  488. data/stdlib/optparse/0/optparse.rbs +1734 -0
  489. data/stdlib/pathname/0/pathname.rbs +36 -0
  490. data/stdlib/pp/0/manifest.yaml +2 -0
  491. data/stdlib/pp/0/pp.rbs +301 -0
  492. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  493. data/stdlib/pstore/0/pstore.rbs +608 -0
  494. data/stdlib/psych/0/core_ext.rbs +12 -0
  495. data/stdlib/psych/0/dbm.rbs +237 -0
  496. data/stdlib/psych/0/manifest.yaml +3 -0
  497. data/stdlib/psych/0/psych.rbs +455 -0
  498. data/stdlib/psych/0/store.rbs +57 -0
  499. data/stdlib/pty/0/pty.rbs +240 -0
  500. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  501. data/stdlib/rdoc/0/code_object.rbs +52 -0
  502. data/stdlib/rdoc/0/comment.rbs +61 -0
  503. data/stdlib/rdoc/0/context.rbs +153 -0
  504. data/stdlib/rdoc/0/markup.rbs +117 -0
  505. data/stdlib/rdoc/0/options.rbs +76 -0
  506. data/stdlib/rdoc/0/parser.rbs +56 -0
  507. data/stdlib/rdoc/0/rdoc.rbs +393 -0
  508. data/stdlib/rdoc/0/ri.rbs +17 -0
  509. data/stdlib/rdoc/0/store.rbs +48 -0
  510. data/stdlib/rdoc/0/top_level.rbs +97 -0
  511. data/stdlib/resolv/0/manifest.yaml +3 -0
  512. data/stdlib/resolv/0/resolv.rbs +1787 -0
  513. data/stdlib/ripper/0/ripper.rbs +1654 -0
  514. data/stdlib/securerandom/0/manifest.yaml +2 -0
  515. data/stdlib/securerandom/0/securerandom.rbs +49 -0
  516. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  517. data/stdlib/singleton/0/singleton.rbs +134 -0
  518. data/stdlib/socket/0/addrinfo.rbs +666 -0
  519. data/stdlib/socket/0/basic_socket.rbs +590 -0
  520. data/stdlib/socket/0/constants.rbs +2295 -0
  521. data/stdlib/socket/0/ip_socket.rbs +94 -0
  522. data/stdlib/socket/0/socket.rbs +4170 -0
  523. data/stdlib/socket/0/socket_error.rbs +5 -0
  524. data/stdlib/socket/0/tcp_server.rbs +192 -0
  525. data/stdlib/socket/0/tcp_socket.rbs +87 -0
  526. data/stdlib/socket/0/udp_socket.rbs +133 -0
  527. data/stdlib/socket/0/unix_server.rbs +169 -0
  528. data/stdlib/socket/0/unix_socket.rbs +172 -0
  529. data/stdlib/stringio/0/stringio.rbs +1681 -0
  530. data/stdlib/strscan/0/string_scanner.rbs +1648 -0
  531. data/stdlib/tempfile/0/tempfile.rbs +483 -0
  532. data/stdlib/time/0/time.rbs +434 -0
  533. data/stdlib/timeout/0/timeout.rbs +137 -0
  534. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  535. data/stdlib/tsort/0/cyclic.rbs +8 -0
  536. data/stdlib/tsort/0/interfaces.rbs +20 -0
  537. data/stdlib/tsort/0/tsort.rbs +410 -0
  538. data/stdlib/uri/0/common.rbs +621 -0
  539. data/stdlib/uri/0/file.rbs +118 -0
  540. data/stdlib/uri/0/ftp.rbs +13 -0
  541. data/stdlib/uri/0/generic.rbs +1116 -0
  542. data/stdlib/uri/0/http.rbs +104 -0
  543. data/stdlib/uri/0/https.rbs +14 -0
  544. data/stdlib/uri/0/ldap.rbs +230 -0
  545. data/stdlib/uri/0/ldaps.rbs +14 -0
  546. data/stdlib/uri/0/mailto.rbs +92 -0
  547. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  548. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  549. data/stdlib/uri/0/ws.rbs +13 -0
  550. data/stdlib/uri/0/wss.rbs +9 -0
  551. data/stdlib/yaml/0/manifest.yaml +2 -0
  552. data/stdlib/yaml/0/yaml.rbs +1 -0
  553. data/stdlib/zlib/0/buf_error.rbs +10 -0
  554. data/stdlib/zlib/0/data_error.rbs +10 -0
  555. data/stdlib/zlib/0/deflate.rbs +211 -0
  556. data/stdlib/zlib/0/error.rbs +20 -0
  557. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  558. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  559. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  560. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  561. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  562. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  563. data/stdlib/zlib/0/gzip_writer.rbs +168 -0
  564. data/stdlib/zlib/0/inflate.rbs +180 -0
  565. data/stdlib/zlib/0/mem_error.rbs +10 -0
  566. data/stdlib/zlib/0/need_dict.rbs +13 -0
  567. data/stdlib/zlib/0/stream_end.rbs +11 -0
  568. data/stdlib/zlib/0/stream_error.rbs +11 -0
  569. data/stdlib/zlib/0/version_error.rbs +11 -0
  570. data/stdlib/zlib/0/zlib.rbs +449 -0
  571. data/stdlib/zlib/0/zstream.rbs +201 -0
  572. data/wasm/README.md +59 -0
  573. data/wasm/rbs_wasm.c +411 -0
  574. metadata +660 -0
@@ -0,0 +1,274 @@
1
+ module RBS
2
+ module AST
3
+ module Declarations
4
+ type t = Class | Module | Interface | Constant | Global | TypeAlias | ClassAlias | ModuleAlias
5
+
6
+ class Base
7
+ end
8
+
9
+ interface _WithMember
10
+ def members: () -> Array[untyped]
11
+ end
12
+
13
+ module NestedDeclarationHelper : _WithMember
14
+ def each_member: () { (Members::t) -> void } -> void
15
+ | () -> Enumerator[Members::t, void]
16
+
17
+ def each_decl: () { (t) -> void } -> void
18
+ | () -> Enumerator[t, void]
19
+ end
20
+
21
+ module MixinHelper : _WithMember
22
+ type mixin_member = Members::Include | Members::Extend | Members::Prepend
23
+
24
+ @mixins: Array[mixin_member]
25
+
26
+ def each_mixin: () { (mixin_member) -> void } -> void
27
+ | () -> Enumerator[mixin_member, void]
28
+ end
29
+
30
+ class Class < Base
31
+ class Super
32
+ # String
33
+ # ^^^^^^ name
34
+ #
35
+ # Array[String]
36
+ # ^^^^^ name
37
+ # ^^^^^^^^ args
38
+ #
39
+ type loc = Location[:name, :args]
40
+
41
+ attr_reader name: TypeName
42
+ attr_reader args: Array[Types::t]
43
+ attr_reader location: loc?
44
+
45
+ def initialize: (name: TypeName, args: Array[Types::t], location: loc?) -> void
46
+
47
+ include _HashEqual
48
+ include _ToJson
49
+ end
50
+
51
+ type member = Members::t | t
52
+
53
+ # class Foo end
54
+ # ^^^^^ keyword
55
+ # ^^^ name
56
+ # ^^^ end
57
+ #
58
+ # class Foo[A] < String end
59
+ # ^^^^^ keyword
60
+ # ^^^ name
61
+ # ^^^ type_params
62
+ # ^ lt
63
+ # ^^^ end
64
+ #
65
+ type loc = Location[:keyword | :name | :end, :type_params | :lt]
66
+
67
+ include NestedDeclarationHelper
68
+ include MixinHelper
69
+
70
+ attr_reader name: TypeName
71
+ attr_reader type_params: Array[TypeParam]
72
+ attr_reader members: Array[member]
73
+ attr_reader super_class: Super?
74
+ attr_reader annotations: Array[Annotation]
75
+ attr_reader location: loc?
76
+ attr_reader comment: Comment?
77
+
78
+ def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], super_class: Super?, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
79
+
80
+ def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?super_class: Super?, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?) -> Declarations::Class
81
+
82
+ include _HashEqual
83
+ include _ToJson
84
+ end
85
+
86
+ class Module < Base
87
+ class Self
88
+ # _Each[String]
89
+ # ^^^^^ name
90
+ # ^^^^^^^^ args
91
+ #
92
+ type loc = Location[:name, :args]
93
+
94
+ attr_reader name: TypeName
95
+ attr_reader args: Array[Types::t]
96
+ attr_reader location: loc?
97
+
98
+ def initialize: (name: TypeName, args: Array[Types::t], location: loc?) -> void
99
+
100
+ include _HashEqual
101
+ include _ToJson
102
+
103
+ def to_s: () -> String
104
+ end
105
+
106
+ type member = Members::t | t
107
+
108
+ # module Foo end
109
+ # ^^^^^^ keyword
110
+ # ^^^ name
111
+ # ^^^ end
112
+ #
113
+ # module Foo[A] : BasicObject end
114
+ # ^^^^^^ keyword
115
+ # ^^^ name
116
+ # ^^^ type_params
117
+ # ^ colon
118
+ # ^^^^^^^^^^^ self_types
119
+ # ^^^ end
120
+ #
121
+ type loc = Location[:keyword | :name | :end, :type_params | :colon | :self_types]
122
+
123
+ include NestedDeclarationHelper
124
+ include MixinHelper
125
+
126
+ attr_reader name: TypeName
127
+ attr_reader type_params: Array[TypeParam]
128
+ attr_reader members: Array[member]
129
+ attr_reader location: loc?
130
+ attr_reader annotations: Array[Annotation]
131
+ attr_reader self_types: Array[Self]
132
+ attr_reader comment: Comment?
133
+
134
+ def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], location: loc?, annotations: Array[Annotation], self_types: Array[Self], comment: Comment?) -> void
135
+
136
+ def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?location: loc?, ?annotations: Array[Annotation], ?self_types: Array[Self], ?comment: Comment?) -> Declarations::Module
137
+
138
+ include _HashEqual
139
+ include _ToJson
140
+ end
141
+
142
+ class Interface < Base
143
+ type member = Members::t
144
+
145
+ # interface _Foo end
146
+ # ^^^^^^^^^ keyword
147
+ # ^^^^ name
148
+ # ^^^ end
149
+ #
150
+ # interface _Bar[A, B] end
151
+ # ^^^^^^^^^ keyword
152
+ # ^^^^ name
153
+ # ^^^^^^ type_params
154
+ # ^^^ end
155
+ #
156
+ type loc = Location[:name | :keyword | :end, :type_params]
157
+
158
+ attr_reader name: TypeName
159
+ attr_reader type_params: Array[TypeParam]
160
+ attr_reader members: Array[member]
161
+ attr_reader annotations: Array[Annotation]
162
+ attr_reader location: loc?
163
+ attr_reader comment: Comment?
164
+
165
+ def initialize: (name: TypeName, type_params: Array[TypeParam], members: Array[member], annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
166
+
167
+ def update: (?name: TypeName, ?type_params: Array[TypeParam], ?members: Array[member], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?) -> Declarations::Interface
168
+
169
+ include MixinHelper
170
+
171
+ include _HashEqual
172
+ include _ToJson
173
+ end
174
+
175
+ class TypeAlias < Base
176
+ # type loc[T] = Location[T, bot]
177
+ # ^^^^ keyword
178
+ # ^^^ name
179
+ # ^^^ type_params
180
+ # ^ eq
181
+ #
182
+ type loc = Location[:keyword | :name | :eq, :type_params]
183
+
184
+ attr_reader name: TypeName
185
+ attr_reader type_params: Array[TypeParam]
186
+ attr_reader type: Types::t
187
+ attr_reader annotations: Array[Annotation]
188
+ attr_reader location: loc?
189
+ attr_reader comment: Comment?
190
+
191
+ def initialize: (name: TypeName, type_params: Array[TypeParam], type: Types::t, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
192
+
193
+ include _HashEqual
194
+ include _ToJson
195
+ end
196
+
197
+ class Constant < Base
198
+ # VERSION: String
199
+ # ^^^^^^^ name
200
+ # ^ colon
201
+ #
202
+ type loc = Location[:name | :colon, bot]
203
+
204
+ attr_reader name: TypeName
205
+ attr_reader type: Types::t
206
+ attr_reader location: loc?
207
+ attr_reader comment: Comment?
208
+ attr_reader annotations: Array[Annotation]
209
+
210
+ def initialize: (name: TypeName, type: Types::t, location: loc?, comment: Comment?, annotations: Array[Annotation]) -> void
211
+ | %a{deprecated} (name: TypeName, type: Types::t, location: loc?, comment: Comment?) -> void
212
+
213
+ include _HashEqual
214
+ include _ToJson
215
+ end
216
+
217
+ class Global < Base
218
+ # $SIZE: String
219
+ # ^^^^^ name
220
+ # ^ colon
221
+ #
222
+ type loc = Location[:name | :colon, bot]
223
+
224
+ attr_reader name: Symbol
225
+ attr_reader type: Types::t
226
+ attr_reader location: loc?
227
+ attr_reader comment: Comment?
228
+ attr_reader annotations: Array[Annotation]
229
+
230
+ def initialize: (name: Symbol, type: Types::t, location: loc?, comment: Comment?, annotations: Array[Annotation]) -> void
231
+ | %a{deprecated} (name: Symbol, type: Types::t, location: loc?, comment: Comment?) -> void
232
+
233
+ include _HashEqual
234
+ include _ToJson
235
+ end
236
+
237
+ class AliasDecl < Base
238
+ # module Foo = Bar
239
+ # ^^^^^^ keyword
240
+ # ^^^ new_name
241
+ # ^ eq
242
+ # ^^^ old_name
243
+ #
244
+ # class Foo = Bar
245
+ # ^^^^^ keyword
246
+ #
247
+ type loc = Location[:keyword | :new_name | :eq | :old_name, bot]
248
+
249
+ attr_reader new_name: TypeName
250
+
251
+ attr_reader old_name: TypeName
252
+
253
+ attr_reader location: loc?
254
+
255
+ attr_reader comment: Comment?
256
+
257
+ attr_reader annotations: Array[Annotation]
258
+
259
+ def initialize: (new_name: TypeName, old_name: TypeName, location: loc?, comment: Comment?, annotations: Array[Annotation]) -> void
260
+ | %a{deprecated} (new_name: TypeName, old_name: TypeName, location: loc?, comment: Comment?) -> void
261
+
262
+ include _HashEqual
263
+ end
264
+
265
+ class ClassAlias < AliasDecl
266
+ include _ToJson
267
+ end
268
+
269
+ class ModuleAlias < AliasDecl
270
+ include _ToJson
271
+ end
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,232 @@
1
+ module RBS
2
+ class Definition
3
+ type accessibility = :public | :private
4
+
5
+ class Variable
6
+ attr_reader parent_variable: Variable?
7
+ attr_reader type: Types::t
8
+ attr_reader declared_in: TypeName
9
+ type source = AST::Members::AttrAccessor
10
+ | AST::Members::AttrReader
11
+ | AST::Members::AttrWriter
12
+ | AST::Members::InstanceVariable
13
+ | AST::Members::ClassVariable
14
+ | AST::Members::ClassInstanceVariable
15
+ | AST::Ruby::Members::AttrReaderMember
16
+ | AST::Ruby::Members::AttrWriterMember
17
+ | AST::Ruby::Members::AttrAccessorMember
18
+ | AST::Ruby::Members::InstanceVariableMember
19
+ attr_reader source: source
20
+
21
+ def initialize: (parent_variable: Variable?, type: Types::t, declared_in: TypeName, source: source) -> void
22
+
23
+ def sub: (Substitution) -> Variable
24
+ end
25
+
26
+ class Method
27
+ type method_member = AST::Members::MethodDefinition | AST::Members::AttrReader | AST::Members::AttrAccessor | AST::Members::AttrWriter
28
+ | AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
29
+
30
+ class TypeDef
31
+ attr_reader type: MethodType
32
+ attr_reader member: method_member
33
+ attr_reader defined_in: TypeName
34
+ attr_reader implemented_in: TypeName?
35
+
36
+ # Annotations given to the method definition syntax
37
+ #
38
+ # If the method have multiple syntaxes, union of the annotations to the member will be included, without dedup.
39
+ #
40
+ # The value should be updated during setup.
41
+ #
42
+ attr_reader member_annotations: Array[AST::Annotation]
43
+
44
+ # Annotations given to the overload associated to the method type
45
+ #
46
+ # The value should be updated during setup.
47
+ #
48
+ attr_reader overload_annotations: Array[AST::Annotation]
49
+
50
+ # Always returns an empty array
51
+ %a{deprecated} attr_reader annotations: Array[AST::Annotation]
52
+
53
+ # `overload_annotations` is ignored.
54
+ def initialize: (
55
+ type: MethodType,
56
+ member: method_member,
57
+ defined_in: TypeName,
58
+ implemented_in: TypeName?
59
+ ) -> void
60
+ | %a{deprecated} (
61
+ type: MethodType,
62
+ member: method_member,
63
+ defined_in: TypeName,
64
+ implemented_in: TypeName?,
65
+ overload_annotations: nil
66
+ ) -> void
67
+
68
+ def comment: () -> AST::Comment?
69
+
70
+ def update: (?type: MethodType, ?member: method_member, ?defined_in: TypeName, ?implemented_in: TypeName?) -> TypeDef
71
+
72
+ def overload?: () -> bool
73
+
74
+ # Yields member and overload annotations, without dedup
75
+ #
76
+ # Member annotation yields first.
77
+ #
78
+ def each_annotation: () { (AST::Annotation) -> void } -> void
79
+ | () -> Enumerator[AST::Annotation]
80
+ end
81
+
82
+ attr_reader super_method: Method?
83
+ attr_reader defs: Array[TypeDef]
84
+ attr_reader accessibility: accessibility
85
+
86
+ attr_reader defined_in: TypeName?
87
+ attr_reader implemented_in: TypeName?
88
+ attr_reader method_types: Array[MethodType]
89
+ attr_reader comments: Array[AST::Comment]
90
+
91
+ attr_reader members: Array[method_member]
92
+
93
+ # The original method when the method is defined with `alias` syntax
94
+ attr_reader alias_of: Method?
95
+
96
+ # Present if the method is defined with `alias` syntax
97
+ attr_reader alias_member: AST::Members::Alias?
98
+
99
+ # Unused, always returns empty array
100
+ %a{deprecated} attr_reader extra_annotations: Array[AST::Annotation]
101
+
102
+ # Union of annotations given to `def`s and `alias`, not contains annotations given to each overload
103
+ #
104
+ # The elements will be updated during `Method` object setup.
105
+ #
106
+ attr_reader annotations: Array[AST::Annotation]
107
+
108
+ # Note that the annotations given through `annotations:` keyword is ignored.
109
+ #
110
+ def initialize: (
111
+ super_method: Method?,
112
+ defs: Array[TypeDef],
113
+ accessibility: accessibility,
114
+ alias_of: Method?,
115
+ alias_member: AST::Members::Alias?
116
+ ) -> void
117
+ | %a{deprecated} (
118
+ super_method: Method?,
119
+ defs: Array[TypeDef],
120
+ accessibility: accessibility,
121
+ alias_of: Method?,
122
+ annotations: Array[AST::Annotation]
123
+ ) -> void
124
+
125
+ def public?: () -> bool
126
+
127
+ def private?: () -> bool
128
+
129
+ # Substitutes type variables to some types.
130
+ # Takes care of type parameter bounds.
131
+ #
132
+ def sub: (Substitution) -> Method
133
+
134
+ # Applies the mapping from `Types::t` to `Types::t`.
135
+ #
136
+ # Note this method doesn't handle upper bound in type params.
137
+ # You may want to use `#map_type_bound` explicitly, or `#sub` for simple substitution.
138
+ #
139
+ def map_type: () { (Types::t) -> Types::t } -> Method
140
+
141
+ def map_type_bound: () { (Types::t) -> Types::t } -> Method
142
+
143
+ def map_method_type: () { (MethodType) -> MethodType } -> Method
144
+
145
+ def update: (
146
+ ?super_method: Method?,
147
+ ?defs: Array[TypeDef],
148
+ ?accessibility: accessibility,
149
+ ?alias_of: Method?,
150
+ ?annotations: Array[AST::Annotation],
151
+ ?alias_member: AST::Members::Alias?
152
+ ) -> Method
153
+ end
154
+
155
+ module Ancestor
156
+ type t = Instance | Singleton
157
+
158
+ class Instance
159
+ type source = :super # Inheritance
160
+ | nil # Itself
161
+ | AST::Members::Include | AST::Members::Extend | AST::Members::Prepend # AST
162
+ | AST::Ruby::Members::IncludeMember | AST::Ruby::Members::ExtendMember | AST::Ruby::Members::PrependMember # Ruby AST
163
+ | AST::Declarations::Module::Self
164
+
165
+ attr_reader name: TypeName
166
+ attr_reader args: Array[Types::t]
167
+ attr_reader source: source
168
+
169
+ def initialize: (name: TypeName, args: Array[Types::t], source: source) -> void
170
+ end
171
+
172
+ class Singleton
173
+ attr_reader name: TypeName
174
+
175
+ def initialize: (name: TypeName) -> void
176
+ end
177
+ end
178
+
179
+ class InstanceAncestors
180
+ attr_reader type_name: TypeName
181
+ attr_reader params: Array[Symbol]
182
+ attr_reader ancestors: Array[Ancestor::t]
183
+
184
+ def initialize: (type_name: TypeName, params: Array[Symbol], ancestors: Array[Ancestor::t]) -> void
185
+
186
+ def apply: (Array[Types::t], env: Environment, location: Location[untyped, untyped]?) -> Array[Ancestor::t]
187
+ end
188
+
189
+ class SingletonAncestors
190
+ attr_reader type_name: TypeName
191
+ attr_reader ancestors: Array[Ancestor::t]
192
+
193
+ def initialize: (type_name: TypeName, ancestors: Array[Ancestor::t]) -> void
194
+ end
195
+
196
+ type self_type = Types::ClassSingleton | Types::ClassInstance | Types::Interface
197
+ type definition_entry = Environment::ModuleEntry | Environment::ClassEntry | Environment::InterfaceEntry
198
+
199
+ attr_reader type_name: TypeName
200
+ attr_reader entry: definition_entry
201
+ attr_reader ancestors: InstanceAncestors | SingletonAncestors | nil
202
+ attr_reader self_type: self_type
203
+ attr_reader methods: Hash[Symbol, Method]
204
+ attr_reader instance_variables: Hash[Symbol, Variable]
205
+ attr_reader class_variables: Hash[Symbol, Variable]
206
+
207
+ def initialize: (type_name: TypeName, entry: definition_entry, self_type: self_type, ancestors: InstanceAncestors | SingletonAncestors | nil) -> void
208
+
209
+ def class?: () -> bool
210
+
211
+ def module?: () -> bool
212
+
213
+ def interface?: () -> bool
214
+
215
+ def class_type?: () -> bool
216
+
217
+ def instance_type?: () -> bool
218
+
219
+ def interface_type?: () -> bool
220
+
221
+ def type_params: () -> Array[Symbol]
222
+
223
+ def type_params_decl: () -> Array[AST::TypeParam]
224
+
225
+ def sub: (Substitution) -> Definition
226
+
227
+ def map_method_type: () { (MethodType) -> MethodType } -> Definition
228
+
229
+ def each_type: () { (Types::t) -> void } -> void
230
+ | () -> Enumerator[Types::t, void]
231
+ end
232
+ end
@@ -0,0 +1,181 @@
1
+ module RBS
2
+ # DefinitionBuilder translates TypeName to Definition of the type
3
+ #
4
+ # It also provides semantic utilities that depends on Environment.
5
+ #
6
+ class DefinitionBuilder
7
+ attr_reader env: Environment
8
+ attr_reader ancestor_builder: AncestorBuilder
9
+ attr_reader method_builder: MethodBuilder
10
+
11
+ attr_reader instance_cache: Hash[TypeName, Definition | false | nil]
12
+ attr_reader singleton_cache: Hash[TypeName, Definition | false | nil]
13
+ attr_reader singleton0_cache: Hash[TypeName, Definition | false | nil]
14
+ attr_reader interface_cache: Hash[TypeName, Definition | false | nil]
15
+
16
+ def initialize: (env: Environment, ?ancestor_builder: AncestorBuilder?, ?method_builder: MethodBuilder?) -> void
17
+
18
+ # Returns a Definition of a interface
19
+ #
20
+ def build_interface: (TypeName) -> Definition
21
+
22
+ # Returns a Definition of an instance type
23
+ #
24
+ # If TypeName is a module and `no_self_types` is `true`, it won't have methods of _self type constraints_.
25
+ # This typically happens when definition is being calculated for mixin.
26
+ #
27
+ def build_instance: (TypeName) -> Definition
28
+
29
+ # Returns a Definition of a singleton type
30
+ def build_singleton: (TypeName) -> Definition
31
+
32
+ # Validates the given Namespace and its ancestor namespaces exists
33
+ #
34
+ # Raises NoTypeFoundError
35
+ #
36
+ def ensure_namespace!: (Namespace, location: Location[untyped, untyped]?) -> void
37
+
38
+ # Expand a type alias of given name without type arguments.
39
+ # Raises an error if the type alias requires arguments.
40
+ #
41
+ # Assume `type foo[T] = [T, T]`:
42
+ #
43
+ # ```
44
+ # expand_alias("::foo") # => error
45
+ # ```
46
+ #
47
+ def expand_alias: (TypeName) -> Types::t
48
+
49
+ # Expand a type alias of given name with arguments of `untyped`.
50
+ #
51
+ # Assume `type foo[T] = [T, T]`:
52
+ #
53
+ # ```
54
+ # expand_alias1("::foo") # => [untyped, untyped]
55
+ # ```
56
+ #
57
+ def expand_alias1: (TypeName) -> Types::t
58
+
59
+ # Expand a type alias of given name with `args`.
60
+ #
61
+ # Assume `type foo[T] = [T, T]`:
62
+ #
63
+ # ```
64
+ # expand_alias2("::foo", ["::Integer"]) # => [::Integer, ::Integer]
65
+ # ```
66
+ #
67
+ def expand_alias2: (TypeName, Array[Types::t] args) -> Types::t
68
+
69
+ # Validates presence of type names recursively
70
+ #
71
+ # Assumes the type names are already resolved.
72
+ # Raises NoTypeFoundError in case of failure.
73
+ #
74
+ # Normalizes type names in the given type automatically.
75
+ #
76
+ def validate_type_presence: (Types::t) -> void
77
+
78
+ # Validates presence of an absolute type name
79
+ #
80
+ # Raises NoTypeFoundError in case of error.
81
+ #
82
+ # Normalizes the given type name automatically.
83
+ #
84
+ def validate_type_name: (TypeName, Location[untyped, untyped]?) -> void
85
+
86
+ # Returns a new DefinitionBuilder with updated Environment, AncestorBuilder, and exceptions
87
+ #
88
+ def update: (env: Environment, ancestor_builder: AncestorBuilder, except: _Each[TypeName]) -> DefinitionBuilder
89
+
90
+ private
91
+
92
+ def validate_super_class!: (TypeName, Environment::ClassEntry) -> void
93
+
94
+ def build_singleton0: (TypeName) -> Definition
95
+
96
+ # Returns `interface_methods` from given array of interface ancestors
97
+ #
98
+ def interface_methods: (Array[Definition::Ancestor::Instance] interface_ancestors) -> interface_methods
99
+
100
+ def special_accessibility: (bool, Symbol) -> Definition::accessibility?
101
+
102
+ def try_cache: (TypeName, cache: Hash[TypeName, Definition | false | nil]) { () -> Definition } -> Definition
103
+
104
+ def validate_params_with: (Array[AST::TypeParam], result: VarianceCalculator::Result) { (AST::TypeParam) -> void } -> void
105
+
106
+ def validate_type_params: (Definition, ancestors: AncestorBuilder::OneAncestors, methods: MethodBuilder::Methods) -> void
107
+
108
+ def source_location: (Definition::Ancestor::Instance::source, AST::Declarations::t | AST::Ruby::Declarations::t) -> Location[untyped, untyped]?
109
+
110
+ def validate_variable: (Definition::Variable) -> void
111
+
112
+ def insert_variable: (
113
+ TypeName,
114
+ Hash[Symbol, Definition::Variable],
115
+ name: Symbol,
116
+ type: Types::t,
117
+ source: Definition::Variable::source
118
+ ) -> void
119
+
120
+ # Add method definition to `methods`, which will be merged to `class_definition` after defining all methods at this *level* -- class, module, or interface
121
+ #
122
+ # `class_definition` is a definition of given type, but it has definitions of prior levels.
123
+ #
124
+ def define_method: (
125
+ Hash[Symbol, Definition::Method] methods,
126
+ Definition class_definition,
127
+ MethodBuilder::Methods::Definition method_definition,
128
+ Substitution subst,
129
+ Hash[Symbol, Definition::Method]? self_type_methods,
130
+ defined_in: TypeName,
131
+ ?implemented_in: TypeName?
132
+ ) -> void
133
+
134
+ # The `interface_methods` type describes the association between the interface name to its name and the *mixin* to a module
135
+ #
136
+ type interface_methods = Hash[
137
+ Definition::Ancestor::Instance,
138
+ [MethodBuilder::Methods, AST::Members::Include | AST::Members::Extend]
139
+ ]
140
+
141
+ # Add method definitions from `module_methods` to `definition`
142
+ #
143
+ # It also processes interface mixins, with duplication detection.
144
+ # It doesn't process module mixins.
145
+ #
146
+ def import_methods: (
147
+ Definition definition,
148
+ TypeName module_name,
149
+ MethodBuilder::Methods module_methods,
150
+ interface_methods interface_methods,
151
+ Substitution subst,
152
+ Hash[Symbol, Definition::Method]? self_type_methods,
153
+ ) -> void
154
+
155
+ # Updates `definition` with methods and instance variables of `type_name` that can be a module or a class
156
+ #
157
+ # It processes includes and prepends recursively.
158
+ # If `define_class_vars:` is falsy, it skips inserting class variables.
159
+ #
160
+ def define_instance: (
161
+ Definition definition,
162
+ TypeName type_name,
163
+ Substitution subst,
164
+ define_class_vars: bool
165
+ ) -> void
166
+
167
+ # Updates `definition` with methods defined in an interface `type_name`
168
+ #
169
+ # It processes includes recursively
170
+ #
171
+ def define_interface: (Definition definition, TypeName type_name, Substitution subst) -> void
172
+
173
+ # Returns a substitution that corresponds to type application
174
+ #
175
+ # ```
176
+ # tapp_subst(`::Array`, [`::Integer`]) # => Substitution.build([:Elem], [`::Integer`])
177
+ # ```
178
+ #
179
+ def tapp_subst: (TypeName, Array[Types::t]) -> Substitution
180
+ end
181
+ end