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,154 @@
1
+ module RBS
2
+ module UnitTest
3
+ module Convertibles
4
+ # An object that doesn't have methods excepts `__send__` and `__id__`
5
+ #
6
+ # Other methods are `undef`ed.
7
+ #
8
+ class BlankSlate < BasicObject
9
+ # Add Object methods to `self`
10
+ #
11
+ def __with_object_methods: (*Symbol methods) -> self
12
+ end
13
+
14
+ # An object with `#to_io` method
15
+ class ToIO < BlankSlate
16
+ @io: untyped
17
+
18
+ def initialize: (?untyped io) -> void
19
+
20
+ def to_io: () -> untyped
21
+ end
22
+
23
+ # An object with `#to_i` method
24
+ class ToI < BlankSlate
25
+ @value: untyped
26
+
27
+ def initialize: (?untyped value) -> void
28
+
29
+ def to_i: () -> untyped
30
+ end
31
+
32
+ # An object with `#to_int` method
33
+ class ToInt < BlankSlate
34
+ @value: untyped
35
+
36
+ def initialize: (?untyped value) -> void
37
+
38
+ def to_int: () -> untyped
39
+ end
40
+
41
+ # An object with `#to_f` method
42
+ class ToF < BlankSlate
43
+ @value: untyped
44
+
45
+ def initialize: (?untyped value) -> void
46
+
47
+ def to_f: () -> untyped
48
+ end
49
+
50
+ # An object with `#to_r` method
51
+ class ToR < BlankSlate
52
+ @value: untyped
53
+
54
+ def initialize: (?untyped value) -> void
55
+
56
+ def to_r: () -> untyped
57
+ end
58
+
59
+ # An object with `#to_c` method
60
+ class ToC < BlankSlate
61
+ @value: untyped
62
+
63
+ def initialize: (?untyped value) -> void
64
+
65
+ def to_c: () -> untyped
66
+ end
67
+
68
+ # An object with `#to_str` method
69
+ class ToStr < BlankSlate
70
+ @value: untyped
71
+
72
+ def initialize: (?untyped value) -> void
73
+
74
+ def to_str: () -> untyped
75
+ end
76
+
77
+ # An object with `#to_s` method
78
+ class ToS < BlankSlate
79
+ @value: untyped
80
+
81
+ def initialize: (?untyped value) -> void
82
+
83
+ def to_s: () -> untyped
84
+ end
85
+
86
+ # An object with `#to_sym` method
87
+ class ToSym < BlankSlate
88
+ @value: untyped
89
+
90
+ def initialize: (?untyped value) -> void
91
+
92
+ def to_sym: () -> untyped
93
+ end
94
+
95
+ # An object with `#to_a` method
96
+ class ToA < BlankSlate
97
+ @args: untyped
98
+
99
+ def initialize: (*untyped args) -> void
100
+
101
+ def to_a: () -> Array[untyped]
102
+ end
103
+
104
+ # An object with `#to_ary` method
105
+ class ToArray < BlankSlate
106
+ @args: untyped
107
+
108
+ def initialize: (*untyped args) -> void
109
+
110
+ def to_ary: () -> Array[untyped]
111
+ end
112
+
113
+ # An object with `#to_hash` method
114
+ class ToHash < BlankSlate
115
+ @hash: untyped
116
+
117
+ def initialize: (?::Hash[untyped, untyped] hash) -> void
118
+
119
+ def to_hash: () -> Hash[untyped, untyped]
120
+ end
121
+
122
+ # An object with `#to_path` method
123
+ class ToPath < BlankSlate
124
+ @value: untyped
125
+
126
+ def initialize: (?untyped value) -> void
127
+
128
+ def to_path: () -> untyped
129
+ end
130
+
131
+ # An object with `#begin`, `#end`, and `#exclude_end`
132
+ class CustomRange < BlankSlate
133
+ @exclude_end: untyped
134
+
135
+ attr_reader begin: untyped
136
+
137
+ attr_reader end: untyped
138
+
139
+ def initialize: (untyped begin_, untyped end_, ?untyped exclude_end) -> void
140
+
141
+ def exclude_end?: () -> untyped
142
+ end
143
+
144
+ # An object with `#each` method
145
+ class Each < BlankSlate
146
+ @args: Array[untyped]
147
+
148
+ def initialize: (*untyped args) -> void
149
+
150
+ def each: () { (untyped) -> void } -> untyped
151
+ end
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,30 @@
1
+ module RBS
2
+ module UnitTest
3
+ module Spy
4
+ def self.wrap: [T] (untyped object, Symbol method_name) -> WrapSpy[T]
5
+ | [T, S] (untyped object, Symbol method_name) { (WrapSpy[T], T) -> S } -> S
6
+
7
+ class WrapSpy[T]
8
+ NO_RETURN: Object
9
+
10
+ attr_accessor callback: ^(Test::CallTrace) -> void
11
+
12
+ attr_reader object: T
13
+
14
+ attr_reader method_name: Symbol
15
+
16
+ def initialize: (object: T, method_name: Symbol) -> void
17
+
18
+ def wrapped_object: () -> untyped
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ class Proc
25
+ def ruby2_keywords: () -> self
26
+ end
27
+
28
+ class Module
29
+ def ruby2_keywords: (*Symbol) -> void
30
+ end
@@ -0,0 +1,196 @@
1
+ module RBS
2
+ module UnitTest
3
+ # TypeAssertions provides assertions to test RBS type definitions in unit test
4
+ #
5
+ # ```ruby
6
+ # class FooInstanceTest < Test::Unit::TestCase
7
+ # include RBS::UnitTest::TypeAssertions
8
+ #
9
+ # testing "::Foo"
10
+ #
11
+ # def test_foo
12
+ # assert_send_type(
13
+ # "(String) -> Integer",
14
+ # Foo.new, :foo, "hello"
15
+ # )
16
+ # end
17
+ # end
18
+ # ```
19
+ #
20
+ # The module provides four assertions:
21
+ #
22
+ # * `assert_send_type` to confirm if a method call has the expected method type
23
+ # * `refute_send_type` to confirm if a method call doesn't have the method type
24
+ # * `assert_const_type` to confirm if a constant has an expected type
25
+ # * `assert_type` to confirm a Ruby value has a RBS type
26
+ #
27
+ # See `.testing` and `.library` methods to set up RBS type testing.
28
+ #
29
+ module TypeAssertions : _BaseAssertions
30
+ type target_type = Types::ClassInstance | Types::ClassSingleton
31
+
32
+ interface _BaseAssertions
33
+ def assert: (untyped, ?String?) -> void
34
+
35
+ def refute: (untyped, ?String?) -> void
36
+
37
+ def assert_empty: (untyped, ?String?) -> void
38
+
39
+ def assert_operator: (untyped, Symbol, *untyped) -> void
40
+
41
+ def notify: (untyped) -> void
42
+
43
+ def assert_predicate: (untyped, Symbol, ?String?) -> void
44
+
45
+ def refute_predicate: (untyped, Symbol, ?String?) -> void
46
+ end
47
+
48
+ module ClassMethods
49
+ attr_reader target: [target_type, Definition]?
50
+
51
+ @libs: Array[String]
52
+
53
+ @env: Environment?
54
+
55
+ @@env_cache: Hash[Array[String], Environment]
56
+
57
+ # `testing` is to tell the framework which class is being tested
58
+ #
59
+ # ```ruby
60
+ # testing "::String"
61
+ # testing "::Array[Integer]"
62
+ #
63
+ # testing "singleton(::Integer)"
64
+ # ```
65
+ #
66
+ def testing: (String | target_type) -> void
67
+
68
+ # `library` is to load RBS type definition of dependencies
69
+ #
70
+ # The test or implementation already `require` dependencies, but the RBS type definition of the dependencies are also required for testing.
71
+ #
72
+ # ```ruby
73
+ # library "pathname", "securerandom"
74
+ # ```
75
+ #
76
+ def library: (*String) -> void
77
+
78
+ def env: () -> Environment
79
+
80
+ @builder: DefinitionBuilder
81
+
82
+ def builder: () -> DefinitionBuilder
83
+ end
84
+
85
+ def self.included: (Module) -> void
86
+
87
+ def env: () -> Environment
88
+
89
+ def builder: () -> DefinitionBuilder
90
+
91
+ @targets: Array[[target_type, Definition]]
92
+
93
+ def targets: () -> Array[[target_type, Definition]]
94
+
95
+ def target: () -> [target_type, Definition]
96
+
97
+ def testing: (String | target_type) ?{ () -> void } -> void
98
+
99
+ # The class object that is associated to the `instance` type of the testing type
100
+ #
101
+ def instance_class: () -> Class
102
+
103
+ # The singleton class object that is associated to the `class` type of the testing type
104
+ #
105
+ def class_class: () -> Class
106
+
107
+ def method_defs: (Symbol) -> Array[Definition::Method::TypeDef]
108
+
109
+ def method_types: (Symbol) -> Array[MethodType]
110
+
111
+ def allows_error: (*Exception) { () -> void } -> void
112
+
113
+ # Calls a method `method_name` and validates if it's compatible with RBS type definition
114
+ #
115
+ # 1. It calls `method_name` with `receiver` passing `args` and given block,
116
+ # 2. Validates if it's compatible with given `method_type`, and
117
+ # 3. Validates if it's also compatible with one of the overloads defined in RBS type definition
118
+ #
119
+ # ```ruby
120
+ # assert_send_type(
121
+ # "(::Integer) -> ::Integer",
122
+ # [], :sum, 8
123
+ # )
124
+ # ```
125
+ #
126
+ # To test methods that takes a block, pass a block to `assert_send_type`.
127
+ # We recommend using `&proc { ... }` syntax for textual representation and prevent from using `break` from the block.
128
+ #
129
+ # ```ruby
130
+ # assert_send_type(
131
+ # "() { () -> void } -> void",
132
+ # self, :loop, &proc { break_from_block }
133
+ # )
134
+ # ```
135
+ #
136
+ # Exiting from the block using `break` and `return` skips assertions.
137
+ # Use `break_from_block` instead.
138
+ #
139
+ # `method_type` must be _simple_.
140
+ # It raises an exception if it's not _simple_.
141
+ # When you really need _non-simple_ `method_type`, wrap the calls inside `allow_non_simple_method_type`.
142
+ # See `docs/stdlib.md` for the details.
143
+ #
144
+ def assert_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
145
+
146
+ # Calls a method `method_name` and validates if it's **not** compatible with RBS type definition
147
+ #
148
+ # 1. It calls `method_name` with `receiver` passing `args` and given block,
149
+ # 2. Validates if it's compatible with given `method_type`, and
150
+ # 3. Validates if it's not compatible with **none** of the overloads defined in RBS type definition
151
+ #
152
+ # See `assert_send_type` for the details.
153
+ #
154
+ def refute_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
155
+
156
+ # Asserts if the constant `constant_name` has `constant_type`, and the RBS definition has compatible type
157
+ #
158
+ # ```ruby
159
+ # assert_const_type("Array[String]", "::Foo::Bar")
160
+ # ```
161
+ #
162
+ # The assertion above succeeds if `::Foo::Bar` is `["foo"]` and RBS contains `::Foo::Bar: [untyped]`.
163
+ # It fails if `::Foo::Bar` is `[2]`, or the RBS definition is `::Foo::Bar: String`.
164
+ #
165
+ def assert_const_type: (String | Types::t constant_type, String constant_name) -> void
166
+
167
+ # Asserts if given `value` has a type of `value_type`
168
+ #
169
+ def assert_type: (String | Types::t value_type, untyped value) -> void
170
+
171
+ # Allow non _simple-type_ method types given to `assert_send_type` and `refute_send_type`
172
+ #
173
+ # ```ruby
174
+ # allow_non_simple_method_type do
175
+ # assert_send_type("() -> self", ...)
176
+ # end
177
+ # ```
178
+ #
179
+ def allow_non_simple_method_type: () { () -> void } -> void
180
+
181
+ @allows_non_simple_method_type: boolish
182
+
183
+ def validate_simple_method_type: (MethodType) -> void
184
+
185
+ # Break from `assert_send_type` or `refute_send_type`
186
+ #
187
+ def break_from_block: (?untyped value) -> void
188
+
189
+ @break_tag: untyped
190
+
191
+ def send_setup: [T] (String | RBS::MethodType method_type, untyped receiver, Symbol method_name, Array[untyped] args, Proc?) { (RBS::MethodType, Test::CallTrace, untyped, Exception?) -> T } -> T
192
+
193
+ def pass: (?String? message) -> void
194
+ end
195
+ end
196
+ end
@@ -0,0 +1,136 @@
1
+ module RBS
2
+ module UnitTest
3
+ # WithAliases module provides `with_***` methods that helps writing tests which passes convertible objects
4
+ #
5
+ # ```ruby
6
+ # include WithAliases
7
+ #
8
+ # with_int do |i|
9
+ # # Yields Integer and RBS::UnitTest::Convertibles::ToInt
10
+ # end
11
+ #
12
+ # with_string.and_nil do |s|
13
+ # # Yields String, RBS::UnitTest::Convertibles::ToStr, and nil
14
+ # end
15
+ # ```
16
+ #
17
+ module WithAliases
18
+ include Convertibles
19
+
20
+ class WithEnum[T]
21
+ @enum: _Each[T]
22
+
23
+ include Enumerable[T]
24
+
25
+ def initialize: (_Each[T] enum) -> void
26
+
27
+ def each: () { (T) -> void } -> void
28
+
29
+ # Yield `nil` in addition to original `enum` elements
30
+ #
31
+ # ```ruby
32
+ # e = WithEnum.new([1, 2])
33
+ # e.and_nil do |i|
34
+ # pp i # => 1, 2, and nil
35
+ # end
36
+ # ```
37
+ #
38
+ def and_nil: () { (T?) -> void } -> void
39
+ | () -> WithEnum[T?]
40
+
41
+ # Skip yielding objects in `cases`
42
+ #
43
+ # ```ruby
44
+ # e = WithEnum.new([1, 2, 3])
45
+ # e.but(2) do |i|
46
+ # pp i # => 1 and 3
47
+ # end
48
+ # ```
49
+ #
50
+ def but: (*T cases) { (T) -> void } -> void
51
+ | (*T cases) -> WithEnum[T]
52
+
53
+ # Yield objects in `args` in addition to original `enum` elements
54
+ #
55
+ # ```ruby
56
+ # e = WithEnum.new([1, 2])
57
+ # e.and(3) do |i|
58
+ # pp i # => 1, 2, and 3
59
+ # end
60
+ # ```
61
+ #
62
+ def and: [S] (*S args) { (T | S) -> void } -> void
63
+ | [S] (*S args) -> WithEnum[T | S]
64
+ end
65
+
66
+ # Yields `args` objects
67
+ #
68
+ def with: (*untyped args) -> void
69
+ | (*untyped args) { (untyped) -> void } -> void
70
+
71
+ # Yields `::int` objects
72
+ #
73
+ def with_int: (?Integer value) { (int) -> void } -> void
74
+ | (?Integer value) -> WithEnum[int]
75
+
76
+ # Yields `::float` objects
77
+ #
78
+ def with_float: (?Float value) { (float) -> void } -> void
79
+ | (?Float value) -> WithEnum[float]
80
+
81
+ # Yields `::string` objects
82
+ #
83
+ def with_string: (?String value) { (string) -> void } -> void
84
+ | (?String value) -> WithEnum[string]
85
+
86
+ # Yields `::array` objects
87
+ #
88
+ def with_array: [T] (*T elements) { (array[T]) -> void } -> void
89
+ | [T] (*T elements) -> WithEnum[array[T]]
90
+
91
+ # Yields `::hash` objects
92
+ #
93
+ def with_hash: [K, V] (?Hash[K, V] hash) { (hash[K, V]) -> void } -> void
94
+ | [K, V] (?Hash[K, V] hash) -> WithEnum[hash[K, V]]
95
+
96
+ # Yields `::io` objects
97
+ #
98
+ def with_io: (?untyped io) { (io) -> void } -> void
99
+ | (?untyped io) -> WithEnum[io]
100
+
101
+ # Yields `::path` objects
102
+ #
103
+ def with_path: (?String path) { (path) -> void } -> void
104
+ | (?String path) -> WithEnum[path]
105
+
106
+ # Yields `::encoding` objects
107
+ #
108
+ def with_encoding: (?untyped encoding) { (encoding) -> void } -> void
109
+ | (?untyped encoding) -> WithEnum[encoding]
110
+
111
+ # Yields `::interned` objects
112
+ #
113
+ def with_interned: (?Symbol value) { (interned) -> void } -> void
114
+ | (?Symbol value) -> WithEnum[interned]
115
+
116
+ # Yields `::bool` objects
117
+ #
118
+ def with_bool: () { (bool) -> void } -> void
119
+ | () -> WithEnum[bool]
120
+
121
+ # Yields `::boolish` objects
122
+ #
123
+ def with_boolish: () { (boolish) -> void } -> void
124
+ | () -> WithEnum[boolish]
125
+
126
+ # Yields `::untyped` objects
127
+ #
128
+ def with_untyped: () { (untyped) -> void } -> void
129
+ | () -> WithEnum[untyped]
130
+
131
+ # Yields `::range` objects
132
+ #
133
+ def with_range: (WithEnum[untyped] start, WithEnum[untyped] stop, ?bool exclude_end) { (range[untyped]) -> void } -> void
134
+ end
135
+ end
136
+ end
data/sig/use_map.rbs ADDED
@@ -0,0 +1,35 @@
1
+ module RBS
2
+ class Environment
3
+ # ```rb
4
+ # map = UseMap.build(environment)
5
+ #
6
+ # map.resolve?(TypeName.parse("TN")) # => nil or resolved type name
7
+ # ```
8
+ #
9
+ class UseMap
10
+ class Table
11
+ attr_reader known_types: Set[TypeName]
12
+
13
+ attr_reader children: Hash[Namespace, Set[TypeName]]
14
+
15
+ def initialize: () -> void
16
+
17
+ def compute_children: () -> self
18
+ end
19
+
20
+ attr_reader use_dirs: Array[AST::Directives::Use]
21
+
22
+ @map: Hash[Symbol, TypeName]
23
+
24
+ @table: Table
25
+
26
+ def initialize: (table: Table) -> void
27
+
28
+ def resolve?: (TypeName) -> TypeName?
29
+
30
+ def resolve: (TypeName) -> TypeName
31
+
32
+ def build_map: (AST::Directives::Use::clause) -> self
33
+ end
34
+ end
35
+ end
data/sig/util.rbs ADDED
@@ -0,0 +1,9 @@
1
+ module RBS
2
+ interface _HashEqual
3
+ def ==: (untyped other) -> bool
4
+
5
+ alias eql? ==
6
+
7
+ def hash: () -> Integer
8
+ end
9
+ end
data/sig/validator.rbs ADDED
@@ -0,0 +1,63 @@
1
+ module RBS
2
+ class Validator
3
+ attr_reader env: Environment
4
+
5
+ attr_reader resolver: Resolver::TypeNameResolver?
6
+
7
+ attr_reader definition_builder: DefinitionBuilder
8
+
9
+ attr_reader type_alias_dependency: TypeAliasDependency
10
+
11
+ attr_reader type_alias_regularity: TypeAliasRegularity
12
+
13
+ def initialize: (env: Environment, ?resolver: Resolver::TypeNameResolver?) -> void
14
+
15
+ # Validates the presence of type names and type application arity match.
16
+ #
17
+ def validate_type: (Types::t, context: Resolver::context) -> void
18
+
19
+ # Validates type alias definition:
20
+ #
21
+ # - There is no circular definition between aliases
22
+ # - The type alias is _regular_
23
+ # - The generics type parameter variance annotation is consistent with respect to their usage
24
+ # - There is no circular dependencies between the generics type parameter bounds
25
+ #
26
+ # It yields the rhs type if block is given, so that you can validate the rhs type.
27
+ #
28
+ def validate_type_alias: (entry: Environment::TypeAliasEntry) ?{ (Types::t rhs_type) -> void } -> void
29
+
30
+ # Validates the type parameters in generic methods.
31
+ #
32
+ def validate_method_definition: (AST::Members::MethodDefinition, type_name: TypeName) -> void
33
+
34
+ # Validates the type parameters if there is no circular dependencies between the bounds.
35
+ #
36
+ # ```rbs
37
+ # [X, Y] # OK
38
+ # [X, Y < _Foo[X]] # OK
39
+ # [X < _Foo[Y], Y] # OK
40
+ # [X < _Foo[Y], Y < _Foo[X]] # Error
41
+ # ```
42
+ #
43
+ def validate_type_params: (Array[AST::TypeParam] params, type_name: TypeName, ?method_name: Symbol?, location: Location[untyped, untyped]?) -> void
44
+
45
+ # Validates class alias declaration
46
+ #
47
+ # - The right hand side can be normalized
48
+ # - No mixing alias declaration between class and modules
49
+ #
50
+ def validate_class_alias: (entry: Environment::ClassAliasEntry | Environment::ModuleAliasEntry) -> void
51
+
52
+ # Validates instance/class-instance/class variables.
53
+ #
54
+ def validate_variable: (AST::Members::Var) -> void
55
+
56
+ private
57
+
58
+ # Resolves relative type names to absolute type names in given context.
59
+ # Yields the type when the type name resolution using `#resolver` fails.
60
+ #
61
+ def absolute_type: (Types::t, context: Resolver::context) ?{ (Types::t) -> TypeName } -> Types::t
62
+ end
63
+ end