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
+ # <!-- rdoc-file=io.c -->
2
+ # ARGF is a stream designed for use in scripts that process files given as
3
+ # command-line arguments or passed in via STDIN.
4
+ #
5
+ # See ARGF (the class) for more details.
6
+ #
7
+ ARGF: RBS::Unnamed::ARGFClass
8
+
9
+ # <!-- rdoc-file=ruby.c -->
10
+ # ARGV contains the command line arguments used to run ruby.
11
+ #
12
+ # A library like OptionParser can be used to process command-line arguments.
13
+ #
14
+ ARGV: Array[String]
15
+
16
+ CROSS_COMPILING: true?
17
+
18
+ # <!-- rdoc-file=ruby.c -->
19
+ # DATA is a File that contains the data section of the executed file. To create
20
+ # a data section use `__END__`:
21
+ #
22
+ # $ cat t.rb
23
+ # puts DATA.gets
24
+ # __END__
25
+ # hello world!
26
+ #
27
+ # $ ruby t.rb
28
+ # hello world!
29
+ #
30
+ DATA: File
31
+
32
+ # <!-- rdoc-file=version.c -->
33
+ # The copyright string for ruby
34
+ #
35
+ RUBY_COPYRIGHT: String
36
+
37
+ # <!-- rdoc-file=version.c -->
38
+ # The full ruby version string, like `ruby -v` prints
39
+ #
40
+ RUBY_DESCRIPTION: String
41
+
42
+ # <!-- rdoc-file=version.c -->
43
+ # The engine or interpreter this ruby uses.
44
+ #
45
+ RUBY_ENGINE: String
46
+
47
+ # <!-- rdoc-file=version.c -->
48
+ # The version of the engine or interpreter this ruby uses.
49
+ #
50
+ RUBY_ENGINE_VERSION: String
51
+
52
+ # <!-- rdoc-file=version.c -->
53
+ # The patchlevel for this ruby. If this is a development build of ruby the
54
+ # patchlevel will be -1
55
+ #
56
+ RUBY_PATCHLEVEL: Integer
57
+
58
+ # <!-- rdoc-file=version.c -->
59
+ # The platform for this ruby
60
+ #
61
+ RUBY_PLATFORM: String
62
+
63
+ # <!-- rdoc-file=version.c -->
64
+ # The date this ruby was released
65
+ #
66
+ RUBY_RELEASE_DATE: String
67
+
68
+ # <!-- rdoc-file=version.c -->
69
+ # The GIT commit hash for this ruby.
70
+ #
71
+ RUBY_REVISION: String
72
+
73
+ # <!-- rdoc-file=version.c -->
74
+ # The running version of ruby
75
+ #
76
+ RUBY_VERSION: String
77
+
78
+ # <!-- rdoc-file=io.c -->
79
+ # Holds the original stderr
80
+ #
81
+ STDERR: IO
82
+
83
+ # <!-- rdoc-file=io.c -->
84
+ # Holds the original stdin
85
+ #
86
+ STDIN: IO
87
+
88
+ # <!-- rdoc-file=io.c -->
89
+ # Holds the original stdout
90
+ #
91
+ STDOUT: IO
92
+
93
+ # <!-- rdoc-file=vm.c -->
94
+ # The Binding of the top level scope
95
+ #
96
+ TOPLEVEL_BINDING: Binding
data/core/data.rbs ADDED
@@ -0,0 +1,415 @@
1
+ # <!-- rdoc-file=struct.c -->
2
+ # Class Data provides a convenient way to define simple classes for value-alike
3
+ # objects.
4
+ #
5
+ # The simplest example of usage:
6
+ #
7
+ # Measure = Data.define(:amount, :unit)
8
+ #
9
+ # # Positional arguments constructor is provided
10
+ # distance = Measure.new(100, 'km')
11
+ # #=> #<data Measure amount=100, unit="km">
12
+ #
13
+ # # Keyword arguments constructor is provided
14
+ # weight = Measure.new(amount: 50, unit: 'kg')
15
+ # #=> #<data Measure amount=50, unit="kg">
16
+ #
17
+ # # Alternative form to construct an object:
18
+ # speed = Measure[10, 'mPh']
19
+ # #=> #<data Measure amount=10, unit="mPh">
20
+ #
21
+ # # Works with keyword arguments, too:
22
+ # area = Measure[amount: 1.5, unit: 'm^2']
23
+ # #=> #<data Measure amount=1.5, unit="m^2">
24
+ #
25
+ # # Argument accessors are provided:
26
+ # distance.amount #=> 100
27
+ # distance.unit #=> "km"
28
+ #
29
+ # Constructed object also has a reasonable definitions of #== operator, #to_h
30
+ # hash conversion, and #deconstruct / #deconstruct_keys to be used in pattern
31
+ # matching.
32
+ #
33
+ # ::define method accepts an optional block and evaluates it in the context of
34
+ # the newly defined class. That allows to define additional methods:
35
+ #
36
+ # Measure = Data.define(:amount, :unit) do
37
+ # def <=>(other)
38
+ # return unless other.is_a?(self.class) && other.unit == unit
39
+ # amount <=> other.amount
40
+ # end
41
+ #
42
+ # include Comparable
43
+ # end
44
+ #
45
+ # Measure[3, 'm'] < Measure[5, 'm'] #=> true
46
+ # Measure[3, 'm'] < Measure[5, 'kg']
47
+ # # comparison of Measure with Measure failed (ArgumentError)
48
+ #
49
+ # Data provides no member writers, or enumerators: it is meant to be a storage
50
+ # for immutable atomic values. But note that if some of data members is of a
51
+ # mutable class, Data does no additional immutability enforcement:
52
+ #
53
+ # Event = Data.define(:time, :weekdays)
54
+ # event = Event.new('18:00', %w[Tue Wed Fri])
55
+ # #=> #<data Event time="18:00", weekdays=["Tue", "Wed", "Fri"]>
56
+ #
57
+ # # There is no #time= or #weekdays= accessors, but changes are
58
+ # # still possible:
59
+ # event.weekdays << 'Sat'
60
+ # event
61
+ # #=> #<data Event time="18:00", weekdays=["Tue", "Wed", "Fri", "Sat"]>
62
+ #
63
+ # See also Struct, which is a similar concept, but has more container-alike API,
64
+ # allowing to change contents of the object and enumerate it.
65
+ #
66
+ class Data
67
+ # <!--
68
+ # rdoc-file=struct.c
69
+ # - define(*symbols) -> class
70
+ # -->
71
+ # Defines a new Data class.
72
+ #
73
+ # measure = Data.define(:amount, :unit)
74
+ # #=> #<Class:0x00007f70c6868498>
75
+ # measure.new(1, 'km')
76
+ # #=> #<data amount=1, unit="km">
77
+ #
78
+ # # It you store the new class in the constant, it will
79
+ # # affect #inspect and will be more natural to use:
80
+ # Measure = Data.define(:amount, :unit)
81
+ # #=> Measure
82
+ # Measure.new(1, 'km')
83
+ # #=> #<data Measure amount=1, unit="km">
84
+ #
85
+ # Note that member-less Data is acceptable and might be a useful technique for
86
+ # defining several homogeneous data classes, like
87
+ #
88
+ # class HTTPFetcher
89
+ # Response = Data.define(:body)
90
+ # NotFound = Data.define
91
+ # # ... implementation
92
+ # end
93
+ #
94
+ # Now, different kinds of responses from `HTTPFetcher` would have consistent
95
+ # representation:
96
+ #
97
+ # #<data HTTPFetcher::Response body="<html...">
98
+ # #<data HTTPFetcher::NotFound>
99
+ #
100
+ # And are convenient to use in pattern matching:
101
+ #
102
+ # case fetcher.get(url)
103
+ # in HTTPFetcher::Response(body)
104
+ # # process body variable
105
+ # in HTTPFetcher::NotFound
106
+ # # handle not found case
107
+ # end
108
+ #
109
+ def self.define: [KLASS < _DataClass] (*Symbol) ?{ (KLASS) [self: KLASS] -> void } -> KLASS
110
+
111
+ interface _DataClass
112
+ # <!--
113
+ # rdoc-file=struct.c
114
+ # - new(*args) -> instance
115
+ # - new(**kwargs) -> instance
116
+ # - ::[](*args) -> instance
117
+ # - ::[](**kwargs) -> instance
118
+ # -->
119
+ # Constructors for classes defined with ::define accept both positional and
120
+ # keyword arguments.
121
+ #
122
+ # Measure = Data.define(:amount, :unit)
123
+ #
124
+ # Measure.new(1, 'km')
125
+ # #=> #<data Measure amount=1, unit="km">
126
+ # Measure.new(amount: 1, unit: 'km')
127
+ # #=> #<data Measure amount=1, unit="km">
128
+ #
129
+ # # Alternative shorter intialization with []
130
+ # Measure[1, 'km']
131
+ # #=> #<data Measure amount=1, unit="km">
132
+ # Measure[amount: 1, unit: 'km']
133
+ # #=> #<data Measure amount=1, unit="km">
134
+ #
135
+ # All arguments are mandatory (unlike Struct), and converted to keyword
136
+ # arguments:
137
+ #
138
+ # Measure.new(amount: 1)
139
+ # # in `initialize': missing keyword: :unit (ArgumentError)
140
+ #
141
+ # Measure.new(1)
142
+ # # in `initialize': missing keyword: :unit (ArgumentError)
143
+ #
144
+ # Note that `Measure#initialize` always receives keyword arguments, and that
145
+ # mandatory arguments are checked in `initialize`, not in `new`. This can be
146
+ # important for redefining initialize in order to convert arguments or provide
147
+ # defaults:
148
+ #
149
+ # Measure = Data.define(:amount, :unit) do
150
+ # NONE = Data.define
151
+ #
152
+ # def initialize(amount:, unit: NONE.new)
153
+ # super(amount: Float(amount), unit:)
154
+ # end
155
+ # end
156
+ #
157
+ # Measure.new('10', 'km') # => #<data Measure amount=10.0, unit="km">
158
+ # Measure.new(10_000) # => #<data Measure amount=10000.0, unit=#<data NONE>>
159
+ #
160
+ %a{annotate:rdoc:copy:Data.new}
161
+ def new: (*untyped) -> Data
162
+ | (**untyped) -> Data
163
+
164
+ %a{annotate:rdoc:copy:Data.[]}
165
+ def []: (*untyped) -> Data
166
+ | (**untyped) -> Data
167
+
168
+ # <!--
169
+ # rdoc-file=struct.c
170
+ # - DataClass::members -> array_of_symbols
171
+ # -->
172
+ # Returns an array of member names of the data class:
173
+ #
174
+ # Measure = Data.define(:amount, :unit)
175
+ # Measure.members # => [:amount, :unit]
176
+ #
177
+ %a{annotate:rdoc:copy:Data.members}
178
+ def members: () -> Array[Symbol]
179
+ end
180
+
181
+ %a{annotate:rdoc:skip}
182
+ def self.new: () -> bot
183
+
184
+ def self.allocate: () -> bot
185
+
186
+ # <!--
187
+ # rdoc-file=struct.c
188
+ # - self == other -> true or false
189
+ # -->
190
+ # Returns `true` if `other` is the same class as `self`, and all members are
191
+ # equal.
192
+ #
193
+ # Examples:
194
+ #
195
+ # Measure = Data.define(:amount, :unit)
196
+ #
197
+ # Measure[1, 'km'] == Measure[1, 'km'] #=> true
198
+ # Measure[1, 'km'] == Measure[2, 'km'] #=> false
199
+ # Measure[1, 'km'] == Measure[1, 'm'] #=> false
200
+ #
201
+ # Measurement = Data.define(:amount, :unit)
202
+ # # Even though Measurement and Measure have the same "shape"
203
+ # # their instances are never equal
204
+ # Measure[1, 'km'] == Measurement[1, 'km'] #=> false
205
+ #
206
+ def ==: (untyped) -> bool
207
+
208
+ # <!--
209
+ # rdoc-file=struct.c
210
+ # - deconstruct -> array
211
+ # -->
212
+ # Returns the values in `self` as an array, to use in pattern matching:
213
+ #
214
+ # Measure = Data.define(:amount, :unit)
215
+ #
216
+ # distance = Measure[10, 'km']
217
+ # distance.deconstruct #=> [10, "km"]
218
+ #
219
+ # # usage
220
+ # case distance
221
+ # in n, 'km' # calls #deconstruct underneath
222
+ # puts "It is #{n} kilometers away"
223
+ # else
224
+ # puts "Don't know how to handle it"
225
+ # end
226
+ # # prints "It is 10 kilometers away"
227
+ #
228
+ # Or, with checking the class, too:
229
+ #
230
+ # case distance
231
+ # in Measure(n, 'km')
232
+ # puts "It is #{n} kilometers away"
233
+ # # ...
234
+ # end
235
+ #
236
+ def deconstruct: () -> Array[untyped]
237
+
238
+ # <!--
239
+ # rdoc-file=struct.c
240
+ # - deconstruct_keys(array_of_names_or_nil) -> hash
241
+ # -->
242
+ # Returns a hash of the name/value pairs, to use in pattern matching.
243
+ #
244
+ # Measure = Data.define(:amount, :unit)
245
+ #
246
+ # distance = Measure[10, 'km']
247
+ # distance.deconstruct_keys(nil) #=> {:amount=>10, :unit=>"km"}
248
+ # distance.deconstruct_keys([:amount]) #=> {:amount=>10}
249
+ #
250
+ # # usage
251
+ # case distance
252
+ # in amount:, unit: 'km' # calls #deconstruct_keys underneath
253
+ # puts "It is #{amount} kilometers away"
254
+ # else
255
+ # puts "Don't know how to handle it"
256
+ # end
257
+ # # prints "It is 10 kilometers away"
258
+ #
259
+ # Or, with checking the class, too:
260
+ #
261
+ # case distance
262
+ # in Measure(amount:, unit: 'km')
263
+ # puts "It is #{amount} kilometers away"
264
+ # # ...
265
+ # end
266
+ #
267
+ def deconstruct_keys: (?Array[Symbol]?) -> Hash[Symbol, untyped]
268
+
269
+ # <!--
270
+ # rdoc-file=struct.c
271
+ # - self.eql?(other) -> true or false
272
+ # -->
273
+ # Equality check that is used when two items of data are keys of a Hash.
274
+ #
275
+ # The subtle difference with #== is that members are also compared with their
276
+ # #eql? method, which might be important in some cases:
277
+ #
278
+ # Measure = Data.define(:amount, :unit)
279
+ #
280
+ # Measure[1, 'km'] == Measure[1.0, 'km'] #=> true, they are equal as values
281
+ # # ...but...
282
+ # Measure[1, 'km'].eql? Measure[1.0, 'km'] #=> false, they represent different hash keys
283
+ #
284
+ # See also Object#eql? for further explanations of the method usage.
285
+ #
286
+ def eql?: (untyped) -> bool
287
+
288
+ # <!--
289
+ # rdoc-file=struct.c
290
+ # - hash -> integer
291
+ # -->
292
+ # Redefines Object#hash (used to distinguish objects as Hash keys) so that data
293
+ # objects of the same class with same content would have the same `hash` value,
294
+ # and represented the same Hash key.
295
+ #
296
+ # Measure = Data.define(:amount, :unit)
297
+ #
298
+ # Measure[1, 'km'].hash == Measure[1, 'km'].hash #=> true
299
+ # Measure[1, 'km'].hash == Measure[10, 'km'].hash #=> false
300
+ # Measure[1, 'km'].hash == Measure[1, 'm'].hash #=> false
301
+ # Measure[1, 'km'].hash == Measure[1.0, 'km'].hash #=> false
302
+ #
303
+ # # Structurally similar data class, but shouldn't be considered
304
+ # # the same hash key
305
+ # Measurement = Data.define(:amount, :unit)
306
+ #
307
+ # Measure[1, 'km'].hash == Measurement[1, 'km'].hash #=> false
308
+ #
309
+ def hash: () -> Integer
310
+
311
+ # <!--
312
+ # rdoc-file=struct.c
313
+ # - inspect -> string
314
+ # - to_s -> string
315
+ # -->
316
+ # Returns a string representation of `self`:
317
+ #
318
+ # Measure = Data.define(:amount, :unit)
319
+ #
320
+ # distance = Measure[10, 'km']
321
+ #
322
+ # p distance # uses #inspect underneath
323
+ # #<data Measure amount=10, unit="km">
324
+ #
325
+ # puts distance # uses #to_s underneath, same representation
326
+ # #<data Measure amount=10, unit="km">
327
+ #
328
+ def inspect: () -> String
329
+
330
+ # <!--
331
+ # rdoc-file=struct.c
332
+ # - members -> array_of_symbols
333
+ # -->
334
+ # Returns the member names from `self` as an array:
335
+ #
336
+ # Measure = Data.define(:amount, :unit)
337
+ # distance = Measure[10, 'km']
338
+ #
339
+ # distance.members #=> [:amount, :unit]
340
+ #
341
+ def members: () -> Array[Symbol]
342
+
343
+ # <!--
344
+ # rdoc-file=struct.c
345
+ # - to_h -> hash
346
+ # - to_h {|name, value| ... } -> hash
347
+ # -->
348
+ # Returns Hash representation of the data object.
349
+ #
350
+ # Measure = Data.define(:amount, :unit)
351
+ # distance = Measure[10, 'km']
352
+ #
353
+ # distance.to_h
354
+ # #=> {:amount=>10, :unit=>"km"}
355
+ #
356
+ # Like Enumerable#to_h, if the block is provided, it is expected to produce
357
+ # key-value pairs to construct a hash:
358
+ #
359
+ # distance.to_h { |name, val| [name.to_s, val.to_s] }
360
+ # #=> {"amount"=>"10", "unit"=>"km"}
361
+ #
362
+ # Note that there is a useful symmetry between #to_h and #initialize:
363
+ #
364
+ # distance2 = Measure.new(**distance.to_h)
365
+ # #=> #<data Measure amount=10, unit="km">
366
+ # distance2 == distance
367
+ # #=> true
368
+ #
369
+ def to_h: () -> Hash[Symbol, untyped]
370
+
371
+ # <!-- rdoc-file=struct.c -->
372
+ # Returns a string representation of `self`:
373
+ #
374
+ # Measure = Data.define(:amount, :unit)
375
+ #
376
+ # distance = Measure[10, 'km']
377
+ #
378
+ # p distance # uses #inspect underneath
379
+ # #<data Measure amount=10, unit="km">
380
+ #
381
+ # puts distance # uses #to_s underneath, same representation
382
+ # #<data Measure amount=10, unit="km">
383
+ #
384
+ alias to_s inspect
385
+
386
+ # <!--
387
+ # rdoc-file=struct.c
388
+ # - with(**kwargs) -> instance
389
+ # -->
390
+ # Returns a shallow copy of `self` --- the instance variables of `self` are
391
+ # copied, but not the objects they reference.
392
+ #
393
+ # If the method is supplied any keyword arguments, the copy will be created with
394
+ # the respective field values updated to use the supplied keyword argument
395
+ # values. Note that it is an error to supply a keyword that the Data class does
396
+ # not have as a member.
397
+ #
398
+ # Point = Data.define(:x, :y)
399
+ #
400
+ # origin = Point.new(x: 0, y: 0)
401
+ #
402
+ # up = origin.with(x: 1)
403
+ # right = origin.with(y: 1)
404
+ # up_and_right = up.with(y: 1)
405
+ #
406
+ # p origin # #<data Point x=0, y=0>
407
+ # p up # #<data Point x=1, y=0>
408
+ # p right # #<data Point x=0, y=1>
409
+ # p up_and_right # #<data Point x=1, y=1>
410
+ #
411
+ # out = origin.with(z: 1) # ArgumentError: unknown keyword: :z
412
+ # some_point = origin.with(1, 2) # ArgumentError: expected keyword arguments, got positional arguments
413
+ #
414
+ def with: (**untyped) -> instance
415
+ end