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/typename.rbs ADDED
@@ -0,0 +1,89 @@
1
+ module RBS
2
+ # TypeName represents name of types in RBS.
3
+ #
4
+ # TypeNames are one of the three kind, class, alias, and interface.
5
+ # *class* type names corresponds to Ruby classes and modules.
6
+ # There are no corresponding Ruby value to *alias* and *interface* type names.
7
+ #
8
+ class TypeName
9
+ # Type of type names.
10
+ #
11
+ type kind = :class | :alias | :interface
12
+
13
+ # The namespace the type name is defined in.
14
+ attr_reader namespace: Namespace
15
+
16
+ # Name of type name.
17
+ attr_reader name: Symbol
18
+
19
+ # Kind of the type.
20
+ attr_reader kind: kind
21
+
22
+ # Initializer accepts two keyword args, `namespace` and `name`.
23
+ # Note that `kind` is automatically determined from its `name`.
24
+ #
25
+ # If the name starts with capital alphabet, it is _class_.
26
+ # If the name starts with lower case alphabet, it is _alias_.
27
+ # If the name starts with an underscore, it is _interface_.
28
+ #
29
+ def initialize: (namespace: Namespace, name: Symbol) -> void
30
+
31
+ @hash: Integer?
32
+
33
+ self.@intern_mutex: Mutex
34
+
35
+ # Two-level Hash keyed by canonical Namespace identity (outer uses
36
+ # `compare_by_identity`) and name Symbol.
37
+ self.@intern_cache: Hash[Namespace, Hash[Symbol, TypeName]]
38
+
39
+ # Returns an interned `TypeName` instance.
40
+ #
41
+ # The given `namespace` is canonicalized so cached instances always hold an
42
+ # interned namespace. Subsequent calls with structurally equal arguments
43
+ # return the same object.
44
+ def self.[]: (Namespace namespace, Symbol name) -> TypeName
45
+
46
+ def ==: (untyped other) -> bool
47
+
48
+ def hash: () -> Integer
49
+
50
+ def to_s: () -> ::String
51
+
52
+ include _ToJson
53
+
54
+ # Returns a namespace with same components of self.
55
+ def to_namespace: () -> Namespace
56
+
57
+ # Returns true when self is a _class_ type name.
58
+ def class?: () -> bool
59
+
60
+ # Returns true when self is an _alias_ type name.
61
+ def alias?: () -> bool
62
+
63
+ def absolute!: () -> TypeName
64
+
65
+ def absolute?: () -> bool
66
+
67
+ def relative!: () -> TypeName
68
+
69
+ # Returns true when self is an _interface_ type name.
70
+ def interface?: () -> bool
71
+
72
+ # Returns a new type name with a namespace appended to given namespace.
73
+ #
74
+ # ```rb
75
+ # TypeName.parse("Hello").with_prefix(Namespace("World")) # => World::Hello
76
+ # TypeName.parse("Foo::Bar").with_prefix(Namespace("::Hello")) # => ::Hello::Foo::Bar
77
+ # TypeName.parse("::A::B").with_prefix(Namespace("C")) # => ::A::B
78
+ # ```
79
+ #
80
+ def with_prefix: (Namespace namespace) -> TypeName
81
+
82
+ def +: (TypeName) -> TypeName
83
+
84
+ def split: () -> Array[Symbol]
85
+
86
+ # Returns type name with given string representation.
87
+ def self.parse: (String name) -> RBS::TypeName
88
+ end
89
+ end
data/sig/types.rbs ADDED
@@ -0,0 +1,578 @@
1
+ module RBS
2
+ module Types
3
+ # _TypeBase interface represents the operations common to all of the types.
4
+ #
5
+ interface _TypeBase
6
+ # Returns names of free variables of a type.
7
+ # You can pass a Set instance to add the free variables to the set to avoid Set object allocation.
8
+ #
9
+ def free_variables: (?Set[Symbol]) -> Set[Symbol]
10
+
11
+ # Receives a substitution and returns a new type applied the substitution.
12
+ #
13
+ def sub: (Substitution) -> t
14
+
15
+ # Maps type names included in the type and returns new instance of type.
16
+ def map_type_name: () { (TypeName, Location[untyped, untyped]?, t) -> TypeName } -> t
17
+
18
+ # Yields all direct sub types included in the type.
19
+ # It doesn't yield the type itself.
20
+ #
21
+ # ```ruby
22
+ # parse("Hash[String, Array[Symbol]]").each_type do |ty|
23
+ # ... # Yields String and Array[Symbol]
24
+ # end
25
+ # ```
26
+ #
27
+ def each_type: () { (t) -> void } -> void
28
+ | () -> Enumerator[t, void]
29
+
30
+ # Returns a JSON representation.
31
+ #
32
+ include _ToJson
33
+
34
+ # Returns a String representation.
35
+ # `level` is used internally.
36
+ #
37
+ # ```ruby
38
+ # parse("String").to_s # => "String"
39
+ # parse("String | Integer").to_s() # => "String | Integer"
40
+ # parse("String | Integer").to_s(1) # => "(String | Integer)"
41
+ # ```
42
+ #
43
+ def to_s: (?Integer level) -> String
44
+
45
+ # Returns `true` if it has `self` type
46
+ #
47
+ def has_self_type?: () -> bool
48
+
49
+ # Returns `true` if it has `instance` or `class` types
50
+ def has_classish_type?: () -> bool
51
+
52
+ # Returns `true` if it has `void` types other than *return* position
53
+ #
54
+ # * The function return type is a return position (`() -> void`)
55
+ # * Generic parameter is a return position (`Enumerator[Integer, void]`)
56
+ #
57
+ def with_nonreturn_void?: () -> bool
58
+ end
59
+
60
+ # t represents union of all possible types.
61
+ #
62
+ type t = Bases::Bool | Bases::Void | Bases::Any | Bases::Nil | Bases::Top | Bases::Bottom | Bases::Self | Bases::Instance | Bases::Class
63
+ | Variable | ClassSingleton | Interface | ClassInstance | Alias | Tuple | Record | Optional | Union | Intersection | Proc | Literal
64
+
65
+ module NoFreeVariables
66
+ def free_variables: (?Set[Symbol]) -> Set[Symbol]
67
+ end
68
+
69
+ module NoSubst
70
+ def sub: (Substitution) -> self
71
+ end
72
+
73
+ module EmptyEachType
74
+ def each_type: () { (t) -> void } -> void
75
+ | () -> Enumerator[t, void]
76
+
77
+ # `map_type` returns itself, because there is no sub type.
78
+ #
79
+ def map_type: () { (t) -> t } -> self
80
+ | () -> Enumerator[t, self]
81
+ end
82
+
83
+ module NoTypeName
84
+ def map_type_name: () { (TypeName, Location[untyped, untyped]?, t) -> TypeName } -> self
85
+ end
86
+
87
+ module Bases
88
+ class Base
89
+ include _TypeBase
90
+
91
+ attr_reader location: Location[bot, bot]?
92
+
93
+ def initialize: (location: Location[bot, bot]?) -> void
94
+
95
+ def ==: (untyped other) -> bool
96
+
97
+ def hash: () -> Integer
98
+
99
+ alias eql? ==
100
+
101
+ include NoFreeVariables
102
+ include NoSubst
103
+ include EmptyEachType
104
+ include NoTypeName
105
+ end
106
+
107
+ class Bool < Base
108
+ end
109
+
110
+ class Void < Base
111
+ end
112
+
113
+ class Any < Base
114
+ @string: String?
115
+
116
+ def initialize: (location: Location[bot, bot]?, ?todo: bool) -> void
117
+ end
118
+
119
+ class Nil < Base
120
+ end
121
+
122
+ class Top < Base
123
+ end
124
+
125
+ class Bottom < Base
126
+ end
127
+
128
+ class Self < Base
129
+ end
130
+
131
+ class Instance < Base
132
+ def sub: (Substitution sub) -> t
133
+ end
134
+
135
+ class Class < Base
136
+ end
137
+ end
138
+
139
+ class Variable
140
+ type loc = Location[bot, bot]
141
+
142
+ attr_reader name: Symbol
143
+
144
+ @@count: Integer
145
+
146
+ include _TypeBase
147
+ include NoTypeName
148
+ include EmptyEachType
149
+
150
+ def initialize: (name: Symbol, location: loc?) -> void
151
+
152
+ attr_reader location: loc?
153
+
154
+ def ==: (untyped other) -> bool
155
+
156
+ alias eql? ==
157
+
158
+ def hash: () -> Integer
159
+
160
+ def self.build: (Symbol) -> Variable
161
+ | (Array[Symbol]) -> Array[Variable]
162
+
163
+ # Returns fresh type variable with prefix (if given.)
164
+ #
165
+ # Variable.fresh(:S) # => S@1
166
+ # Variable.fresh(:S) # => S@2
167
+ # Variable.fresh() # => T@3
168
+ #
169
+ def self.fresh: (?Symbol prefix) -> Variable
170
+ end
171
+
172
+ class ClassSingleton
173
+ # singleton(::Foo)
174
+ # ^^^^^ => name
175
+ type loc = Location[:name, :args]
176
+
177
+ def initialize: (name: TypeName, location: loc?, ?args: Array[t]) -> void
178
+
179
+ attr_reader location: loc?
180
+
181
+ include _TypeBase
182
+ include Application
183
+
184
+ def ==: (untyped other) -> bool
185
+
186
+ alias eql? ==
187
+
188
+ def hash: () -> Integer
189
+
190
+ def map_type: () { (t) -> t } -> ClassSingleton
191
+ | () -> Enumerator[t, ClassSingleton]
192
+ end
193
+
194
+ module Application
195
+ attr_reader name: TypeName
196
+ attr_reader args: Array[t]
197
+
198
+ def ==: (untyped) -> bool
199
+
200
+ alias eql? ==
201
+
202
+ def hash: () -> Integer
203
+
204
+ def free_variables: (?Set[Symbol]) -> Set[Symbol]
205
+
206
+ def to_s: (?Integer level) -> String
207
+
208
+ def each_type: () { (t) -> void } -> void
209
+ | () -> Enumerator[t, void]
210
+
211
+ def has_self_type?: () -> bool
212
+
213
+ def has_classish_type?: () -> bool
214
+
215
+ def with_nonreturn_void?: () -> bool
216
+ end
217
+
218
+ class Interface
219
+ # _Foo
220
+ # ^^^^ => name
221
+ #
222
+ # _Foo[Bar, Baz]
223
+ # ^^^^ => name
224
+ # ^^^^^^^^^^ => args
225
+ type loc = Location[:name, :args]
226
+
227
+ def initialize: (name: TypeName, args: Array[t], location: loc?) -> void
228
+
229
+ include Application
230
+ include _TypeBase
231
+
232
+ attr_reader location: loc?
233
+
234
+ def map_type: () { (t) -> t } -> Interface
235
+ | () -> Enumerator[t, Interface]
236
+ end
237
+
238
+ # ClassInstance represents a type of an instance of a class.
239
+ #
240
+ # String # Type of an instance of String class.
241
+ # Array[String] # Type of an instance of Array class with instances of String.
242
+ # Kernel # Type of an instance of a class which includes Kernel.
243
+ #
244
+ class ClassInstance
245
+ include Application
246
+
247
+ # Foo
248
+ # ^^^ => name
249
+ #
250
+ # Foo[Bar, Baz]
251
+ # ^^^ => name
252
+ # ^^^^^^^^^^ => args
253
+ #
254
+ type loc = Location[:name, :args]
255
+
256
+ def initialize: (name: TypeName, args: Array[t], location: loc?) -> void
257
+
258
+ attr_reader location: loc?
259
+
260
+ include _TypeBase
261
+
262
+ def map_type: () { (t) -> t } -> ClassInstance
263
+ | () -> Enumerator[t, ClassInstance]
264
+ end
265
+
266
+ class Alias
267
+ # foo
268
+ # ^^^ => name
269
+ #
270
+ # foo[bar, baz]
271
+ # ^^^ => name
272
+ # ^^^^^^^^^^ => args
273
+ #
274
+ type loc = Location[:name, :args]
275
+
276
+ attr_reader location: loc?
277
+
278
+ def initialize: (name: TypeName, args: Array[t], location: loc?) -> void
279
+
280
+ include _TypeBase
281
+ include Application
282
+
283
+ def map_type: () { (t) -> t } -> Alias
284
+ | () -> Enumerator[t, Alias]
285
+ end
286
+
287
+ class Tuple
288
+ attr_reader types: Array[t]
289
+
290
+ type loc = Location[bot, bot]
291
+
292
+ def initialize: (types: Array[t], location: loc?) -> void
293
+
294
+ include _TypeBase
295
+
296
+ attr_reader location: loc?
297
+
298
+ def map_type: () { (t) -> t } -> Tuple
299
+ | () -> Enumerator[t, Tuple]
300
+ end
301
+
302
+ class Record
303
+ type key = Symbol | String | Integer | bool
304
+
305
+ # All types of all files
306
+ #
307
+ # If the key is *required*, the second value of the tuple is `true`.
308
+ # If the key is *optional*, the second value of the tuple is `false`.
309
+ #
310
+ attr_reader all_fields: Hash[key, [t, bool]]
311
+
312
+ attr_reader fields: Hash[key, t]
313
+
314
+ attr_reader optional_fields: Hash[key, t]
315
+
316
+ type loc = Location[bot, bot]
317
+
318
+ def initialize: (fields: Hash[key, t], location: loc?) -> void
319
+ | (all_fields: Hash[key, [t, bool]], location: loc?) -> void
320
+
321
+ include _TypeBase
322
+
323
+ attr_reader location: loc?
324
+
325
+ def map_type: () { (t) -> t } -> Record
326
+ | () -> Enumerator[t, Record]
327
+ end
328
+
329
+ class Optional
330
+ attr_reader type: t
331
+
332
+ type loc = Location[bot, bot]
333
+
334
+ def initialize: (type: t, location: loc?) -> void
335
+
336
+ include _TypeBase
337
+
338
+ attr_reader location: loc?
339
+
340
+ def map_type: () { (t) -> t } -> Optional
341
+ | () -> Enumerator[t, Optional]
342
+ end
343
+
344
+ class Union
345
+ attr_reader types: Array[t]
346
+
347
+ type loc = Location[bot, bot]
348
+
349
+ def initialize: (types: Array[t], location: loc?) -> void
350
+
351
+ include _TypeBase
352
+
353
+ attr_reader location: loc?
354
+
355
+ def map_type: () { (t) -> t } -> Union
356
+ | () -> Enumerator[t, Union]
357
+ end
358
+
359
+ class Intersection
360
+ attr_reader types: Array[t]
361
+
362
+ type loc = Location[bot, bot]
363
+
364
+ def initialize: (types: Array[t], location: loc?) -> void
365
+
366
+ include _TypeBase
367
+
368
+ attr_reader location: loc?
369
+
370
+ def map_type: () { (t) -> t } -> Intersection
371
+ | () -> Enumerator[t, Intersection]
372
+ end
373
+
374
+ class Function
375
+ class Param
376
+ type loc = Location[bot, :name]
377
+
378
+ attr_reader type: t
379
+ attr_reader name: Symbol?
380
+ attr_reader location: loc?
381
+
382
+ def initialize: (type: t, name: Symbol?, ?location: loc?) -> void
383
+
384
+ def map_type: { (t) -> t } -> Param
385
+ | -> Enumerator[t, Param]
386
+ end
387
+
388
+ attr_reader required_positionals: Array[Param]
389
+ attr_reader optional_positionals: Array[Param]
390
+ attr_reader rest_positionals: Param?
391
+ attr_reader trailing_positionals: Array[Param]
392
+ attr_reader required_keywords: Hash[Symbol, Param]
393
+ attr_reader optional_keywords: Hash[Symbol, Param]
394
+ attr_reader rest_keywords: Param?
395
+ attr_reader return_type: t
396
+
397
+ def initialize: (required_positionals: Array[Param],
398
+ optional_positionals: Array[Param],
399
+ rest_positionals: Param?,
400
+ trailing_positionals: Array[Param],
401
+ required_keywords: Hash[Symbol, Param],
402
+ optional_keywords: Hash[Symbol, Param],
403
+ rest_keywords: Param?,
404
+ return_type: t) -> void
405
+
406
+ def free_variables: (?Set[Symbol]) -> Set[Symbol]
407
+
408
+ def map_type: { (t) -> t } -> Function
409
+ | -> Enumerator[t, Function]
410
+
411
+ def map_type_name: () { (TypeName, Location[untyped, untyped]?, t) -> TypeName } -> Function
412
+
413
+ def each_type: () { (t) -> void } -> void
414
+ | -> Enumerator[t, void]
415
+
416
+ def each_param: () { (Param) -> void } -> void
417
+ | -> Enumerator[Param, void]
418
+
419
+ include _ToJson
420
+
421
+ def sub: (Substitution) -> Function
422
+
423
+ def self.empty: (t) -> instance
424
+
425
+ def with_return_type: (t) -> Function
426
+
427
+ def update: (?required_positionals: Array[Param],
428
+ ?optional_positionals: Array[Param],
429
+ ?rest_positionals: Param?,
430
+ ?trailing_positionals: Array[Param],
431
+ ?required_keywords: Hash[Symbol, Param],
432
+ ?optional_keywords: Hash[Symbol, Param],
433
+ ?rest_keywords: Param?,
434
+ ?return_type: t) -> Function
435
+
436
+ def empty?: () -> bool
437
+
438
+ def param_to_s: () -> String
439
+ def return_to_s: () -> String
440
+
441
+ def drop_head: () -> [Param, Function]
442
+ def drop_tail: () -> [Param, Function]
443
+
444
+ def has_keyword?: () -> bool
445
+
446
+ def amap: [A, B] (Array[A]) { (A) -> B } -> Array[B]
447
+
448
+ def hmapv: [X, Y, Z] (Hash[X, Y]) { (Y) -> Z } -> Hash[X, Z]
449
+
450
+ def has_self_type?: () -> bool
451
+
452
+ def has_classish_type?: () -> bool
453
+
454
+ def with_nonreturn_void?: () -> bool
455
+
456
+ def ==: (untyped) -> bool
457
+
458
+ alias eql? ==
459
+
460
+ def hash: () -> Integer
461
+ end
462
+
463
+ # Function type without type checking arguments
464
+ #
465
+ class UntypedFunction
466
+ attr_reader return_type: t
467
+
468
+ def initialize: (return_type: t) -> void
469
+
470
+ def free_variables: (?Set[Symbol]) -> Set[Symbol]
471
+
472
+ def map_type: { (t) -> t } -> UntypedFunction
473
+ | -> Enumerator[t, UntypedFunction]
474
+
475
+ def map_type_name: () { (TypeName, Location[untyped, untyped]?, t) -> TypeName } -> UntypedFunction
476
+
477
+ def each_type: () { (t) -> void } -> void
478
+ | -> Enumerator[t, void]
479
+
480
+ def each_param: () { (Function::Param) -> void } -> void
481
+ | -> Enumerator[Function::Param, void]
482
+
483
+ include _ToJson
484
+
485
+ def sub: (Substitution) -> UntypedFunction
486
+
487
+ def with_return_type: (t) -> UntypedFunction
488
+
489
+ def update: (?return_type: t) -> UntypedFunction
490
+
491
+ def empty?: () -> bool
492
+
493
+ def has_self_type?: () -> bool
494
+
495
+ def has_classish_type?: () -> bool
496
+
497
+ def with_nonreturn_void?: () -> bool
498
+
499
+ # Returns `?`
500
+ def param_to_s: () -> String
501
+
502
+ # Returns `return_type.to_s(1)`
503
+ def return_to_s: () -> String
504
+
505
+ def ==: (untyped) -> bool
506
+
507
+ alias eql? ==
508
+
509
+ def hash: () -> Integer
510
+ end
511
+
512
+ type function = Types::Function | Types::UntypedFunction
513
+
514
+ class Block
515
+ attr_reader type: function
516
+ attr_reader required: bool
517
+
518
+ attr_reader self_type: t?
519
+
520
+ type loc = Location[bot, bot]
521
+ attr_reader location: loc?
522
+
523
+ def initialize: (?location: loc?, type: function, ?self_type: t?, required: boolish) -> void
524
+
525
+ def ==: (untyped other) -> bool
526
+
527
+ include _ToJson
528
+
529
+ def sub: (Substitution) -> Block
530
+
531
+ def map_type: () { (t) -> t } -> Block
532
+ end
533
+
534
+ module SelfTypeBindingHelper
535
+ def self?.self_type_binding_to_s: (t?) -> String
536
+ end
537
+
538
+ class Proc
539
+ attr_reader type: function
540
+ attr_reader block: Block?
541
+
542
+ attr_reader self_type: t?
543
+
544
+ type loc = Location[bot, bot]
545
+
546
+ def initialize: (location: loc?, type: function, ?self_type: t?, block: Block?) -> void
547
+
548
+ include _TypeBase
549
+
550
+ attr_reader location: loc?
551
+
552
+ def map_type: () { (t) -> t } -> Proc
553
+ | () -> Enumerator[t, Proc]
554
+ end
555
+
556
+ class Literal
557
+ type literal = String | Integer | Symbol | TrueClass | FalseClass
558
+ type loc = Location[bot, bot]
559
+
560
+ attr_reader literal: literal
561
+
562
+ def initialize: (literal: literal, location: loc?) -> void
563
+
564
+ include _TypeBase
565
+ include NoFreeVariables
566
+ include NoSubst
567
+ include EmptyEachType
568
+ include NoTypeName
569
+
570
+ attr_reader location: loc?
571
+
572
+ TABLE: Hash[String, String]
573
+
574
+ # Unescape string type body
575
+ def self.unescape_string: (String, bool is_double_quote) -> String
576
+ end
577
+ end
578
+ end