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,325 @@
1
+ #include "rbs_extension.h"
2
+
3
+ #define RBS_LOC_REQUIRED_P(loc, i) ((loc)->children->required_p & (1 << (i)))
4
+ #define RBS_LOC_OPTIONAL_P(loc, i) (!RBS_LOC_REQUIRED_P((loc), (i)))
5
+ #define RBS_LOC_CHILDREN_SIZE(cap) (sizeof(rbs_loc_children) + sizeof(rbs_loc_entry) * ((cap) - 1))
6
+ #define NULL_LOC_RANGE_P(rg) ((rg).start == -1)
7
+
8
+ rbs_loc_range RBS_LOC_NULL_RANGE = { -1, -1 };
9
+ VALUE RBS_Location;
10
+
11
+ position rbs_loc_position(int char_pos) {
12
+ position pos = { 0, char_pos, -1, -1 };
13
+ return pos;
14
+ }
15
+
16
+ position rbs_loc_position3(int char_pos, int line, int column) {
17
+ position pos = { 0, char_pos, line, column };
18
+ return pos;
19
+ }
20
+
21
+ rbs_loc_range rbs_new_loc_range(range rg) {
22
+ rbs_loc_range r = { rg.start.char_pos, rg.end.char_pos };
23
+ return r;
24
+ }
25
+
26
+ static void check_children_max(unsigned short n) {
27
+ size_t max = sizeof(rbs_loc_entry_bitmap) * 8;
28
+ if (n > max) {
29
+ rb_raise(rb_eRuntimeError, "Too many children added to location: %d", n);
30
+ }
31
+ }
32
+
33
+ void rbs_loc_alloc_children(rbs_loc *loc, unsigned short cap) {
34
+ check_children_max(cap);
35
+
36
+ size_t s = RBS_LOC_CHILDREN_SIZE(cap);
37
+ loc->children = malloc(s);
38
+
39
+ *loc->children = (rbs_loc_children) {
40
+ .len = 0,
41
+ .required_p = 0,
42
+ .cap = cap,
43
+ .entries = {{ 0 }},
44
+ };
45
+ }
46
+
47
+ static void check_children_cap(rbs_loc *loc) {
48
+ if (loc->children == NULL) {
49
+ rbs_loc_alloc_children(loc, 1);
50
+ } else {
51
+ if (loc->children->len == loc->children->cap) {
52
+ check_children_max(loc->children->cap + 1);
53
+ size_t s = RBS_LOC_CHILDREN_SIZE(++loc->children->cap);
54
+ loc->children = realloc(loc->children, s);
55
+ }
56
+ }
57
+ }
58
+
59
+ void rbs_loc_add_required_child(rbs_loc *loc, rbs_constant_id_t name, range r) {
60
+ rbs_loc_add_optional_child(loc, name, r);
61
+
62
+ unsigned short last_index = loc->children->len - 1;
63
+ loc->children->required_p |= 1 << last_index;
64
+ }
65
+
66
+ void rbs_loc_add_optional_child(rbs_loc *loc, rbs_constant_id_t name, range r) {
67
+ check_children_cap(loc);
68
+
69
+ unsigned short i = loc->children->len++;
70
+ loc->children->entries[i] = (rbs_loc_entry) {
71
+ .name = name,
72
+ .rg = rbs_new_loc_range(r),
73
+ };
74
+ }
75
+
76
+ void rbs_loc_init(rbs_loc *loc, VALUE buffer, rbs_loc_range rg) {
77
+ *loc = (rbs_loc) {
78
+ .buffer = buffer,
79
+ .rg = rg,
80
+ .children = NULL,
81
+ };
82
+ }
83
+
84
+ void rbs_loc_free(rbs_loc *loc) {
85
+ free(loc->children);
86
+ ruby_xfree(loc);
87
+ }
88
+
89
+ static void rbs_loc_mark(void *ptr)
90
+ {
91
+ rbs_loc *loc = ptr;
92
+ rb_gc_mark(loc->buffer);
93
+ }
94
+
95
+ static size_t rbs_loc_memsize(const void *ptr) {
96
+ const rbs_loc *loc = ptr;
97
+ if (loc->children == NULL) {
98
+ return sizeof(rbs_loc);
99
+ } else {
100
+ return sizeof(rbs_loc) + RBS_LOC_CHILDREN_SIZE(loc->children->cap);
101
+ }
102
+ }
103
+
104
+ static rb_data_type_t location_type = {
105
+ "RBS::Location",
106
+ {rbs_loc_mark, (RUBY_DATA_FUNC)rbs_loc_free, rbs_loc_memsize},
107
+ 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
108
+ };
109
+
110
+ static VALUE location_s_allocate(VALUE klass) {
111
+ rbs_loc *loc;
112
+ VALUE obj = TypedData_Make_Struct(klass, rbs_loc, &location_type, loc);
113
+
114
+ rbs_loc_init(loc, Qnil, RBS_LOC_NULL_RANGE);
115
+
116
+ return obj;
117
+ }
118
+
119
+ rbs_loc *rbs_check_location(VALUE obj) {
120
+ return rb_check_typeddata(obj, &location_type);
121
+ }
122
+
123
+ static VALUE location_initialize(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos) {
124
+ rbs_loc *loc = rbs_check_location(self);
125
+
126
+ int start = FIX2INT(start_pos);
127
+ int end = FIX2INT(end_pos);
128
+
129
+ *loc = (rbs_loc) {
130
+ .buffer = buffer,
131
+ .rg = (rbs_loc_range) { start, end },
132
+ .children = NULL,
133
+ };
134
+
135
+ return Qnil;
136
+ }
137
+
138
+ static VALUE location_initialize_copy(VALUE self, VALUE other) {
139
+ rbs_loc *self_loc = rbs_check_location(self);
140
+ rbs_loc *other_loc = rbs_check_location(other);
141
+
142
+ *self_loc = (rbs_loc) {
143
+ .buffer = other_loc->buffer,
144
+ .rg = other_loc->rg,
145
+ .children = NULL,
146
+ };
147
+
148
+ if (other_loc->children != NULL) {
149
+ rbs_loc_alloc_children(self_loc, other_loc->children->cap);
150
+ memcpy(self_loc->children, other_loc->children, RBS_LOC_CHILDREN_SIZE(other_loc->children->cap));
151
+ }
152
+
153
+ return Qnil;
154
+ }
155
+
156
+ static VALUE location_buffer(VALUE self) {
157
+ rbs_loc *loc = rbs_check_location(self);
158
+ return loc->buffer;
159
+ }
160
+
161
+ static VALUE location_start_pos(VALUE self) {
162
+ rbs_loc *loc = rbs_check_location(self);
163
+ return INT2FIX(loc->rg.start);
164
+ }
165
+
166
+ static VALUE location_end_pos(VALUE self) {
167
+ rbs_loc *loc = rbs_check_location(self);
168
+ return INT2FIX(loc->rg.end);
169
+ }
170
+
171
+ static rbs_constant_id_t rbs_constant_pool_insert_ruby_symbol(VALUE symbol) {
172
+ VALUE name = rb_sym2str(symbol);
173
+
174
+ // Constants inserted here will never be freed, but that's acceptable because:
175
+ // 1. Most symbols passed into here will be the ones already inserted into the constant pool by `parser.c`.
176
+ // 2. Methods like `add_required_child` and `add_optional_child` will usually only get called with a few different symbols.
177
+ return rbs_constant_pool_insert_constant(RBS_GLOBAL_CONSTANT_POOL, (const uint8_t *) RSTRING_PTR(name), RSTRING_LEN(name));
178
+ }
179
+
180
+ static VALUE location_add_required_child(VALUE self, VALUE name, VALUE start, VALUE end) {
181
+ rbs_loc *loc = rbs_check_location(self);
182
+
183
+ range rg;
184
+ rg.start = rbs_loc_position(FIX2INT(start));
185
+ rg.end = rbs_loc_position(FIX2INT(end));
186
+
187
+ rbs_loc_add_required_child(loc, rbs_constant_pool_insert_ruby_symbol(name), rg);
188
+
189
+ return Qnil;
190
+ }
191
+
192
+ static VALUE location_add_optional_child(VALUE self, VALUE name, VALUE start, VALUE end) {
193
+ rbs_loc *loc = rbs_check_location(self);
194
+
195
+ range rg;
196
+ rg.start = rbs_loc_position(FIX2INT(start));
197
+ rg.end = rbs_loc_position(FIX2INT(end));
198
+
199
+ rbs_loc_add_optional_child(loc, rbs_constant_pool_insert_ruby_symbol(name), rg);
200
+
201
+ return Qnil;
202
+ }
203
+
204
+ static VALUE location_add_optional_no_child(VALUE self, VALUE name) {
205
+ rbs_loc *loc = rbs_check_location(self);
206
+
207
+ rbs_loc_add_optional_child(loc, rbs_constant_pool_insert_ruby_symbol(name), NULL_RANGE);
208
+
209
+ return Qnil;
210
+ }
211
+
212
+ VALUE rbs_new_location(VALUE buffer, range rg) {
213
+ rbs_loc *loc;
214
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
215
+
216
+ rbs_loc_init(loc, buffer, rbs_new_loc_range(rg));
217
+
218
+ return obj;
219
+ }
220
+
221
+ static VALUE rbs_new_location_from_loc_range(VALUE buffer, rbs_loc_range rg) {
222
+ rbs_loc *loc;
223
+ VALUE obj = TypedData_Make_Struct(RBS_Location, rbs_loc, &location_type, loc);
224
+
225
+ rbs_loc_init(loc, buffer, rg);
226
+
227
+ return obj;
228
+ }
229
+
230
+ static rbs_constant_id_t rbs_constant_pool_find_ruby_symbol(VALUE symbol) {
231
+ VALUE name = rb_sym2str(symbol);
232
+
233
+ return rbs_constant_pool_find(RBS_GLOBAL_CONSTANT_POOL, (const uint8_t *) RSTRING_PTR(name), RSTRING_LEN(name));
234
+ }
235
+
236
+ static VALUE location_aref(VALUE self, VALUE name) {
237
+ rbs_loc *loc = rbs_check_location(self);
238
+
239
+ rbs_constant_id_t id = rbs_constant_pool_find_ruby_symbol(name);
240
+
241
+ if (loc->children != NULL && id != RBS_CONSTANT_ID_UNSET) {
242
+ for (unsigned short i = 0; i < loc->children->len; i++) {
243
+ if (loc->children->entries[i].name == id) {
244
+ rbs_loc_range result = loc->children->entries[i].rg;
245
+
246
+ if (RBS_LOC_OPTIONAL_P(loc, i) && NULL_LOC_RANGE_P(result)) {
247
+ return Qnil;
248
+ } else {
249
+ return rbs_new_location_from_loc_range(loc->buffer, result);
250
+ }
251
+ }
252
+ }
253
+ }
254
+
255
+ VALUE string = rb_funcall(name, rb_intern("to_s"), 0);
256
+ rb_raise(rb_eRuntimeError, "Unknown child name given: %s", RSTRING_PTR(string));
257
+ }
258
+
259
+ static VALUE rbs_constant_to_ruby_symbol(rbs_constant_t *constant) {
260
+ return ID2SYM(rb_intern2((const char *) constant->start, constant->length));
261
+ }
262
+
263
+ static VALUE location_optional_keys(VALUE self) {
264
+ VALUE keys = rb_ary_new();
265
+
266
+ rbs_loc *loc = rbs_check_location(self);
267
+ rbs_loc_children *children = loc->children;
268
+ if (children == NULL) {
269
+ return keys;
270
+ }
271
+
272
+ for (unsigned short i = 0; i < children->len; i++) {
273
+ if (RBS_LOC_OPTIONAL_P(loc, i)) {
274
+ rbs_constant_t *key_id = rbs_constant_pool_id_to_constant(RBS_GLOBAL_CONSTANT_POOL, children->entries[i].name);
275
+ VALUE key_sym = rbs_constant_to_ruby_symbol(key_id);
276
+ rb_ary_push(keys, key_sym);
277
+ }
278
+ }
279
+
280
+ return keys;
281
+ }
282
+
283
+ static VALUE location_required_keys(VALUE self) {
284
+ VALUE keys = rb_ary_new();
285
+
286
+ rbs_loc *loc = rbs_check_location(self);
287
+ rbs_loc_children *children = loc->children;
288
+ if (children == NULL) {
289
+ return keys;
290
+ }
291
+
292
+ for (unsigned short i = 0; i < children->len; i++) {
293
+ if (RBS_LOC_REQUIRED_P(loc, i)) {
294
+ rbs_constant_t *key_id = rbs_constant_pool_id_to_constant(RBS_GLOBAL_CONSTANT_POOL, children->entries[i].name);
295
+ VALUE key_sym = rbs_constant_to_ruby_symbol(key_id);
296
+ rb_ary_push(keys, key_sym);
297
+ }
298
+ }
299
+
300
+ return keys;
301
+ }
302
+
303
+ VALUE rbs_location_pp(VALUE buffer, const position *start_pos, const position *end_pos) {
304
+ range rg = { *start_pos, *end_pos };
305
+ rg.start = *start_pos;
306
+ rg.end = *end_pos;
307
+
308
+ return rbs_new_location(buffer, rg);
309
+ }
310
+
311
+ void rbs__init_location(void) {
312
+ RBS_Location = rb_define_class_under(RBS, "Location", rb_cObject);
313
+ rb_define_alloc_func(RBS_Location, location_s_allocate);
314
+ rb_define_private_method(RBS_Location, "initialize", location_initialize, 3);
315
+ rb_define_private_method(RBS_Location, "initialize_copy", location_initialize_copy, 1);
316
+ rb_define_method(RBS_Location, "buffer", location_buffer, 0);
317
+ rb_define_method(RBS_Location, "start_pos", location_start_pos, 0);
318
+ rb_define_method(RBS_Location, "end_pos", location_end_pos, 0);
319
+ rb_define_method(RBS_Location, "_add_required_child", location_add_required_child, 3);
320
+ rb_define_method(RBS_Location, "_add_optional_child", location_add_optional_child, 3);
321
+ rb_define_method(RBS_Location, "_add_optional_no_child", location_add_optional_no_child, 1);
322
+ rb_define_method(RBS_Location, "_optional_keys", location_optional_keys, 0);
323
+ rb_define_method(RBS_Location, "_required_keys", location_required_keys, 0);
324
+ rb_define_method(RBS_Location, "[]", location_aref, 1);
325
+ }
@@ -0,0 +1,85 @@
1
+ #ifndef RBS_LOCATION_H
2
+ #define RBS_LOCATION_H
3
+
4
+ #include "ruby.h"
5
+ #include "lexer.h"
6
+ #include "rbs/util/rbs_constant_pool.h"
7
+
8
+ /**
9
+ * RBS::Location class
10
+ * */
11
+ extern VALUE RBS_Location;
12
+
13
+ typedef struct {
14
+ int start;
15
+ int end;
16
+ } rbs_loc_range;
17
+
18
+ typedef struct {
19
+ rbs_constant_id_t name;
20
+ rbs_loc_range rg;
21
+ } rbs_loc_entry;
22
+
23
+ typedef unsigned int rbs_loc_entry_bitmap;
24
+
25
+ // The flexible array always allocates, but it's okay.
26
+ // This struct is not allocated when the `rbs_loc` doesn't have children.
27
+ typedef struct {
28
+ unsigned short len;
29
+ unsigned short cap;
30
+ rbs_loc_entry_bitmap required_p;
31
+ rbs_loc_entry entries[1];
32
+ } rbs_loc_children;
33
+
34
+ typedef struct {
35
+ VALUE buffer;
36
+ rbs_loc_range rg;
37
+ rbs_loc_children *children; // NULL when no children is allocated
38
+ } rbs_loc;
39
+
40
+ /**
41
+ * Returns new RBS::Location object, with given buffer and range.
42
+ * */
43
+ VALUE rbs_new_location(VALUE buffer, range rg);
44
+
45
+ /**
46
+ * Return rbs_loc associated with the RBS::Location object.
47
+ * */
48
+ rbs_loc *rbs_check_location(VALUE location);
49
+
50
+ /**
51
+ * Allocate memory for child locations.
52
+ *
53
+ * Do not call twice for the same location.
54
+ * */
55
+ void rbs_loc_alloc_children(rbs_loc *loc, unsigned short cap);
56
+
57
+ /**
58
+ * Add a required child range with given name.
59
+ *
60
+ * Allocate memory for children with rbs_loc_alloc_children before calling this function.
61
+ * */
62
+ void rbs_loc_add_required_child(rbs_loc *loc, rbs_constant_id_t name, range r);
63
+
64
+ /**
65
+ * Add an optional child range with given name.
66
+ *
67
+ * Allocate memory for children with rbs_loc_alloc_children before calling this function.
68
+ * */
69
+ void rbs_loc_add_optional_child(rbs_loc *loc, rbs_constant_id_t name, range r);
70
+
71
+ /**
72
+ * Returns RBS::Location object with start/end positions.
73
+ *
74
+ * @param start_pos
75
+ * @param end_pos
76
+ * @return New RSS::Location object.
77
+ * */
78
+ VALUE rbs_location_pp(VALUE buffer, const position *start_pos, const position *end_pos);
79
+
80
+ /**
81
+ * Define RBS::Location class.
82
+ * */
83
+ void rbs__init_location();
84
+
85
+ #endif
@@ -0,0 +1,33 @@
1
+ #include "rbs_extension.h"
2
+ #include "rbs/util/rbs_constant_pool.h"
3
+
4
+ #include "ruby/vm.h"
5
+
6
+ static
7
+ void Deinit_rbs_extension(ruby_vm_t *_) {
8
+ rbs_constant_pool_free(RBS_GLOBAL_CONSTANT_POOL);
9
+ }
10
+
11
+ void
12
+ Init_rbs_extension(void)
13
+ {
14
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
15
+ rb_ext_ractor_safe(true);
16
+ #endif
17
+ rbs__init_constants();
18
+ rbs__init_location();
19
+ rbs__init_parser();
20
+
21
+ // Calculated based on the number of unique strings used with the `INTERN` macro in `parser.c`.
22
+ //
23
+ // ```bash
24
+ // grep -o 'INTERN("\([^"]*\)")' ext/rbs_extension/parser.c \
25
+ // | sed 's/INTERN("\(.*\)")/\1/' \
26
+ // | sort -u \
27
+ // | wc -l
28
+ // ```
29
+ const size_t num_uniquely_interned_strings = 26;
30
+ rbs_constant_pool_init(RBS_GLOBAL_CONSTANT_POOL, num_uniquely_interned_strings);
31
+
32
+ ruby_vm_at_exit(Deinit_rbs_extension);
33
+ }