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,451 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ module AST
5
+ module Members
6
+ class Base
7
+ end
8
+
9
+ class MethodDefinition < Base
10
+ class Overload
11
+ attr_reader :method_type, :annotations
12
+
13
+ def initialize(method_type:, annotations:)
14
+ @method_type = method_type
15
+ @annotations = annotations
16
+ end
17
+
18
+ def ==(other)
19
+ other.is_a?(Overload) && other.method_type == method_type && other.annotations == annotations
20
+ end
21
+
22
+ def hash
23
+ method_type.hash ^ annotations.hash
24
+ end
25
+
26
+ alias eql? ==
27
+
28
+ def update(annotations: self.annotations, method_type: self.method_type)
29
+ Overload.new(annotations: annotations, method_type: method_type)
30
+ end
31
+
32
+ def sub(subst)
33
+ return self if subst.empty?
34
+
35
+ update(method_type: self.method_type.sub(subst))
36
+ end
37
+
38
+ def to_json(state = _ = nil)
39
+ {
40
+ annotations: annotations,
41
+ method_type: method_type
42
+ }.to_json(state)
43
+ end
44
+ end
45
+
46
+ attr_reader :name
47
+ attr_reader :kind
48
+ attr_reader :overloads
49
+ attr_reader :annotations
50
+ attr_reader :location
51
+ attr_reader :comment
52
+ attr_reader :overloading
53
+ attr_reader :visibility
54
+
55
+ def initialize(name:, kind:, overloads:, annotations:, location:, comment:, overloading:, visibility:)
56
+ @name = name
57
+ @kind = kind
58
+ @overloads = overloads
59
+ @annotations = annotations
60
+ @location = location
61
+ @comment = comment
62
+ @overloading = overloading
63
+ @visibility = visibility
64
+ end
65
+
66
+ def ==(other)
67
+ other.is_a?(MethodDefinition) &&
68
+ other.name == name &&
69
+ other.kind == kind &&
70
+ other.overloads == overloads &&
71
+ other.overloading? == overloading? &&
72
+ other.visibility == visibility
73
+ end
74
+
75
+ alias eql? ==
76
+
77
+ def hash
78
+ name.hash ^ kind.hash ^ overloads.hash ^ overloading?.hash ^ visibility.hash
79
+ end
80
+
81
+ def instance?
82
+ kind == :instance || kind == :singleton_instance
83
+ end
84
+
85
+ def singleton?
86
+ kind == :singleton || kind == :singleton_instance
87
+ end
88
+
89
+ def overloading?
90
+ overloading
91
+ end
92
+
93
+ def update(name: self.name, kind: self.kind, overloads: self.overloads, annotations: self.annotations, location: self.location, comment: self.comment, overloading: self.overloading?, visibility: self.visibility)
94
+ self.class.new(
95
+ name: name,
96
+ kind: kind,
97
+ overloads: overloads,
98
+ annotations: annotations,
99
+ location: location,
100
+ comment: comment,
101
+ overloading: overloading,
102
+ visibility: visibility
103
+ )
104
+ end
105
+
106
+ def to_json(state = _ = nil)
107
+ {
108
+ member: :method_definition,
109
+ name: name,
110
+ kind: kind,
111
+ overloads: overloads,
112
+ annotations: annotations,
113
+ location: location,
114
+ comment: comment,
115
+ overloading: overloading?,
116
+ visibility: visibility
117
+ }.to_json(state)
118
+ end
119
+ end
120
+
121
+ module Var
122
+ attr_reader :name
123
+ attr_reader :type
124
+ attr_reader :location
125
+ attr_reader :comment
126
+
127
+ def initialize(name:, type:, location:, comment:)
128
+ @name = name
129
+ @type = type
130
+ @location = location
131
+ @comment = comment
132
+ end
133
+
134
+ def ==(other)
135
+ other.is_a?(self.class) && other.name == name && other.type == type
136
+ end
137
+
138
+ alias eql? ==
139
+
140
+ def hash
141
+ name.hash ^ type.hash
142
+ end
143
+ end
144
+
145
+ class InstanceVariable < Base
146
+ include Var
147
+
148
+ def to_json(state = _ = nil)
149
+ {
150
+ member: :instance_variable,
151
+ name: name,
152
+ type: type,
153
+ location: location,
154
+ comment: comment
155
+ }.to_json(state)
156
+ end
157
+ end
158
+
159
+ class ClassInstanceVariable < Base
160
+ include Var
161
+
162
+ def to_json(state = _ = nil)
163
+ {
164
+ member: :class_instance_variable,
165
+ name: name,
166
+ type: type,
167
+ location: location,
168
+ comment: comment
169
+ }.to_json(state)
170
+ end
171
+ end
172
+
173
+ class ClassVariable < Base
174
+ include Var
175
+
176
+ def to_json(state = _ = nil)
177
+ {
178
+ member: :class_variable,
179
+ name: name,
180
+ type: type,
181
+ location: location,
182
+ comment: comment
183
+ }.to_json(state)
184
+ end
185
+ end
186
+
187
+ module Mixin
188
+ attr_reader :name
189
+ attr_reader :args
190
+ attr_reader :annotations
191
+ attr_reader :location
192
+ attr_reader :comment
193
+
194
+ def initialize(name:, args:, annotations:, location:, comment:)
195
+ @name = name
196
+ @args = args
197
+ @annotations = annotations
198
+ @location = location
199
+ @comment = comment
200
+ end
201
+
202
+ def ==(other)
203
+ other.is_a?(self.class) && other.name == name && other.args == args
204
+ end
205
+
206
+ def eql?(other)
207
+ self == other
208
+ end
209
+
210
+ def hash
211
+ name.hash ^ args.hash
212
+ end
213
+ end
214
+
215
+ class Include < Base
216
+ include Mixin
217
+
218
+ def to_json(state = _ = nil)
219
+ {
220
+ member: :include,
221
+ name: name,
222
+ args: args,
223
+ annotations: annotations,
224
+ location: location,
225
+ comment: comment
226
+ }.to_json(state)
227
+ end
228
+ end
229
+
230
+ class Extend < Base
231
+ include Mixin
232
+
233
+ def to_json(state = _ = nil)
234
+ {
235
+ member: :extend,
236
+ name: name,
237
+ args: args,
238
+ annotations: annotations,
239
+ location: location,
240
+ comment: comment
241
+ }.to_json(state)
242
+ end
243
+ end
244
+
245
+ class Prepend < Base
246
+ include Mixin
247
+
248
+ def to_json(state = _ = nil)
249
+ {
250
+ member: :prepend,
251
+ name: name,
252
+ args: args,
253
+ annotations: annotations,
254
+ location: location,
255
+ comment: comment
256
+ }.to_json(state)
257
+ end
258
+ end
259
+
260
+ module Attribute
261
+ attr_reader :name
262
+ attr_reader :type
263
+ attr_reader :kind
264
+ attr_reader :ivar_name
265
+ attr_reader :annotations
266
+ attr_reader :location
267
+ attr_reader :comment
268
+ attr_reader :visibility
269
+
270
+ def initialize(name:, type:, ivar_name:, kind:, annotations:, location:, comment:, visibility: nil)
271
+ @name = name
272
+ @type = type
273
+ @ivar_name = ivar_name
274
+ @annotations = annotations
275
+ @location = location
276
+ @comment = comment
277
+ @kind = kind
278
+ @visibility = visibility
279
+ end
280
+
281
+ def ==(other)
282
+ other.is_a?(self.class) &&
283
+ other.name == name &&
284
+ other.type == type &&
285
+ other.ivar_name == ivar_name &&
286
+ other.kind == kind &&
287
+ other.visibility == visibility
288
+ end
289
+
290
+ alias eql? ==
291
+
292
+ def hash
293
+ name.hash ^ type.hash ^ ivar_name.hash ^ kind.hash ^ visibility.hash
294
+ end
295
+
296
+ def update(name: self.name, type: self.type, ivar_name: self.ivar_name, kind: self.kind, annotations: self.annotations, location: self.location, comment: self.comment, visibility: self.visibility)
297
+ klass = _ = self.class
298
+ klass.new(
299
+ name: name,
300
+ type: type,
301
+ ivar_name: ivar_name,
302
+ kind: kind,
303
+ annotations: annotations,
304
+ location: location,
305
+ comment: comment,
306
+ visibility: visibility
307
+ )
308
+ end
309
+ end
310
+
311
+ class AttrReader < Base
312
+ include Attribute
313
+
314
+ def to_json(state = _ = nil)
315
+ {
316
+ member: :attr_reader,
317
+ name: name,
318
+ type: type,
319
+ ivar_name: ivar_name,
320
+ kind: kind,
321
+ annotations: annotations,
322
+ location: location,
323
+ comment: comment,
324
+ visibility: visibility
325
+ }.to_json(state)
326
+ end
327
+ end
328
+
329
+ class AttrAccessor < Base
330
+ include Attribute
331
+
332
+ def to_json(state = _ = nil)
333
+ {
334
+ member: :attr_accessor,
335
+ name: name,
336
+ type: type,
337
+ ivar_name: ivar_name,
338
+ kind: kind,
339
+ annotations: annotations,
340
+ location: location,
341
+ comment: comment,
342
+ visibility: visibility
343
+ }.to_json(state)
344
+ end
345
+ end
346
+
347
+ class AttrWriter < Base
348
+ include Attribute
349
+
350
+ def to_json(state = _ = nil)
351
+ {
352
+ member: :attr_writer,
353
+ name: name,
354
+ type: type,
355
+ ivar_name: ivar_name,
356
+ kind: kind,
357
+ annotations: annotations,
358
+ location: location,
359
+ comment: comment,
360
+ visibility: visibility
361
+ }.to_json(state)
362
+ end
363
+ end
364
+
365
+ module LocationOnly
366
+ attr_reader :location
367
+
368
+ def initialize(location:)
369
+ @location = location
370
+ end
371
+
372
+ def ==(other)
373
+ other.is_a?(self.class)
374
+ end
375
+
376
+ alias eql? ==
377
+
378
+ def hash
379
+ self.class.hash
380
+ end
381
+ end
382
+
383
+ class Public < Base
384
+ include LocationOnly
385
+
386
+ def to_json(state = _ = nil)
387
+ { member: :public, location: location }.to_json(state)
388
+ end
389
+ end
390
+
391
+ class Private < Base
392
+ include LocationOnly
393
+
394
+ def to_json(state = _ = nil)
395
+ { member: :private, location: location }.to_json(state)
396
+ end
397
+ end
398
+
399
+ class Alias < Base
400
+ attr_reader :new_name
401
+ attr_reader :old_name
402
+ attr_reader :kind
403
+ attr_reader :annotations
404
+ attr_reader :location
405
+ attr_reader :comment
406
+
407
+ def initialize(new_name:, old_name:, kind:, annotations:, location:, comment:)
408
+ @new_name = new_name
409
+ @old_name = old_name
410
+ @kind = kind
411
+ @annotations = annotations
412
+ @location = location
413
+ @comment = comment
414
+ end
415
+
416
+ def ==(other)
417
+ other.is_a?(self.class) &&
418
+ other.new_name == new_name &&
419
+ other.old_name == old_name &&
420
+ other.kind == kind
421
+ end
422
+
423
+ alias eql? ==
424
+
425
+ def hash
426
+ new_name.hash ^ old_name.hash ^ kind.hash
427
+ end
428
+
429
+ def to_json(state = _ = nil)
430
+ {
431
+ member: :alias,
432
+ new_name: new_name,
433
+ old_name: old_name,
434
+ kind: kind,
435
+ annotations: annotations,
436
+ location: location,
437
+ comment: comment
438
+ }.to_json(state)
439
+ end
440
+
441
+ def instance?
442
+ kind == :instance
443
+ end
444
+
445
+ def singleton?
446
+ kind == :singleton
447
+ end
448
+ end
449
+ end
450
+ end
451
+ end
@@ -0,0 +1,225 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ module AST
5
+ class TypeParam
6
+ attr_reader :name, :variance, :location, :upper_bound_type, :default_type
7
+
8
+ def initialize(name:, variance:, upper_bound:, location:, default_type: nil, unchecked: false)
9
+ @name = name
10
+ @variance = variance
11
+ @upper_bound_type = upper_bound
12
+ @location = location
13
+ @default_type = default_type
14
+ @unchecked = unchecked
15
+ end
16
+
17
+ def upper_bound
18
+ case upper_bound_type
19
+ when Types::ClassInstance, Types::ClassSingleton, Types::Interface
20
+ upper_bound_type
21
+ end
22
+ end
23
+
24
+ def unchecked!(value = true)
25
+ @unchecked = value ? true : false
26
+ self
27
+ end
28
+
29
+ def unchecked?
30
+ @unchecked
31
+ end
32
+
33
+ def ==(other)
34
+ other.is_a?(TypeParam) &&
35
+ other.name == name &&
36
+ other.variance == variance &&
37
+ other.upper_bound_type == upper_bound_type &&
38
+ other.default_type == default_type &&
39
+ other.unchecked? == unchecked?
40
+ end
41
+
42
+ alias eql? ==
43
+
44
+ def hash
45
+ self.class.hash ^ name.hash ^ variance.hash ^ upper_bound_type.hash ^ unchecked?.hash ^ default_type.hash
46
+ end
47
+
48
+ def to_json(state = JSON::State.new)
49
+ {
50
+ name: name,
51
+ variance: variance,
52
+ unchecked: unchecked?,
53
+ location: location,
54
+ upper_bound: upper_bound_type,
55
+ default_type: default_type
56
+ }.to_json(state)
57
+ end
58
+
59
+ def rename(name)
60
+ TypeParam.new(
61
+ name: name,
62
+ variance: variance,
63
+ upper_bound: upper_bound_type,
64
+ location: location,
65
+ default_type: default_type
66
+ ).unchecked!(unchecked?)
67
+ end
68
+
69
+ def map_type(&block)
70
+ if b = upper_bound_type
71
+ _upper_bound_type = yield(b)
72
+ end
73
+
74
+ if dt = default_type
75
+ _default_type = yield(dt)
76
+ end
77
+
78
+ TypeParam.new(
79
+ name: name,
80
+ variance: variance,
81
+ upper_bound: _upper_bound_type,
82
+ location: location,
83
+ default_type: _default_type
84
+ ).unchecked!(unchecked?)
85
+ end
86
+
87
+ def self.resolve_variables(params)
88
+ return if params.empty?
89
+
90
+ vars = Set.new(params.map(&:name))
91
+
92
+ params.map! do |param|
93
+ param.map_type {|bound| _ = subst_var(vars, bound) }
94
+ end
95
+ end
96
+
97
+ def self.subst_var(vars, type)
98
+ case type
99
+ when Types::ClassInstance
100
+ namespace = type.name.namespace
101
+ if namespace.relative? && namespace.empty? && vars.member?(type.name.name)
102
+ return Types::Variable.new(name: type.name.name, location: type.location)
103
+ end
104
+ end
105
+
106
+ type.map_type {|t| subst_var(vars, t) }
107
+ end
108
+
109
+ def self.rename(params, new_names:)
110
+ raise unless params.size == new_names.size
111
+
112
+ subst = Substitution.build(new_names, Types::Variable.build(new_names))
113
+
114
+ params.map.with_index do |param, index|
115
+ new_name = new_names[index]
116
+
117
+ TypeParam.new(
118
+ name: new_name,
119
+ variance: param.variance,
120
+ upper_bound: param.upper_bound_type&.map_type {|type| type.sub(subst) },
121
+ location: param.location,
122
+ default_type: param.default_type&.map_type {|type| type.sub(subst) }
123
+ ).unchecked!(param.unchecked?)
124
+ end
125
+ end
126
+
127
+ def to_s
128
+ s = +""
129
+
130
+ if unchecked?
131
+ s << "unchecked "
132
+ end
133
+
134
+ case variance
135
+ when :invariant
136
+ # nop
137
+ when :covariant
138
+ s << "out "
139
+ when :contravariant
140
+ s << "in "
141
+ end
142
+
143
+ s << name.to_s
144
+
145
+ if type = upper_bound_type
146
+ s << " < #{type}"
147
+ end
148
+
149
+ if dt = default_type
150
+ s << " = #{dt}"
151
+ end
152
+
153
+ s
154
+ end
155
+
156
+ def self.application(params, args)
157
+ if params.empty?
158
+ return nil
159
+ end
160
+
161
+ optional_params, required_params = params.partition {|param| param.default_type }
162
+
163
+ param_subst = Substitution.new()
164
+ app_subst = Substitution.new()
165
+
166
+ required_params.zip(args.take(required_params.size)).each do |param, arg|
167
+ arg ||= Types::Bases::Any.new(location: nil)
168
+ param_subst.add(from: param.name, to: arg)
169
+ app_subst.add(from: param.name, to: arg)
170
+ end
171
+
172
+ optional_params.each do |param|
173
+ param_subst.add(from: param.name, to: Types::Bases::Any.new(location: nil))
174
+ end
175
+
176
+ optional_params.zip(args.drop(required_params.size)).each do |param, arg|
177
+ if arg
178
+ app_subst.add(from: param.name, to: arg)
179
+ else
180
+ param.default_type or raise
181
+ app_subst.add(from: param.name, to: param.default_type.sub(param_subst))
182
+ end
183
+ end
184
+
185
+ app_subst
186
+ end
187
+
188
+ def self.normalize_args(params, args)
189
+ app = application(params, args) or return []
190
+
191
+ min_count = params.count { _1.default_type.nil? }
192
+ unless min_count <= args.size && args.size <= params.size
193
+ return args
194
+ end
195
+
196
+ params.zip(args).filter_map do |param, arg|
197
+ if arg
198
+ arg
199
+ else
200
+ if param.default_type
201
+ param.default_type.sub(app)
202
+ else
203
+ Types::Bases::Any.new(location: nil)
204
+ end
205
+ end
206
+ end
207
+ end
208
+
209
+ def self.validate(type_params)
210
+ optionals = type_params.filter {|param| param.default_type }
211
+
212
+ optional_param_names = optionals.map(&:name).sort
213
+
214
+ optionals.filter! do |param|
215
+ default_type = param.default_type or raise
216
+ optional_param_names.any? { default_type.free_variables.include?(_1) }
217
+ end
218
+
219
+ unless optionals.empty?
220
+ optionals
221
+ end
222
+ end
223
+ end
224
+ end
225
+ end