rbs-relaxed 3.9.0.1

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 (484) hide show
  1. checksums.yaml +7 -0
  2. data/.github/dependabot.yml +22 -0
  3. data/.github/workflows/comments.yml +35 -0
  4. data/.github/workflows/dependabot.yml +30 -0
  5. data/.github/workflows/ruby.yml +82 -0
  6. data/.github/workflows/typecheck.yml +38 -0
  7. data/.github/workflows/windows.yml +43 -0
  8. data/.gitignore +23 -0
  9. data/.rubocop.yml +68 -0
  10. data/BSDL +22 -0
  11. data/CHANGELOG.md +1868 -0
  12. data/COPYING +56 -0
  13. data/README.md +203 -0
  14. data/Rakefile +417 -0
  15. data/Steepfile +44 -0
  16. data/config.yml +313 -0
  17. data/core/array.rbs +4062 -0
  18. data/core/basic_object.rbs +375 -0
  19. data/core/binding.rbs +150 -0
  20. data/core/builtin.rbs +277 -0
  21. data/core/class.rbs +220 -0
  22. data/core/comparable.rbs +171 -0
  23. data/core/complex.rbs +786 -0
  24. data/core/constants.rbs +96 -0
  25. data/core/data.rbs +415 -0
  26. data/core/dir.rbs +981 -0
  27. data/core/encoding.rbs +1371 -0
  28. data/core/enumerable.rbs +2405 -0
  29. data/core/enumerator/product.rbs +92 -0
  30. data/core/enumerator.rbs +630 -0
  31. data/core/env.rbs +6 -0
  32. data/core/errno.rbs +673 -0
  33. data/core/errors.rbs +760 -0
  34. data/core/exception.rbs +485 -0
  35. data/core/false_class.rbs +82 -0
  36. data/core/fiber.rbs +550 -0
  37. data/core/fiber_error.rbs +11 -0
  38. data/core/file.rbs +2936 -0
  39. data/core/file_test.rbs +331 -0
  40. data/core/float.rbs +1151 -0
  41. data/core/gc.rbs +644 -0
  42. data/core/global_variables.rbs +184 -0
  43. data/core/hash.rbs +1861 -0
  44. data/core/integer.rbs +1413 -0
  45. data/core/io/buffer.rbs +984 -0
  46. data/core/io/wait.rbs +70 -0
  47. data/core/io.rbs +3406 -0
  48. data/core/kernel.rbs +3096 -0
  49. data/core/marshal.rbs +207 -0
  50. data/core/match_data.rbs +635 -0
  51. data/core/math.rbs +729 -0
  52. data/core/method.rbs +386 -0
  53. data/core/module.rbs +1704 -0
  54. data/core/nil_class.rbs +209 -0
  55. data/core/numeric.rbs +818 -0
  56. data/core/object.rbs +110 -0
  57. data/core/object_space/weak_key_map.rbs +166 -0
  58. data/core/object_space.rbs +190 -0
  59. data/core/proc.rbs +868 -0
  60. data/core/process.rbs +2296 -0
  61. data/core/ractor.rbs +1068 -0
  62. data/core/random.rbs +237 -0
  63. data/core/range.rbs +1107 -0
  64. data/core/rational.rbs +531 -0
  65. data/core/rb_config.rbs +88 -0
  66. data/core/rbs/unnamed/argf.rbs +1229 -0
  67. data/core/rbs/unnamed/env_class.rbs +1209 -0
  68. data/core/rbs/unnamed/random.rbs +293 -0
  69. data/core/refinement.rbs +59 -0
  70. data/core/regexp.rbs +1930 -0
  71. data/core/ruby_vm.rbs +765 -0
  72. data/core/rubygems/basic_specification.rbs +6 -0
  73. data/core/rubygems/config_file.rbs +38 -0
  74. data/core/rubygems/dependency_installer.rbs +6 -0
  75. data/core/rubygems/errors.rbs +176 -0
  76. data/core/rubygems/installer.rbs +15 -0
  77. data/core/rubygems/path_support.rbs +6 -0
  78. data/core/rubygems/platform.rbs +7 -0
  79. data/core/rubygems/request_set.rbs +49 -0
  80. data/core/rubygems/requirement.rbs +148 -0
  81. data/core/rubygems/rubygems.rbs +1171 -0
  82. data/core/rubygems/source_list.rbs +15 -0
  83. data/core/rubygems/specification.rbs +23 -0
  84. data/core/rubygems/stream_ui.rbs +5 -0
  85. data/core/rubygems/uninstaller.rbs +10 -0
  86. data/core/rubygems/version.rbs +294 -0
  87. data/core/set.rbs +621 -0
  88. data/core/signal.rbs +100 -0
  89. data/core/string.rbs +3583 -0
  90. data/core/struct.rbs +667 -0
  91. data/core/symbol.rbs +475 -0
  92. data/core/thread.rbs +1765 -0
  93. data/core/thread_group.rbs +79 -0
  94. data/core/time.rbs +1762 -0
  95. data/core/trace_point.rbs +477 -0
  96. data/core/true_class.rbs +98 -0
  97. data/core/unbound_method.rbs +329 -0
  98. data/core/warning.rbs +87 -0
  99. data/docs/CONTRIBUTING.md +106 -0
  100. data/docs/architecture.md +110 -0
  101. data/docs/collection.md +192 -0
  102. data/docs/data_and_struct.md +86 -0
  103. data/docs/gem.md +57 -0
  104. data/docs/rbs_by_example.md +309 -0
  105. data/docs/repo.md +125 -0
  106. data/docs/sigs.md +167 -0
  107. data/docs/stdlib.md +147 -0
  108. data/docs/syntax.md +910 -0
  109. data/docs/tools.md +17 -0
  110. data/exe/rbs +7 -0
  111. data/ext/rbs_extension/extconf.rb +15 -0
  112. data/ext/rbs_extension/lexer.c +2728 -0
  113. data/ext/rbs_extension/lexer.h +179 -0
  114. data/ext/rbs_extension/lexer.re +147 -0
  115. data/ext/rbs_extension/lexstate.c +175 -0
  116. data/ext/rbs_extension/location.c +325 -0
  117. data/ext/rbs_extension/location.h +85 -0
  118. data/ext/rbs_extension/main.c +33 -0
  119. data/ext/rbs_extension/parser.c +2973 -0
  120. data/ext/rbs_extension/parser.h +18 -0
  121. data/ext/rbs_extension/parserstate.c +397 -0
  122. data/ext/rbs_extension/parserstate.h +163 -0
  123. data/ext/rbs_extension/rbs_extension.h +31 -0
  124. data/ext/rbs_extension/unescape.c +32 -0
  125. data/goodcheck.yml +91 -0
  126. data/include/rbs/constants.h +82 -0
  127. data/include/rbs/ruby_objs.h +72 -0
  128. data/include/rbs/util/rbs_constant_pool.h +219 -0
  129. data/include/rbs.h +7 -0
  130. data/lib/rbs/ancestor_graph.rb +92 -0
  131. data/lib/rbs/annotate/annotations.rb +199 -0
  132. data/lib/rbs/annotate/formatter.rb +92 -0
  133. data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
  134. data/lib/rbs/annotate/rdoc_source.rb +131 -0
  135. data/lib/rbs/annotate.rb +8 -0
  136. data/lib/rbs/ast/annotation.rb +29 -0
  137. data/lib/rbs/ast/comment.rb +29 -0
  138. data/lib/rbs/ast/declarations.rb +467 -0
  139. data/lib/rbs/ast/directives.rb +49 -0
  140. data/lib/rbs/ast/members.rb +451 -0
  141. data/lib/rbs/ast/type_param.rb +225 -0
  142. data/lib/rbs/ast/visitor.rb +137 -0
  143. data/lib/rbs/buffer.rb +67 -0
  144. data/lib/rbs/builtin_names.rb +58 -0
  145. data/lib/rbs/cli/colored_io.rb +48 -0
  146. data/lib/rbs/cli/diff.rb +83 -0
  147. data/lib/rbs/cli/validate.rb +357 -0
  148. data/lib/rbs/cli.rb +1223 -0
  149. data/lib/rbs/collection/cleaner.rb +38 -0
  150. data/lib/rbs/collection/config/lockfile.rb +92 -0
  151. data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
  152. data/lib/rbs/collection/config.rb +81 -0
  153. data/lib/rbs/collection/installer.rb +32 -0
  154. data/lib/rbs/collection/sources/base.rb +14 -0
  155. data/lib/rbs/collection/sources/git.rb +258 -0
  156. data/lib/rbs/collection/sources/local.rb +81 -0
  157. data/lib/rbs/collection/sources/rubygems.rb +48 -0
  158. data/lib/rbs/collection/sources/stdlib.rb +50 -0
  159. data/lib/rbs/collection/sources.rb +38 -0
  160. data/lib/rbs/collection.rb +16 -0
  161. data/lib/rbs/constant.rb +28 -0
  162. data/lib/rbs/definition.rb +401 -0
  163. data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
  164. data/lib/rbs/definition_builder/method_builder.rb +254 -0
  165. data/lib/rbs/definition_builder.rb +845 -0
  166. data/lib/rbs/diff.rb +125 -0
  167. data/lib/rbs/environment/use_map.rb +77 -0
  168. data/lib/rbs/environment.rb +829 -0
  169. data/lib/rbs/environment_loader.rb +173 -0
  170. data/lib/rbs/environment_walker.rb +155 -0
  171. data/lib/rbs/errors.rb +645 -0
  172. data/lib/rbs/factory.rb +18 -0
  173. data/lib/rbs/file_finder.rb +28 -0
  174. data/lib/rbs/location_aux.rb +138 -0
  175. data/lib/rbs/locator.rb +243 -0
  176. data/lib/rbs/method_type.rb +143 -0
  177. data/lib/rbs/namespace.rb +125 -0
  178. data/lib/rbs/parser/lex_result.rb +15 -0
  179. data/lib/rbs/parser/token.rb +23 -0
  180. data/lib/rbs/parser_aux.rb +114 -0
  181. data/lib/rbs/prototype/helpers.rb +140 -0
  182. data/lib/rbs/prototype/node_usage.rb +99 -0
  183. data/lib/rbs/prototype/rb.rb +840 -0
  184. data/lib/rbs/prototype/rbi.rb +641 -0
  185. data/lib/rbs/prototype/runtime/helpers.rb +59 -0
  186. data/lib/rbs/prototype/runtime/reflection.rb +19 -0
  187. data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
  188. data/lib/rbs/prototype/runtime.rb +667 -0
  189. data/lib/rbs/repository.rb +127 -0
  190. data/lib/rbs/resolver/constant_resolver.rb +219 -0
  191. data/lib/rbs/resolver/type_name_resolver.rb +91 -0
  192. data/lib/rbs/sorter.rb +198 -0
  193. data/lib/rbs/substitution.rb +83 -0
  194. data/lib/rbs/subtractor.rb +201 -0
  195. data/lib/rbs/test/errors.rb +80 -0
  196. data/lib/rbs/test/guaranteed.rb +30 -0
  197. data/lib/rbs/test/hook.rb +212 -0
  198. data/lib/rbs/test/observer.rb +19 -0
  199. data/lib/rbs/test/setup.rb +84 -0
  200. data/lib/rbs/test/setup_helper.rb +50 -0
  201. data/lib/rbs/test/tester.rb +167 -0
  202. data/lib/rbs/test/type_check.rb +435 -0
  203. data/lib/rbs/test.rb +112 -0
  204. data/lib/rbs/type_alias_dependency.rb +100 -0
  205. data/lib/rbs/type_alias_regularity.rb +126 -0
  206. data/lib/rbs/type_name.rb +109 -0
  207. data/lib/rbs/types.rb +1596 -0
  208. data/lib/rbs/unit_test/convertibles.rb +176 -0
  209. data/lib/rbs/unit_test/spy.rb +138 -0
  210. data/lib/rbs/unit_test/type_assertions.rb +347 -0
  211. data/lib/rbs/unit_test/with_aliases.rb +143 -0
  212. data/lib/rbs/unit_test.rb +6 -0
  213. data/lib/rbs/validator.rb +186 -0
  214. data/lib/rbs/variance_calculator.rb +189 -0
  215. data/lib/rbs/vendorer.rb +71 -0
  216. data/lib/rbs/version.rb +5 -0
  217. data/lib/rbs/writer.rb +424 -0
  218. data/lib/rbs.rb +94 -0
  219. data/lib/rdoc/discover.rb +20 -0
  220. data/lib/rdoc_plugin/parser.rb +163 -0
  221. data/rbs-relaxed.gemspec +48 -0
  222. data/schema/annotation.json +14 -0
  223. data/schema/comment.json +26 -0
  224. data/schema/decls.json +326 -0
  225. data/schema/function.json +87 -0
  226. data/schema/location.json +56 -0
  227. data/schema/members.json +266 -0
  228. data/schema/methodType.json +50 -0
  229. data/schema/typeParam.json +36 -0
  230. data/schema/types.json +317 -0
  231. data/sig/ancestor_builder.rbs +163 -0
  232. data/sig/ancestor_graph.rbs +60 -0
  233. data/sig/annotate/annotations.rbs +102 -0
  234. data/sig/annotate/formatter.rbs +24 -0
  235. data/sig/annotate/rdoc_annotater.rbs +82 -0
  236. data/sig/annotate/rdoc_source.rbs +30 -0
  237. data/sig/annotation.rbs +27 -0
  238. data/sig/buffer.rbs +32 -0
  239. data/sig/builtin_names.rbs +44 -0
  240. data/sig/cli/colored_io.rbs +15 -0
  241. data/sig/cli/diff.rbs +21 -0
  242. data/sig/cli/validate.rbs +43 -0
  243. data/sig/cli.rbs +87 -0
  244. data/sig/collection/cleaner.rbs +13 -0
  245. data/sig/collection/config/lockfile.rbs +74 -0
  246. data/sig/collection/config/lockfile_generator.rbs +66 -0
  247. data/sig/collection/config.rbs +46 -0
  248. data/sig/collection/installer.rbs +17 -0
  249. data/sig/collection/sources.rbs +214 -0
  250. data/sig/collection.rbs +4 -0
  251. data/sig/comment.rbs +26 -0
  252. data/sig/constant.rbs +21 -0
  253. data/sig/declarations.rbs +267 -0
  254. data/sig/definition.rbs +173 -0
  255. data/sig/definition_builder.rbs +165 -0
  256. data/sig/diff.rbs +28 -0
  257. data/sig/directives.rbs +77 -0
  258. data/sig/environment.rbs +279 -0
  259. data/sig/environment_loader.rbs +111 -0
  260. data/sig/environment_walker.rbs +65 -0
  261. data/sig/errors.rbs +405 -0
  262. data/sig/factory.rbs +5 -0
  263. data/sig/file_finder.rbs +28 -0
  264. data/sig/location.rbs +110 -0
  265. data/sig/locator.rbs +58 -0
  266. data/sig/manifest.yaml +7 -0
  267. data/sig/members.rbs +258 -0
  268. data/sig/method_builder.rbs +84 -0
  269. data/sig/method_types.rbs +58 -0
  270. data/sig/namespace.rbs +146 -0
  271. data/sig/parser.rbs +100 -0
  272. data/sig/prototype/helpers.rbs +27 -0
  273. data/sig/prototype/node_usage.rbs +20 -0
  274. data/sig/prototype/rb.rbs +96 -0
  275. data/sig/prototype/rbi.rbs +75 -0
  276. data/sig/prototype/runtime.rbs +182 -0
  277. data/sig/rbs.rbs +21 -0
  278. data/sig/rdoc/rbs.rbs +67 -0
  279. data/sig/repository.rbs +85 -0
  280. data/sig/resolver/constant_resolver.rbs +92 -0
  281. data/sig/resolver/context.rbs +34 -0
  282. data/sig/resolver/type_name_resolver.rbs +35 -0
  283. data/sig/shims/bundler.rbs +38 -0
  284. data/sig/shims/enumerable.rbs +5 -0
  285. data/sig/shims/rubygems.rbs +19 -0
  286. data/sig/sorter.rbs +41 -0
  287. data/sig/substitution.rbs +48 -0
  288. data/sig/subtractor.rbs +37 -0
  289. data/sig/test/errors.rbs +52 -0
  290. data/sig/test/guranteed.rbs +9 -0
  291. data/sig/test/type_check.rbs +19 -0
  292. data/sig/test.rbs +82 -0
  293. data/sig/type_alias_dependency.rbs +53 -0
  294. data/sig/type_alias_regularity.rbs +98 -0
  295. data/sig/type_param.rbs +110 -0
  296. data/sig/typename.rbs +79 -0
  297. data/sig/types.rbs +579 -0
  298. data/sig/unit_test/convertibles.rbs +154 -0
  299. data/sig/unit_test/spy.rbs +30 -0
  300. data/sig/unit_test/type_assertions.rbs +196 -0
  301. data/sig/unit_test/with_aliases.rbs +136 -0
  302. data/sig/use_map.rbs +35 -0
  303. data/sig/util.rbs +9 -0
  304. data/sig/validator.rbs +63 -0
  305. data/sig/variance_calculator.rbs +87 -0
  306. data/sig/vendorer.rbs +51 -0
  307. data/sig/version.rbs +3 -0
  308. data/sig/visitor.rbs +47 -0
  309. data/sig/writer.rbs +127 -0
  310. data/src/constants.c +153 -0
  311. data/src/ruby_objs.c +795 -0
  312. data/src/util/rbs_constant_pool.c +342 -0
  313. data/stdlib/abbrev/0/abbrev.rbs +66 -0
  314. data/stdlib/abbrev/0/array.rbs +26 -0
  315. data/stdlib/base64/0/base64.rbs +355 -0
  316. data/stdlib/benchmark/0/benchmark.rbs +452 -0
  317. data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
  318. data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
  319. data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
  320. data/stdlib/cgi/0/core.rbs +1285 -0
  321. data/stdlib/cgi/0/manifest.yaml +3 -0
  322. data/stdlib/coverage/0/coverage.rbs +263 -0
  323. data/stdlib/csv/0/csv.rbs +3776 -0
  324. data/stdlib/csv/0/manifest.yaml +3 -0
  325. data/stdlib/date/0/date.rbs +1585 -0
  326. data/stdlib/date/0/date_time.rbs +616 -0
  327. data/stdlib/date/0/time.rbs +26 -0
  328. data/stdlib/dbm/0/dbm.rbs +421 -0
  329. data/stdlib/delegate/0/delegator.rbs +184 -0
  330. data/stdlib/delegate/0/kernel.rbs +47 -0
  331. data/stdlib/delegate/0/simple_delegator.rbs +96 -0
  332. data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
  333. data/stdlib/digest/0/digest.rbs +577 -0
  334. data/stdlib/erb/0/erb.rbs +532 -0
  335. data/stdlib/etc/0/etc.rbs +865 -0
  336. data/stdlib/fileutils/0/fileutils.rbs +1734 -0
  337. data/stdlib/find/0/find.rbs +49 -0
  338. data/stdlib/forwardable/0/forwardable.rbs +268 -0
  339. data/stdlib/io-console/0/io-console.rbs +414 -0
  340. data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
  341. data/stdlib/json/0/json.rbs +1916 -0
  342. data/stdlib/kconv/0/kconv.rbs +166 -0
  343. data/stdlib/logger/0/formatter.rbs +45 -0
  344. data/stdlib/logger/0/log_device.rbs +100 -0
  345. data/stdlib/logger/0/logger.rbs +796 -0
  346. data/stdlib/logger/0/manifest.yaml +2 -0
  347. data/stdlib/logger/0/period.rbs +17 -0
  348. data/stdlib/logger/0/severity.rbs +34 -0
  349. data/stdlib/minitest/0/kernel.rbs +42 -0
  350. data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
  351. data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
  352. data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
  353. data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
  354. data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
  355. data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
  356. data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
  357. data/stdlib/minitest/0/minitest/compress.rbs +13 -0
  358. data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
  359. data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
  360. data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
  361. data/stdlib/minitest/0/minitest/guard.rbs +64 -0
  362. data/stdlib/minitest/0/minitest/mock.rbs +64 -0
  363. data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
  364. data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
  365. data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
  366. data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
  367. data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
  368. data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
  369. data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
  370. data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
  371. data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
  372. data/stdlib/minitest/0/minitest/result.rbs +28 -0
  373. data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
  374. data/stdlib/minitest/0/minitest/skip.rbs +6 -0
  375. data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
  376. data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
  377. data/stdlib/minitest/0/minitest/spec.rbs +11 -0
  378. data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
  379. data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
  380. data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
  381. data/stdlib/minitest/0/minitest/test.rbs +69 -0
  382. data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
  383. data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
  384. data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
  385. data/stdlib/minitest/0/minitest/unit.rbs +4 -0
  386. data/stdlib/minitest/0/minitest.rbs +115 -0
  387. data/stdlib/monitor/0/monitor.rbs +363 -0
  388. data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
  389. data/stdlib/net-http/0/manifest.yaml +3 -0
  390. data/stdlib/net-http/0/net-http.rbs +5552 -0
  391. data/stdlib/net-protocol/0/manifest.yaml +2 -0
  392. data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
  393. data/stdlib/net-smtp/0/manifest.yaml +2 -0
  394. data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
  395. data/stdlib/nkf/0/nkf.rbs +402 -0
  396. data/stdlib/objspace/0/objspace.rbs +487 -0
  397. data/stdlib/observable/0/observable.rbs +217 -0
  398. data/stdlib/open-uri/0/manifest.yaml +4 -0
  399. data/stdlib/open-uri/0/open-uri.rbs +393 -0
  400. data/stdlib/open3/0/open3.rbs +147 -0
  401. data/stdlib/openssl/0/manifest.yaml +3 -0
  402. data/stdlib/openssl/0/openssl.rbs +12113 -0
  403. data/stdlib/optparse/0/optparse.rbs +1725 -0
  404. data/stdlib/pathname/0/pathname.rbs +1406 -0
  405. data/stdlib/pp/0/manifest.yaml +2 -0
  406. data/stdlib/pp/0/pp.rbs +300 -0
  407. data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
  408. data/stdlib/pstore/0/pstore.rbs +603 -0
  409. data/stdlib/psych/0/core_ext.rbs +12 -0
  410. data/stdlib/psych/0/dbm.rbs +237 -0
  411. data/stdlib/psych/0/manifest.yaml +3 -0
  412. data/stdlib/psych/0/psych.rbs +402 -0
  413. data/stdlib/psych/0/store.rbs +59 -0
  414. data/stdlib/pty/0/pty.rbs +237 -0
  415. data/stdlib/rdoc/0/code_object.rbs +51 -0
  416. data/stdlib/rdoc/0/comment.rbs +59 -0
  417. data/stdlib/rdoc/0/context.rbs +153 -0
  418. data/stdlib/rdoc/0/markup.rbs +117 -0
  419. data/stdlib/rdoc/0/parser.rbs +56 -0
  420. data/stdlib/rdoc/0/rdoc.rbs +391 -0
  421. data/stdlib/rdoc/0/ri.rbs +17 -0
  422. data/stdlib/rdoc/0/store.rbs +48 -0
  423. data/stdlib/rdoc/0/top_level.rbs +97 -0
  424. data/stdlib/resolv/0/manifest.yaml +3 -0
  425. data/stdlib/resolv/0/resolv.rbs +1830 -0
  426. data/stdlib/ripper/0/ripper.rbs +1648 -0
  427. data/stdlib/securerandom/0/securerandom.rbs +62 -0
  428. data/stdlib/shellwords/0/shellwords.rbs +229 -0
  429. data/stdlib/singleton/0/singleton.rbs +131 -0
  430. data/stdlib/socket/0/addrinfo.rbs +666 -0
  431. data/stdlib/socket/0/basic_socket.rbs +590 -0
  432. data/stdlib/socket/0/constants.rbs +2295 -0
  433. data/stdlib/socket/0/ip_socket.rbs +92 -0
  434. data/stdlib/socket/0/socket.rbs +4157 -0
  435. data/stdlib/socket/0/socket_error.rbs +5 -0
  436. data/stdlib/socket/0/tcp_server.rbs +192 -0
  437. data/stdlib/socket/0/tcp_socket.rbs +79 -0
  438. data/stdlib/socket/0/udp_socket.rbs +133 -0
  439. data/stdlib/socket/0/unix_server.rbs +169 -0
  440. data/stdlib/socket/0/unix_socket.rbs +172 -0
  441. data/stdlib/stringio/0/stringio.rbs +567 -0
  442. data/stdlib/strscan/0/string_scanner.rbs +1627 -0
  443. data/stdlib/tempfile/0/tempfile.rbs +479 -0
  444. data/stdlib/time/0/time.rbs +432 -0
  445. data/stdlib/timeout/0/timeout.rbs +81 -0
  446. data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
  447. data/stdlib/tsort/0/cyclic.rbs +5 -0
  448. data/stdlib/tsort/0/interfaces.rbs +20 -0
  449. data/stdlib/tsort/0/tsort.rbs +409 -0
  450. data/stdlib/uri/0/common.rbs +582 -0
  451. data/stdlib/uri/0/file.rbs +118 -0
  452. data/stdlib/uri/0/ftp.rbs +13 -0
  453. data/stdlib/uri/0/generic.rbs +1108 -0
  454. data/stdlib/uri/0/http.rbs +104 -0
  455. data/stdlib/uri/0/https.rbs +14 -0
  456. data/stdlib/uri/0/ldap.rbs +230 -0
  457. data/stdlib/uri/0/ldaps.rbs +14 -0
  458. data/stdlib/uri/0/mailto.rbs +92 -0
  459. data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
  460. data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
  461. data/stdlib/uri/0/ws.rbs +13 -0
  462. data/stdlib/uri/0/wss.rbs +9 -0
  463. data/stdlib/yaml/0/manifest.yaml +2 -0
  464. data/stdlib/yaml/0/yaml.rbs +1 -0
  465. data/stdlib/zlib/0/buf_error.rbs +10 -0
  466. data/stdlib/zlib/0/data_error.rbs +10 -0
  467. data/stdlib/zlib/0/deflate.rbs +210 -0
  468. data/stdlib/zlib/0/error.rbs +20 -0
  469. data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
  470. data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
  471. data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
  472. data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
  473. data/stdlib/zlib/0/gzip_file.rbs +156 -0
  474. data/stdlib/zlib/0/gzip_reader.rbs +293 -0
  475. data/stdlib/zlib/0/gzip_writer.rbs +166 -0
  476. data/stdlib/zlib/0/inflate.rbs +180 -0
  477. data/stdlib/zlib/0/mem_error.rbs +10 -0
  478. data/stdlib/zlib/0/need_dict.rbs +13 -0
  479. data/stdlib/zlib/0/stream_end.rbs +11 -0
  480. data/stdlib/zlib/0/stream_error.rbs +11 -0
  481. data/stdlib/zlib/0/version_error.rbs +11 -0
  482. data/stdlib/zlib/0/zlib.rbs +449 -0
  483. data/stdlib/zlib/0/zstream.rbs +200 -0
  484. metadata +532 -0
@@ -0,0 +1,96 @@
1
+ module RBS
2
+ module Prototype
3
+ class RB
4
+ include Helpers
5
+
6
+ class Context
7
+ type method_kind = :singleton | :singleton_instance | :instance
8
+
9
+ attr_accessor module_function: bool
10
+
11
+ attr_accessor singleton: bool
12
+
13
+ attr_accessor namespace: Namespace
14
+
15
+ attr_accessor in_def: bool
16
+
17
+ def initialize: (module_function: bool, singleton: bool, namespace: Namespace, in_def: bool) -> void
18
+
19
+ def method_kind: () -> method_kind
20
+
21
+ def attribute_kind: () -> (:singleton | :instance)
22
+
23
+ def enter_namespace: (Namespace) -> Context
24
+
25
+ def update: (?module_function: bool, ?singleton: bool, ?in_def: bool) -> Context
26
+
27
+ def self.initial: (?namespace: Namespace) -> Context
28
+ end
29
+
30
+ type decl = AST::Declarations::t | AST::Members::t
31
+
32
+ attr_reader source_decls: Array[decl]
33
+
34
+ def initialize: () -> void
35
+
36
+ def decls: () -> Array[AST::Declarations::t]
37
+
38
+ def parse: (String) -> void
39
+
40
+ def process: (untyped node, decls: Array[AST::Declarations::t | AST::Members::t], comments: Hash[Integer, AST::Comment], context: Context) -> void
41
+
42
+ def process_children: (RubyVM::AbstractSyntaxTree::Node node, decls: Array[decl], comments: Hash[Integer, AST::Comment], context: Context) -> void
43
+
44
+ # Returns a type name that represents the name of the constant.
45
+ # `node` must be _constant_ node, `CONST`, `COLON2`, or `COLON3` node.
46
+ #
47
+ def const_to_name!: (RubyVM::AbstractSyntaxTree::Node node, ?context: Context?) -> TypeName
48
+
49
+ # Returns a type name that represents the name of the constant.
50
+ # `node` can be `SELF` for `extend self` pattern.
51
+ #
52
+ def const_to_name: (RubyVM::AbstractSyntaxTree::Node? node, context: Context) -> TypeName?
53
+
54
+ def literal_to_symbol: (RubyVM::AbstractSyntaxTree::Node node) -> Symbol?
55
+
56
+ def function_type_from_body: (RubyVM::AbstractSyntaxTree::Node node, Symbol def_name) -> Types::Function
57
+
58
+ def function_return_type_from_body: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
59
+
60
+ def body_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
61
+
62
+ def if_unless_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
63
+
64
+ def block_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
65
+
66
+ def literal_to_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
67
+
68
+ def types_to_union_type: (Array[Types::t] types) -> Types::t
69
+
70
+ def range_element_type: (Array[Types::t] types) -> Types::t
71
+
72
+ def param_type: (RubyVM::AbstractSyntaxTree::Node node, ?default: Types::Bases::Any) -> Types::t
73
+
74
+ # backward compatible
75
+ alias node_type param_type
76
+
77
+ def private: () -> AST::Members::Private
78
+
79
+ @private: AST::Members::Private?
80
+
81
+ def public: () -> AST::Members::Public
82
+
83
+ @public: AST::Members::Public?
84
+
85
+ def current_accessibility: (Array[decl] decls, ?Integer index) -> (AST::Members::Private | AST::Members::Public)
86
+
87
+ def remove_unnecessary_accessibility_methods!: (Array[decl]) -> void
88
+
89
+ def is_accessibility?: (decl) -> bool
90
+
91
+ def find_def_index_by_name: (Array[decl] decls, Symbol name) -> [Integer, AST::Members::MethodDefinition | AST::Members::AttrReader | AST::Members::AttrWriter]?
92
+
93
+ def sort_members!: (Array[decl] decls) -> void
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,75 @@
1
+ module RBS
2
+ module Prototype
3
+ class RBI
4
+ include Helpers
5
+
6
+ attr_reader decls: Array[AST::Declarations::t]
7
+
8
+ type module_decl = AST::Declarations::Class | AST::Declarations::Module
9
+
10
+ # A stack representing the module nesting structure in the Ruby code
11
+ attr_reader modules: Array[module_decl]
12
+
13
+ # Last subsequent `sig` calls
14
+ attr_reader last_sig: Array[RubyVM::AbstractSyntaxTree::Node]?
15
+
16
+ def initialize: () -> void
17
+
18
+ def parse: (String) -> void
19
+
20
+ def nested_name: (RubyVM::AbstractSyntaxTree::Node name) -> TypeName
21
+
22
+ def current_namespace: () -> Namespace
23
+
24
+ def push_class: (
25
+ RubyVM::AbstractSyntaxTree::Node name,
26
+ RubyVM::AbstractSyntaxTree::Node super_class,
27
+ comment: AST::Comment?
28
+ ) { () -> void } -> void
29
+
30
+ def push_module: (RubyVM::AbstractSyntaxTree::Node name, comment: AST::Comment?) { () -> void } -> void
31
+
32
+ # The inner most module/class definition, returns `nil` on toplevel
33
+ def current_module: () -> module_decl?
34
+
35
+ # The inner most module/class definition, raises on toplevel
36
+ def current_module!: () -> module_decl
37
+
38
+ # Put a `sig` call to current list.
39
+ def push_sig: (RubyVM::AbstractSyntaxTree::Node node) -> void
40
+
41
+ # Clear the `sig` call list
42
+ def pop_sig: () -> Array[RubyVM::AbstractSyntaxTree::Node]?
43
+
44
+ def join_comments: (Array[RubyVM::AbstractSyntaxTree::Node] nodes, Hash[Integer, AST::Comment] comments) -> AST::Comment
45
+
46
+ def process: (RubyVM::AbstractSyntaxTree::Node node, comments: Hash[Integer, AST::Comment], ?outer: Array[RubyVM::AbstractSyntaxTree::Node]) -> void
47
+
48
+ def method_type: (RubyVM::AbstractSyntaxTree::Node? args_node, RubyVM::AbstractSyntaxTree::Node? type_node, variables: Array[AST::TypeParam], overloads: Integer) -> MethodType?
49
+
50
+ def parse_params: (RubyVM::AbstractSyntaxTree::Node args_node, RubyVM::AbstractSyntaxTree::Node args, MethodType method_type, variables: Array[AST::TypeParam], overloads: Integer) -> MethodType
51
+
52
+ def type_of: (RubyVM::AbstractSyntaxTree::Node type_node, variables: Array[AST::TypeParam]) -> Types::t
53
+
54
+ def type_of0: (RubyVM::AbstractSyntaxTree::Node type_node, variables: Array[AST::TypeParam]) -> Types::t
55
+
56
+ def proc_type?: (RubyVM::AbstractSyntaxTree::Node type_node) -> bool
57
+
58
+ def call_node?: (RubyVM::AbstractSyntaxTree::Node node, name: Symbol, ?receiver: ^(RubyVM::AbstractSyntaxTree::Node) -> bool, ?args: ^(RubyVM::AbstractSyntaxTree::Node) -> bool) -> bool
59
+
60
+ # Receives a constant node and returns `TypeName` instance
61
+ def const_to_name: (RubyVM::AbstractSyntaxTree::Node node) -> TypeName
62
+
63
+ # Receives `:ARRAY` or `:LIST` node and yields the child nodes.
64
+ def each_arg: (RubyVM::AbstractSyntaxTree::Node array) { (RubyVM::AbstractSyntaxTree::Node) -> void } -> void
65
+ | (RubyVM::AbstractSyntaxTree::Node array) -> Enumerator[RubyVM::AbstractSyntaxTree::Node, void]
66
+
67
+ # Receives node and yields the child nodes.
68
+ def each_child: (RubyVM::AbstractSyntaxTree::Node node) { (RubyVM::AbstractSyntaxTree::Node) -> void } -> void
69
+ | (RubyVM::AbstractSyntaxTree::Node node) -> Enumerator[RubyVM::AbstractSyntaxTree::Node, void]
70
+
71
+ # Receives a keyword `:HASH` node and returns hash instance.
72
+ def node_to_hash: (RubyVM::AbstractSyntaxTree::Node node) -> Hash[Symbol, RubyVM::AbstractSyntaxTree::Node]?
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,182 @@
1
+ module RBS
2
+ module Prototype
3
+ class Runtime
4
+ module Reflection
5
+ self.@object_class: UnboundMethod
6
+ def self.object_class: (Module value) -> Class
7
+
8
+ self.@constants_of: UnboundMethod
9
+ def self.constants_of: (Module mod, ?bool inherit) -> Array[Symbol]
10
+ end
11
+
12
+ module Helpers
13
+ @module_name_method: UnboundMethod
14
+ @untyped: Types::Bases::Any
15
+
16
+ private
17
+
18
+ def const_name: (Module const) -> String?
19
+
20
+ def const_name!: (Module const) -> String
21
+
22
+ # Returns the exact name & not compactly declared name
23
+ def only_name: (Module mod) -> String
24
+
25
+ def to_type_name: (String name, ?full_name: bool) -> TypeName
26
+
27
+ def untyped: () -> Types::Bases::Any
28
+ end
29
+
30
+ class ValueObjectBase
31
+ include Helpers
32
+
33
+ # @target_class stores the singleton object of `Data` or `Struct` subclass
34
+ @target_class: untyped
35
+
36
+ def build_decl: () -> AST::Declarations::Class
37
+
38
+ private
39
+
40
+ def build_member_accessors: (untyped ast_members_class) -> untyped
41
+
42
+ def build_s_members: () -> Array[AST::Members::MethodDefinition]
43
+
44
+ def build_super_class: () -> AST::Declarations::Class::Super
45
+
46
+ def add_decl_members: (AST::Declarations::Class) -> void
47
+
48
+ def initialize: (Class target_class) -> void
49
+ end
50
+
51
+ class StructGenerator < ValueObjectBase
52
+ def self.generatable?: (Class target) -> bool
53
+
54
+ private
55
+
56
+ def add_decl_members: (AST::Declarations::Class decl) -> void
57
+
58
+ def build_overload_for_keyword_arguments: () -> AST::Members::MethodDefinition::Overload
59
+
60
+ def build_overload_for_positional_arguments: () -> AST::Members::MethodDefinition::Overload
61
+
62
+ def build_s_keyword_init_p: () -> Array[AST::Members::MethodDefinition]
63
+
64
+ def build_s_new: () -> Array[AST::Members::MethodDefinition]
65
+
66
+ def build_super_class: () -> AST::Declarations::Class::Super
67
+
68
+ CAN_CALL_KEYWORD_INIT_P: bool
69
+ end
70
+
71
+ class DataGenerator < ValueObjectBase
72
+ def self.generatable?: (Class target) -> bool
73
+
74
+ private
75
+
76
+ def add_decl_members: (AST::Declarations::Class decl) -> void
77
+
78
+ def build_s_new: () -> Array[AST::Members::MethodDefinition]
79
+
80
+ def build_super_class: () -> AST::Declarations::Class::Super
81
+ end
82
+
83
+ class Todo
84
+ @builder: DefinitionBuilder
85
+
86
+ @mixin_decls_cache: Hash[TypeName, Array[untyped]]
87
+
88
+ def initialize: (builder: DefinitionBuilder) -> void
89
+
90
+ def skip_mixin?: (type_name: TypeName, module_name: TypeName, mixin_class: mixin_class) -> bool
91
+
92
+ def skip_singleton_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
93
+
94
+ def skip_instance_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
95
+
96
+ def skip_constant?: (module_name: String, name: Symbol) -> bool
97
+
98
+ private def mixin_decls: (TypeName type_name) -> Array[AST::Members::Include | AST::Members::Extend | AST::Members::Prepend]
99
+ end
100
+
101
+ type mixin_class = singleton(AST::Members::Include) | singleton(AST::Members::Prepend) | singleton(AST::Members::Extend)
102
+
103
+ @decls: Array[AST::Declarations::t]?
104
+
105
+ @modules: Hash[String, Module]
106
+
107
+ @builder: DefinitionBuilder
108
+
109
+ @module_name_method: UnboundMethod
110
+ @object_class: UnboundMethod
111
+
112
+ @todo_object: Todo?
113
+
114
+ include Helpers
115
+
116
+ attr_reader patterns: Array[String]
117
+
118
+ attr_reader env: Environment
119
+
120
+ attr_reader merge: bool
121
+
122
+ attr_reader todo: bool
123
+
124
+ attr_accessor outline: bool
125
+
126
+ attr_reader owners_included: Array[Module]
127
+
128
+ def initialize: (patterns: Array[String], env: Environment, merge: bool, ?todo: bool, ?owners_included: Array[Symbol]) -> void
129
+
130
+ def target?: (Module const) -> bool
131
+
132
+ def todo_object: () -> Todo?
133
+
134
+ def builder: () -> DefinitionBuilder
135
+
136
+ def parse: (String file) -> void
137
+
138
+ def decls: () -> Array[AST::Declarations::t]
139
+
140
+ def each_mixined_module: (TypeName type_name, Module mod) { (TypeName, TypeName, mixin_class) -> void } -> void
141
+
142
+ def each_mixined_module_one: (TypeName type_name, Module mod) { (TypeName, TypeName, bool) -> void } -> void
143
+
144
+ def method_type: (UnboundMethod method) -> MethodType
145
+
146
+ def merge_rbs: [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, singleton: Symbol) { () -> A } -> A?
147
+ | [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, instance: Symbol) { () -> A } -> A?
148
+
149
+ def target_method?: (Module mod, instance: Symbol) -> bool
150
+ | (Module mod, singleton: Symbol) -> bool
151
+
152
+ def generate_methods: (Module mod, TypeName module_name, Array[AST::Declarations::Class::member] members) -> void
153
+
154
+ def generate_constants: (Module mod, Array[AST::Declarations::Class::member] decls) -> void
155
+
156
+ def generate_super_class: (Class mod) -> AST::Declarations::Class::Super?
157
+
158
+ def generate_class: (Class mod) -> void
159
+
160
+ def generate_module: (Module mod) -> void
161
+
162
+ def generate_mixin: (Module mod, AST::Declarations::Class | AST::Declarations::Module, TypeName, TypeName) -> void
163
+
164
+ # Generate/find outer module declarations
165
+ # This is broken down into another method to comply with `DRY`
166
+ # This generates/finds declarations in nested form & returns the last array of declarations
167
+ def ensure_outer_module_declarations: (Module mod) -> Array[AST::Declarations::Class::member]
168
+
169
+ def object_class: (untyped) -> untyped
170
+
171
+ def type_args: (TypeName type_name) -> Array[Types::t]
172
+
173
+ def block_from_ast_of: (UnboundMethod method) -> Types::Block?
174
+
175
+ def block_from_body: (RubyVM::AbstractSyntaxTree::Node) -> Types::Block?
176
+
177
+ def can_alias?: (Module, UnboundMethod) -> bool
178
+
179
+ def type_params: (Module) -> Array[AST::TypeParam]
180
+ end
181
+ end
182
+ end
data/sig/rbs.rbs ADDED
@@ -0,0 +1,21 @@
1
+ module RBS
2
+ def self.logger: () -> Logger
3
+
4
+ def self.logger_level: () -> Integer?
5
+
6
+ def self.logger_level=: (Integer?) -> Integer?
7
+
8
+ %a{pure} def self.logger_output: () -> IO?
9
+
10
+ def self.logger_output=: (IO) -> IO
11
+
12
+ def self.print_warning: () { () -> String } -> void
13
+
14
+ self.@logger: Logger?
15
+
16
+ self.@logger_output: IO?
17
+
18
+ self.@logger_level: Integer?
19
+
20
+ self.@warnings: Set[String]
21
+ end
data/sig/rdoc/rbs.rbs ADDED
@@ -0,0 +1,67 @@
1
+ module RDoc
2
+ class Parser
3
+ class RBS < Parser
4
+ end
5
+ end
6
+ end
7
+
8
+ module RBS
9
+ module RDocPlugin
10
+ class Parser
11
+ @top_level: RDoc::TopLevel
12
+
13
+ @content: String
14
+
15
+ type allowed_decls = RBS::AST::Declarations::Class
16
+ | RBS::AST::Declarations::Module
17
+ | RBS::AST::Declarations::Constant
18
+
19
+ def initialize: (RDoc::TopLevel top_level, String content) -> void
20
+
21
+ def scan: () -> RDoc::TopLevel
22
+
23
+ def parse_member: (decl: RBS::AST::Declarations::t | RBS::AST::Members::t, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
24
+
25
+ def parse_class_decl: (decl: RBS::AST::Declarations::Class, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
26
+
27
+ def parse_module_decl: (decl: RBS::AST::Declarations::Module | RBS::AST::Declarations::Interface, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
28
+
29
+ def parse_constant_decl: (decl: RBS::AST::Declarations::Constant, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
30
+
31
+ def parse_method_decl: (decl: RBS::AST::Members::MethodDefinition, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
32
+
33
+ def parse_method_alias_decl: (decl: RBS::AST::Members::Alias, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
34
+
35
+ def parse_attr_decl: (decl: RBS::AST::Members::AttrReader | RBS::AST::Members::AttrAccessor | RBS::AST::Members::AttrWriter, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
36
+
37
+ def parse_include_decl: (decl: RBS::AST::Members::Include, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
38
+
39
+ def parse_extend_decl: (decl: RBS::AST::Members::Extend, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
40
+
41
+ private
42
+
43
+ def construct_comment: (context: RDoc::Context, comment: String) -> RDoc::Comment
44
+
45
+ # _DeclWithComment is a utility interface that has `#comment`
46
+ #
47
+ interface _DeclWithComment
48
+ def comment: () -> ::RBS::AST::Comment?
49
+ end
50
+
51
+ # Extract comment string from a declaration with comment
52
+ #
53
+ # * If `#comment" returns a Comment object, it returns its `#string` value
54
+ # * If `#comment` returns `nil`, it raises an error
55
+ #
56
+ # Note that you have to confirm if the `#comment` of given declaration exists.
57
+ #
58
+ # ```ruby
59
+ # comment = construct_comment(context: context, comment: comment_string(decl)) if decl.comment
60
+ # ```
61
+ #
62
+ def comment_string: (_DeclWithComment) -> String
63
+
64
+ def fully_qualified_name: (outer_name: RBS::TypeName?, decl: allowed_decls) -> RBS::TypeName
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,85 @@
1
+ module RBS
2
+ # Set of RBS repositories.
3
+ #
4
+ # A repository object can handle multiple repository roots.
5
+ #
6
+ # ```ruby
7
+ # repo = RBS::Repository.new()
8
+ # repo.add(Pathname("vendor/rbs/gem-rbs"))
9
+ # repo.add(Pathname("vendor/rbs/internal-rbs"))
10
+ # repo.add(Pathname("vendor/rbs/definitely-rbs"))
11
+ #
12
+ # repo.lookup("minitest", "2.1.3") # => Pathname or nil
13
+ # ```
14
+ #
15
+ # If one gem version can resolve to several directories, the last added dir wins.
16
+ #
17
+ class Repository
18
+ class GemRBS
19
+ attr_reader name: String
20
+
21
+ # Array of gem dirs.
22
+ # Gem dir contains directories for each version.
23
+ attr_reader paths: Array[Pathname]
24
+
25
+ # Hash from a version to VersionPath object.
26
+ attr_reader versions(): Hash[Gem::Version, VersionPath]
27
+
28
+ @versions: Hash[Gem::Version, VersionPath]?
29
+
30
+ def initialize: (name: String) -> void
31
+
32
+ def load!: () -> void
33
+
34
+ def version_names: () -> Array[Gem::Version]
35
+
36
+ def oldest_version: () -> VersionPath
37
+
38
+ def latest_version: () -> VersionPath
39
+
40
+ def find_best_version: (Gem::Version?) -> VersionPath
41
+
42
+ # Returns true if versions is empty.
43
+ def empty?: () -> bool
44
+ end
45
+
46
+ class VersionPath
47
+ attr_reader gem: GemRBS
48
+ attr_reader version: Gem::Version
49
+ attr_reader path: Pathname
50
+
51
+ def initialize: (gem: GemRBS, version: Gem::Version, path: Pathname) -> void
52
+ end
53
+
54
+ DEFAULT_STDLIB_ROOT: Pathname
55
+
56
+ # Array of _root dir_s of repositories.
57
+ #
58
+ attr_reader dirs: Array[Pathname]
59
+
60
+ attr_reader gems: Hash[String, GemRBS]
61
+
62
+ def self.default: () -> instance
63
+
64
+ def self.find_best_version: (Gem::Version? version, Array[Gem::Version] candidates) -> Gem::Version
65
+
66
+ # An optional keyword argument `no_stdlib` is to skip adding directory for stdlib classes.
67
+ # Passing truthy value will skip loading stdlib. (You can add the stdlib root by yourself.)
68
+ #
69
+ def initialize: (?no_stdlib: bool) -> void
70
+
71
+ # Add new _root dir_ to the repository set.
72
+ # If two repository dirs have exactly same gem-version definitions, the latter overwrites the prior.
73
+ #
74
+ def add: (Pathname dir) -> void
75
+
76
+ # Returns a directory for given `gem` name and `version`.
77
+ # `version` can be `nil` for _any version_.
78
+ #
79
+ # If the given gem cannot be found, it returns `nil`.
80
+ #
81
+ def lookup: (String gem, String? version) -> Pathname?
82
+
83
+ def lookup_path: (String gem, String? version) -> [GemRBS, VersionPath]?
84
+ end
85
+ end
@@ -0,0 +1,92 @@
1
+ module RBS
2
+ module Resolver
3
+ class ConstantResolver
4
+ # Table stores the set of immediate child constants of a module.
5
+ #
6
+ # ```rb
7
+ # table = RBS::ConstantResolver::Table.new(env)
8
+ #
9
+ # table.children(TypeName.parse("::Object")) # -> { ... } Returns a hash of name and constants.
10
+ # table.children(TypeName.parse("::File::PATH_SEPARATOR")) # -> nil Returns nil because the constant is not a module.
11
+ #
12
+ # table.toplevel # -> { ... } Returns a hash of top level constants.
13
+ # ```
14
+ #
15
+ # The `#toplevel` is incompatible with Ruby.
16
+ # All constants in Ruby are defined under `Object`, and they are accessed with `::` (Colon3) operator.
17
+ # RBS is different.
18
+ # `::` constants are _toplevel_ constants, and they are not defined under `::Object`.
19
+ #
20
+ # The behavior is simulated in `ConstantResolver`.
21
+ #
22
+ class Table
23
+ attr_reader children_table: Hash[TypeName, Hash[Symbol, Constant]?]
24
+ attr_reader constants_table: Hash[TypeName, Constant]
25
+ attr_reader toplevel: Hash[Symbol, Constant]
26
+
27
+ def initialize: (Environment) -> void
28
+
29
+ def constant: (TypeName constant_name) -> Constant?
30
+
31
+ # Returns a set of constants defined under `module_name`.
32
+ # Returns `nil` if there is no module with given `module_name`.
33
+ #
34
+ def children: (TypeName module_name) -> Hash[Symbol, Constant]?
35
+
36
+ private
37
+
38
+ def constant_of_module: (TypeName name, Environment::ClassEntry | Environment::ModuleEntry) -> Constant
39
+
40
+ def constant_of_constant: (TypeName name, Environment::ConstantEntry) -> Constant
41
+ end
42
+
43
+ attr_reader builder: DefinitionBuilder
44
+ attr_reader table: Table
45
+ attr_reader context_constants_cache: Hash[context, Hash[Symbol, Constant]?]
46
+ attr_reader child_constants_cache: Hash[TypeName, Hash[Symbol, Constant]]
47
+
48
+ def initialize: (builder: DefinitionBuilder) -> void
49
+
50
+ # Resolves to `Constant` with given constant name `name` and `context`.
51
+ # Returns `nil` if the constant cannot be resolved from the context.
52
+ #
53
+ def resolve: (Symbol name, context: context) -> Constant?
54
+
55
+ # Returns the available all constants from `context`.
56
+ #
57
+ # Returns `nil` when the `context` is invalid.
58
+ def constants: (context) -> Hash[Symbol, Constant]?
59
+
60
+ # Resolves the module_name and constant name to `Constant`
61
+ #
62
+ # ```ruby
63
+ # A::B
64
+ # ^ <- module_name
65
+ # ^ <- constant_name
66
+ # ```
67
+ #
68
+ def resolve_child: (TypeName module_name, Symbol constant_name) -> Constant?
69
+
70
+ # Returns the table of all constants accessible with `::` (colon2) operator.
71
+ #
72
+ # * The constants under the module are included.
73
+ # * The constants under the ancestor modules are included.
74
+ # * The constants under the `::Object` class are not included.
75
+ # * The top level constants are not included.
76
+ #
77
+ def children: (TypeName module_name) -> Hash[Symbol, Constant]
78
+
79
+ private
80
+
81
+ def load_context_constants: (context) -> void
82
+
83
+ def load_child_constants: (TypeName) -> void
84
+
85
+ def constants_from_context: (context, constants: Hash[Symbol, Constant]) -> bool
86
+
87
+ def constants_from_ancestors: (TypeName, constants: Hash[Symbol, Constant]) -> void
88
+
89
+ def constants_itself: (context, constants: Hash[Symbol, Constant]) -> void
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,34 @@
1
+ module RBS
2
+ module Resolver
3
+ # `context` represents the module nesting structure.
4
+ #
5
+ # - `nil` means toplevel
6
+ # - A 2-tuple represents parent and the most inner module
7
+ # - `TypeName` is for a module
8
+ # - `false` is for unknown module
9
+ #
10
+ # Note that the `TypeName` must be an absolute type name.
11
+ #
12
+ # The following Ruby code has context of `[[nil, TypeName.parse("::Foo")], false]` where
13
+ #
14
+ # * `Foo` is a class defined in RBS file
15
+ # * `Bar` is not defined in RBS files
16
+ #
17
+ # ```ruby
18
+ # class Foo
19
+ # module Bar
20
+ # # Context here
21
+ # end
22
+ # end
23
+ # ```
24
+ #
25
+ # The unknown module (`false`) appears only in Ruby code.
26
+ # RBS modules/classes are always exists (or defines new module).
27
+ # Nesting a unknown module cannot happen in RBS.
28
+ #
29
+ # In Ruby this happens when the module/class is not declared in RBS files.
30
+ #
31
+ type context = [context, TypeName | false]
32
+ | nil
33
+ end
34
+ end
@@ -0,0 +1,35 @@
1
+ module RBS
2
+ module Resolver
3
+ # TypeNameResolver resolves given relative type name to absolute type name under a module nesting context.
4
+ #
5
+ # The type name resolution doesn't take account of ancestors of modules.
6
+ # It just ignores included modules and super classes.
7
+ #
8
+ class TypeNameResolver
9
+ type query = [TypeName, context]
10
+
11
+ def initialize: (Environment) -> void
12
+
13
+ # Translates given type name to absolute type name.
14
+ # Returns `nil` if cannot find associated type name.
15
+ #
16
+ def resolve: (TypeName, context: context) -> TypeName?
17
+
18
+ private
19
+
20
+ attr_reader env: Environment
21
+
22
+ attr_reader all_names: Set[TypeName]
23
+
24
+ attr_reader cache: Hash[query, TypeName?]
25
+
26
+ def has_name?: (TypeName) -> TypeName?
27
+
28
+ def try_cache: (query) { () -> TypeName? } -> TypeName?
29
+
30
+ def resolve_in: (Symbol, context) -> TypeName?
31
+
32
+ def partition: (TypeName) -> [Symbol, TypeName?]
33
+ end
34
+ end
35
+ end