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,38 @@
1
+ module Bundler
2
+ class LockfileParser
3
+ def initialize: (String) -> void
4
+
5
+ def specs: () -> Array[LazySpecification]
6
+ end
7
+
8
+ class LazySpecification
9
+ def name: () -> String
10
+
11
+ def version: () -> String
12
+
13
+ def dependencies: () -> Array[Gem::Dependency]
14
+ end
15
+
16
+ class Dependency < Gem::Dependency
17
+ attr_reader autorequire: Array[String]?
18
+
19
+ attr_reader source: untyped
20
+ end
21
+
22
+ class Definition
23
+ def lockfile: () -> Pathname
24
+
25
+ def locked_gems: () -> LockfileParser
26
+
27
+ def dependencies: () -> Array[Dependency]
28
+ end
29
+
30
+ def self.default_lockfile: () -> Pathname
31
+
32
+ def self.definition: () -> Definition
33
+
34
+ module Source
35
+ class Gemspec
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,5 @@
1
+ module Enumerable[unchecked out Elem] : _Each[Elem]
2
+ def each_slice: (2) { ([Elem, Elem]) -> void } -> void
3
+ | (2) -> Enumerator[[Elem, Elem], void]
4
+ | ...
5
+ end
@@ -0,0 +1,19 @@
1
+ module Gem
2
+ class Specification
3
+ attr_reader version (): Version
4
+
5
+ attr_reader gem_dir (): String
6
+
7
+ def self.find_by_name: (String name, *String requirements) -> instance
8
+
9
+ def dependencies: () -> Array[Dependency]
10
+ end
11
+
12
+ class Dependency
13
+ def name: () -> String
14
+ end
15
+
16
+ module ::Kernel
17
+ def self?.gem: (String, *String) -> void
18
+ end
19
+ end
data/sig/sorter.rbs ADDED
@@ -0,0 +1,41 @@
1
+ module RBS
2
+ class Sorter
3
+ include RBS::AST
4
+
5
+ type member = AST::Declarations::Class::member
6
+ | AST::Declarations::Module::member
7
+ | AST::Declarations::Interface::member
8
+
9
+ attr_reader path: Pathname
10
+
11
+ attr_reader stdout: IO
12
+
13
+ def initialize: (Pathname path, ?stdout: IO) -> void
14
+
15
+ def run: () -> void
16
+
17
+ type partitioned = {
18
+ type_alias_decls: Array[AST::Declarations::TypeAlias],
19
+ constant_decls: Array[AST::Declarations::Constant],
20
+ class_decls: Array[AST::Declarations::Class | AST::Declarations::Module | AST::Declarations::Interface],
21
+ mixin_includes: Array[AST::Members::Include],
22
+ mixin_prepends: Array[AST::Members::Prepend],
23
+ mixin_extends: Array[AST::Members::Extend],
24
+ class_variables: Array[AST::Members::ClassVariable],
25
+ class_instance_variables: Array[AST::Members::ClassInstanceVariable],
26
+ instance_variables: Array[AST::Members::InstanceVariable],
27
+ singleton_attributes: Array[AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader],
28
+ instance_attributes: Array[AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader],
29
+ module_functions: Array[AST::Members::MethodDefinition],
30
+ singleton_new_methods: Array[AST::Members::MethodDefinition],
31
+ public_singleton_methods: Array[AST::Members::MethodDefinition | AST::Members::Alias],
32
+ private_singleton_methods: Array[AST::Members::MethodDefinition],
33
+ instance_initialize_methods: Array[AST::Members::MethodDefinition],
34
+ public_instance_methods: Array[AST::Members::MethodDefinition | AST::Members::Alias],
35
+ private_instance_methods: Array[AST::Members::MethodDefinition],
36
+ other_decls: Array[member]
37
+ }
38
+
39
+ def sort_decl: (member decl) -> member
40
+ end
41
+ end
@@ -0,0 +1,48 @@
1
+ module RBS
2
+ # Substitution from type variables to types.
3
+ #
4
+ # The substitution construction is in _destructive_ manner.
5
+ #
6
+ # sub = Substitution.new
7
+ # sub.add(from: :A, to: type1)
8
+ # sub.add(from: :B, to: type2)
9
+ # sub.instance_type = type3
10
+ #
11
+ class Substitution
12
+ # A hash containing mapping from type variable name to type.
13
+ attr_reader mapping: Hash[Symbol, Types::t]
14
+
15
+ # The result of applying this substitution to `instance` type.
16
+ # `nil` maps to `instance` type itself.
17
+ attr_accessor instance_type: Types::t?
18
+
19
+ def initialize: () -> void
20
+
21
+ # Add mapping to this substitution.
22
+ # Overwrites the previous mapping if same `from` is given.
23
+ def add: (from: Symbol, to: Types::t) -> void
24
+
25
+ # Utility method to construct a substitution.
26
+ # Raises an error when `variables.size != types.size`.
27
+ # `instance_type` defaults to `nil`.
28
+ #
29
+ # Yields types in `types` and the block value is used if block is given.
30
+ #
31
+ def self.build: (Array[Symbol] variables, Array[Types::t] types, ?instance_type: Types::t?) ?{ (Types::t) -> Types::t } -> instance
32
+
33
+ # Applies the substitution to given type.
34
+ def apply: (Types::t) -> Types::t
35
+
36
+ # Returns a substitution without variables given in `vars`.
37
+ def without: (*Symbol vars) -> Substitution
38
+
39
+ # Returns true if given substitution is identity.
40
+ def empty?: () -> bool
41
+
42
+ alias [] apply
43
+
44
+ # (s1 + s2)[t] == s2[s1[t]]
45
+ #
46
+ def +: (Substitution) -> Substitution
47
+ end
48
+ end
@@ -0,0 +1,37 @@
1
+ module RBS
2
+ class Subtractor
3
+ type decl_with_members = AST::Declarations::Class | AST::Declarations::Module
4
+
5
+ @minuend: Array[AST::Declarations::t]
6
+ @subtrahend: Environment
7
+
8
+ def initialize: (Array[AST::Declarations::t] minuend, Environment subtrahend) -> void
9
+
10
+ def call: (?Array[AST::Declarations::t], ?context: Resolver::context) -> Array[AST::Declarations::t]
11
+
12
+ private def filter_members: (decl_with_members, context: Resolver::context) -> decl_with_members?
13
+
14
+ private def member_exist?: (TypeName owner, AST::Members::t, context: Resolver::context) -> boolish
15
+
16
+ private def method_exist?: (TypeName owner, Symbol method_name, AST::Members::MethodDefinition::kind) -> boolish
17
+
18
+ private def ivar_exist?: (TypeName owner, Symbol ivar_name, AST::Members::Attribute::kind) -> boolish
19
+
20
+ private def cvar_exist?: (TypeName owner, Symbol cvar_name) -> boolish
21
+
22
+ private def each_member: (TypeName owner) { (AST::Members::t | AST::Declarations::t) -> void } -> void
23
+ | (TypeName owner) -> Enumerator[(AST::Members::t | AST::Declarations::t), void]
24
+
25
+ private def mixin_exist?: (TypeName owner, AST::Members::Include | AST::Members::Extend | AST::Members::Prepend, context: Resolver::context) -> boolish
26
+
27
+ private def filter_redundant_access_modifiers: (Array[AST::Declarations::t | AST::Members::t]) -> Array[AST::Declarations::t | AST::Members::t]
28
+
29
+ private def access_modifier?: (AST::Declarations::t | AST::Members::t?) -> bool
30
+
31
+ private def update_decl: (decl_with_members, members: Array[AST::Declarations::t | AST::Members::t]) -> decl_with_members
32
+
33
+ private def absolute_typename: (TypeName, context: Resolver::context) -> TypeName
34
+
35
+ private def typename_candidates: (TypeName, context: Resolver::context) -> Array[TypeName]
36
+ end
37
+ end
@@ -0,0 +1,52 @@
1
+ module RBS
2
+ module Test
3
+ module Errors
4
+ type t = ArgumentTypeError | BlockArgumentError | ArgumentError | BlockArgumentError | ReturnTypeError | BlockReturnTypeError
5
+ | UnexpectedBlockError | MissingBlockError | UnresolvedOverloadingError
6
+
7
+ # Type of a argument value given to a method call is not compatible with the type from method type
8
+ class ArgumentTypeError
9
+ end
10
+
11
+ # Type of a argument value given to a block yield is not compatible with the type from method type
12
+ class BlockArgumentTypeError
13
+ end
14
+
15
+ # Incompatible number of args/keyword args is given to a method call
16
+ class ArgumentError
17
+ end
18
+
19
+ # Incompatible number of args is given to a block yield
20
+ class BlockArgumentError
21
+ end
22
+
23
+ # Type of return value from a method call is incompatible
24
+ class ReturnTypeError
25
+ end
26
+
27
+ # Type of return value from a block yield is incompatible
28
+ class BlockReturnTypeError
29
+ end
30
+
31
+ # Unexpected block is given
32
+ class UnexpectedBlockError
33
+ end
34
+
35
+ # Required block is missing
36
+ class MissingBlockError
37
+ end
38
+
39
+ # Any other error
40
+ class UnresolvedOverloadingError
41
+ end
42
+
43
+ def self.format_param: (Types::Function::Param) -> String
44
+
45
+ RESPOND_TO: UnboundMethod
46
+
47
+ def self.inspect_: (untyped) -> String
48
+
49
+ def self.to_string: (t) -> String
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,9 @@
1
+ module RBS
2
+ module Test
3
+ module Guaranteed
4
+ module Inspect
5
+ def self?.guaranteed_inspect: (untyped) -> String
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module RBS
2
+ module Test
3
+ class TypeCheck
4
+ def initialize: (self_class: Module, builder: DefinitionBuilder, sample_size: Integer, unchecked_classes: Array[Module], instance_class: Module, class_class: Module) -> void
5
+
6
+ # Confirm if given `CallTrace` is compatible with `MethodType`
7
+ #
8
+ # Returns an array with detected errors.
9
+ #
10
+ def method_call: (Symbol, MethodType, CallTrace, errors: Array[Errors::t], ?annotations: Array[AST::Annotation]) -> Array[Errors::t]
11
+
12
+ # Test if given `value` is compatible to type
13
+ #
14
+ # Returns `true` if the value has the type.
15
+ #
16
+ def value: (untyped value, Types::t) -> bool
17
+ end
18
+ end
19
+ end
data/sig/test.rbs ADDED
@@ -0,0 +1,82 @@
1
+ module RBS
2
+ module Test
3
+ # Object#class
4
+ CLASS: UnboundMethod
5
+
6
+ # Module#define_method
7
+ DEFINE_METHOD: UnboundMethod
8
+
9
+ # Kernel#inspect
10
+ INSPECT: UnboundMethod
11
+
12
+ # BasicObject#instance_eval
13
+ INSTANCE_EVAL: UnboundMethod
14
+
15
+ # BasicObject#instance_exec
16
+ INSTANCE_EXEC: UnboundMethod
17
+
18
+ # Kernel#is_a?
19
+ IS_AP: UnboundMethod
20
+
21
+ # Kernel#method
22
+ METHOD: UnboundMethod
23
+
24
+ # Kernel#methods
25
+ METHODS: UnboundMethod
26
+
27
+ # Kernel#pp
28
+ PP: UnboundMethod
29
+
30
+ # Kernel#singleton_class
31
+ SINGLETON_CLASS: UnboundMethod
32
+
33
+ # Kernel#respond_to?
34
+ RESPOND_TOP: UnboundMethod
35
+
36
+ class ArgumentsReturn
37
+ type exit_type = :return | :exception | :break
38
+
39
+ attr_reader arguments: Array[untyped]
40
+
41
+ attr_reader exit_value: untyped
42
+
43
+ attr_reader exit_type: exit_type
44
+
45
+ def initialize: (arguments: Array[untyped], exit_value: untyped, exit_type: exit_type) -> void
46
+
47
+ def self.return: (arguments: Array[untyped], value: untyped) -> ArgumentsReturn
48
+
49
+ def self.exception: (arguments: Array[untyped], exception: untyped) -> ArgumentsReturn
50
+
51
+ def self.break: (arguments: Array[untyped]) -> ArgumentsReturn
52
+
53
+ def return_value: () -> untyped
54
+
55
+ def exception: () -> untyped
56
+
57
+ def return?: () -> bool
58
+
59
+ def exception?: () -> bool
60
+
61
+ def break?: () -> bool
62
+ end
63
+
64
+ class CallTrace
65
+ attr_reader method_name: Symbol
66
+
67
+ attr_reader method_call: ArgumentsReturn
68
+
69
+ attr_reader block_calls: Array[ArgumentsReturn]
70
+
71
+ attr_reader block_given: bool
72
+
73
+ def initialize: (method_name: Symbol, method_call: ArgumentsReturn, block_calls: Array[ArgumentsReturn], block_given: bool) -> void
74
+ end
75
+
76
+ attr_accessor self.suffix: String
77
+
78
+ def self.reset_suffix: () -> String
79
+
80
+ def self.call: (untyped receiver, UnboundMethod, *untyped) ?{ () -> void } -> void
81
+ end
82
+ end
@@ -0,0 +1,53 @@
1
+ module RBS
2
+ # TypeAliasDependency calculates the dependencies between type aliases
3
+ #
4
+ # The dependencies are normalized automatically.
5
+ #
6
+ class TypeAliasDependency
7
+ attr_reader env: Environment
8
+
9
+ # A hash table from type alias name to it's direct dependencies
10
+ #
11
+ # The source type name and dependencies are normalized.
12
+ #
13
+ attr_reader direct_dependencies: Hash[TypeName, Set[TypeName]]
14
+
15
+ # A hash table from type alias name to a hash name with keys of transitive dependencies
16
+ #
17
+ # The source type name and dependencies are normalized.
18
+ #
19
+ attr_reader dependencies: Hash[TypeName, Hash[TypeName, bool]]
20
+
21
+ def initialize: (env: Environment) -> void
22
+
23
+ # Returns `true` if given type alias is circular
24
+ #
25
+ # Normalized given type name automatically.
26
+ #
27
+ def circular_definition?: (TypeName alias_name) -> bool
28
+
29
+ # Returns the set of direct dependencies from the given type name
30
+ #
31
+ # Given type name will be normalized automatically.
32
+ # Returns normalized type names.
33
+ #
34
+ def direct_dependencies_of: (TypeName) -> Set[TypeName]
35
+
36
+ # Returns the set of dependencies from the given type name
37
+ #
38
+ # Given type name will be normalized automatically.
39
+ # Returns normalized type names.
40
+ #
41
+ def dependencies_of: (TypeName) -> Set[TypeName]
42
+
43
+ def build_dependencies: () -> void
44
+
45
+ def transitive_closure: () -> void
46
+
47
+ private
48
+
49
+ def direct_dependency: (Types::t `type`, ?Set[TypeName] result) -> Set[TypeName]
50
+
51
+ def dependency: (TypeName start, TypeName vertex, ?boolish nested) -> void
52
+ end
53
+ end
@@ -0,0 +1,98 @@
1
+ module RBS
2
+ # `TypeAliasRegularity` validates if a type alias is regular or not.
3
+ #
4
+ # Generic and recursive type alias cannot be polymorphic in their definitions.
5
+ #
6
+ # ```rbs
7
+ # type foo[T] = Integer
8
+ # | foo[T]? # Allowed. The type argument of `foo` doesn't change.
9
+ #
10
+ # type bar[T] = Integer
11
+ # | foo[T]
12
+ # | foo[Array[T]] # Allowed. There are two type arguments `T` and `Array[T]` of `foo`, but it's not definition of `foo`.
13
+ #
14
+ # type baz[T] = Integer
15
+ # | baz[Array[T]] # Error. Recursive definition of `baz` has different type argument from the definition.
16
+ # ```
17
+ #
18
+ # The `#nonregular?` method can be used to test if given type name is regular or not.
19
+ #
20
+ # ```rb
21
+ # validator = RBS::TypeAliasRegularity.validate(env: env)
22
+ #
23
+ # validator.nonregular?(TypeName.parse("::foo")) # => nil
24
+ # validator.nonregular?(TypeName.parse("::bar")) # => nil
25
+ # validator.nonregular?(TypeName.parse("::baz")) # => TypeAliasRegularity::Diagnostic
26
+ # ```
27
+ #
28
+ # A special case is when the type argument is `untyped`.
29
+ #
30
+ # ```rbs
31
+ # type foo[T] = Integer | foo[untyped] # This is allowed.
32
+ # ```
33
+ #
34
+ class TypeAliasRegularity
35
+ attr_reader env: Environment
36
+
37
+ attr_reader builder: DefinitionBuilder
38
+
39
+ # Diagnostics of each type aliases.
40
+ # The type names are normalized.
41
+ #
42
+ attr_reader diagnostics: Hash[TypeName, Diagnostic]
43
+
44
+ # `Diagnostic` represents an non-regular type alias declaration error.
45
+ # It consists of the name of the alias type and a type on which the nonregularity is detected.
46
+ #
47
+ # ```rbs
48
+ # type t[T] = Integer | t[T?]
49
+ # ```
50
+ #
51
+ # The type `t` is nonregular because it contains `t[T?]` on it's right hand side.
52
+ #
53
+ # ```
54
+ # diagnostic = validator.nonregular?(TypeName.parse("::t"))
55
+ # diagnostic.type_name # => TypeName.parse("::t")
56
+ # diagnostic.nonregular_type # => t[T?]
57
+ # ```
58
+ #
59
+ class Diagnostic
60
+ attr_reader type_name: TypeName
61
+
62
+ attr_reader nonregular_type: Types::Alias
63
+
64
+ def initialize: (type_name: TypeName, nonregular_type: Types::Alias) -> void
65
+ end
66
+
67
+ # Returns new instance which already run `#validate`.
68
+ #
69
+ def self.validate: (env: Environment) -> TypeAliasRegularity
70
+
71
+ def initialize: (env: Environment) -> void
72
+
73
+ # Returns `Diagnostic` instance if the alias type is nonregular.
74
+ # Returns `nil` if the alias type is regular.
75
+ #
76
+ # Normalizes the given type name automatically.
77
+ #
78
+ def nonregular?: (TypeName) -> Diagnostic?
79
+
80
+ def validate: () -> void
81
+
82
+ private
83
+
84
+ def validate_alias_type: (Types::Alias, Set[TypeName], Hash[TypeName, Types::Alias]) -> void
85
+
86
+ # Returns alias type for given type name, if the alias is generic.
87
+ # Returns nil if the type alias is not generic.
88
+ #
89
+ def build_alias_type: (TypeName) -> Types::Alias?
90
+
91
+ def compatible_args?: (Array[Types::t], Array[Types::t]) -> boolish
92
+
93
+ def each_alias_type: (Types::t) { (Types::Alias) -> void } -> void
94
+
95
+ # Yields set of normalized type names
96
+ def each_mutual_alias_defs: () { (Set[TypeName]) -> void } -> void
97
+ end
98
+ end
@@ -0,0 +1,110 @@
1
+ module RBS
2
+ module AST
3
+ class TypeParam
4
+ # Key
5
+ # ^^^ name
6
+ #
7
+ # unchecked out Elem < _ToJson = untyped
8
+ # ^^^^^^^^^ unchecked
9
+ # ^^^ variance
10
+ # ^^^^ name
11
+ # ^^^^^^^^^ upper_bound
12
+ # ^^^^^^^^^ default
13
+ type loc = Location[:name, :variance | :unchecked | :upper_bound | :default]
14
+
15
+ type variance = :invariant | :covariant | :contravariant
16
+
17
+ type bound = Types::ClassInstance | Types::ClassSingleton | Types::Interface
18
+
19
+ attr_reader name: Symbol
20
+ attr_reader variance: variance
21
+ attr_reader location: loc?
22
+
23
+ %a{pure} def upper_bound: () -> bound?
24
+
25
+ attr_reader upper_bound_type: Types::t?
26
+
27
+ attr_reader default_type: Types::t?
28
+
29
+ def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
30
+
31
+ include _ToJson
32
+
33
+ def ==: (untyped) -> bool
34
+
35
+ def eql?: (untyped) -> bool
36
+
37
+ def hash: () -> Integer
38
+
39
+ @unchecked: bool
40
+
41
+ def unchecked!: (?boolish) -> self
42
+
43
+ def unchecked?: () -> bool
44
+
45
+ def map_type: () { (Types::t) -> Types::t } -> TypeParam
46
+
47
+ # Helper function to resolve _class instance types_ to _type variables_.
48
+ #
49
+ # We need this step because RBS language has an identical syntax for both unqualified class instance types and type variables.
50
+ # `String` may be an instance of `::String` class or type variable depending on the list of bound type variables.
51
+ #
52
+ # So, we need second pass to parse the following generics parameter declaration.
53
+ #
54
+ # ```rbs
55
+ # class Foo[X < _Each[Y], Y]
56
+ # # ^ We want this `Y` to be a type variable.
57
+ # end
58
+ # ```
59
+ #
60
+ def self.resolve_variables: (Array[TypeParam]) -> void
61
+
62
+ def self.subst_var: (Set[Symbol], Types::t) -> Types::t
63
+
64
+ # Rename type parameter name.
65
+ #
66
+ # The renaming cannot be done separately because a set of `TypeParam` decls may be mutual recursive.
67
+ #
68
+ # Example:
69
+ #
70
+ # * Renaming `A -> X, B -> Y`
71
+ # * Input `[A, B < _Pushable[A]]`
72
+ # * Result `[X, Y < _Pushable[X]]`
73
+ #
74
+ def self.rename: (Array[TypeParam], new_names: Array[Symbol]) -> Array[TypeParam]
75
+
76
+ def to_s: () -> String
77
+
78
+ # Validates TypeParams if it refers another optional type params
79
+ #
80
+ # * Returns array of TypeParam objects that refers other optional type params
81
+ # * Returns `nil` if all type params are valid
82
+ #
83
+ def self.validate: (Array[TypeParam]) -> Array[TypeParam]?
84
+
85
+ # Returns an application with respect to type params' default
86
+ #
87
+ def self.application: (Array[TypeParam], Array[Types::t]) -> Substitution?
88
+
89
+ # Returns an array of type args, that fills omitted types with the defaults
90
+ #
91
+ # ```rbs
92
+ # interface _Foo[T, S = untyped]
93
+ # end
94
+ # ```
95
+ #
96
+ # Normalizing type args with `_Foo` works as following:
97
+ #
98
+ # ```rbs
99
+ # _Foo[String] # => _Foo[String, untyped]
100
+ # _Foo[String, Integer] # => _Foo[String, Integer]
101
+ # _Foo # => _Foo (Omitting missing args)
102
+ # _Foo[String, Integer, untyped] # => _Foo[String, Integer, untyped] (Keeping extra args)
103
+ # ```
104
+ #
105
+ # Note that it allows invalid arities, returning the `args` immediately.
106
+ #
107
+ def self.normalize_args: (Array[TypeParam], Array[Types::t]) -> Array[Types::t]
108
+ end
109
+ end
110
+ end