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,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ module UnitTest
5
+ module WithAliases
6
+ include Convertibles
7
+
8
+ class WithEnum
9
+ include Enumerable
10
+
11
+ def initialize(enum) = @enum = enum
12
+
13
+ def each(&block) = @enum.each(&block)
14
+
15
+ def and_nil(&block)
16
+ self.and(nil, &_ = block)
17
+ end
18
+
19
+ def but(*cases, &block)
20
+ return WithEnum.new to_enum(__method__ || raise, *cases) unless block
21
+
22
+ each do |arg|
23
+ yield arg unless cases.any? { (_ = _1) === arg }
24
+ end
25
+ end
26
+
27
+ def and(*args, &block)
28
+ return WithEnum.new to_enum(__method__ || raise, *args) unless block
29
+
30
+ each(&block)
31
+ args.each do |arg|
32
+ if WithEnum === arg # use `===` as `arg` might not have `.is_a?` on it
33
+ arg.each(&block)
34
+ else
35
+ block.call(_ = arg)
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ def with(*args, &block)
42
+ return WithEnum.new to_enum(__method__ || raise, *args) unless block
43
+ args.each(&block)
44
+ end
45
+
46
+ def with_int(value = 3, &block)
47
+ return WithEnum.new to_enum(__method__ || raise, value) unless block
48
+ yield value
49
+ yield ToInt.new(value)
50
+ end
51
+
52
+ def with_float(value = 0.1)
53
+ return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
54
+ yield value
55
+ yield ToF.new(value)
56
+ end
57
+
58
+ def with_string(value = '')
59
+ return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
60
+ yield value
61
+ yield ToStr.new(value)
62
+ end
63
+
64
+ def with_array(*elements)
65
+ return WithEnum.new to_enum(__method__ || raise, *elements) unless block_given?
66
+
67
+ yield _ = elements
68
+ yield ToArray.new(*elements)
69
+ end
70
+
71
+ def with_hash(hash = {})
72
+ return WithEnum.new to_enum(__method__ || raise, hash) unless block_given?
73
+
74
+ yield _ = hash
75
+ yield ToHash.new(hash)
76
+ end
77
+
78
+ def with_io(io = $stdout)
79
+ return WithEnum.new to_enum(__method__ || raise, io) unless block_given?
80
+ yield io
81
+ yield ToIO.new(io)
82
+ end
83
+
84
+ def with_path(path = "/tmp/foo.txt", &block)
85
+ return WithEnum.new to_enum(__method__ || raise, path) unless block
86
+
87
+ with_string(path, &block)
88
+ block.call ToPath.new(path)
89
+ end
90
+
91
+ def with_encoding(encoding = Encoding::UTF_8, &block)
92
+ return WithEnum.new to_enum(__method__ || raise, encoding) unless block
93
+
94
+ block.call encoding
95
+ with_string(encoding.to_s, &block)
96
+ end
97
+
98
+ def with_interned(value = :&, &block)
99
+ return WithEnum.new to_enum(__method__ || raise, value) unless block
100
+
101
+ with_string(value.to_s, &block)
102
+ block.call value.to_sym
103
+ end
104
+
105
+ def with_bool(&block)
106
+ return WithEnum.new to_enum(__method__ || raise) unless block
107
+ yield true
108
+ yield false
109
+ end
110
+
111
+ def with_boolish(&block)
112
+ return WithEnum.new to_enum(__method__ || raise) unless block
113
+ with_bool(&block)
114
+ [nil, 1, Object.new, BlankSlate.new, "hello, world!"].each(&block)
115
+ end
116
+
117
+ alias with_untyped with_boolish
118
+
119
+ def with_range(start, stop, exclude_end = false)
120
+ # If you need fixed starting and stopping points, you can just do `with_range with(1), with(2)`.
121
+ raise ArgumentError, '`start` must be from a `with` method' unless start.is_a? WithEnum
122
+ raise ArgumentError, '`stop` must be from a `with` method' unless stop.is_a? WithEnum
123
+
124
+ start.each do |lower|
125
+ stop.each do |upper|
126
+ yield CustomRange.new(lower, upper, exclude_end)
127
+
128
+ # `Range` requires `begin <=> end` to return non-nil, but doesn't actually
129
+ # end up using the return value of it. This is to add that in when needed.
130
+ def lower.<=>(rhs) = :not_nil unless defined? lower.<=>
131
+
132
+ # If `lower <=> rhs` is defined but nil, then that means we're going to be constructing
133
+ # an illegal range (eg `3..ToInt.new(4)`). So, we need to skip yielding an invalid range
134
+ # in that case.
135
+ next if defined?(lower.<=>) && nil == (lower <=> upper)
136
+
137
+ yield Range.new(lower, upper, exclude_end)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ require "rbs/test"
3
+ require "rbs/unit_test/spy"
4
+ require "rbs/unit_test/type_assertions"
5
+ require "rbs/unit_test/convertibles"
6
+ require "rbs/unit_test/with_aliases"
@@ -0,0 +1,186 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ class Validator
5
+ attr_reader :env
6
+ attr_reader :resolver
7
+ attr_reader :definition_builder
8
+
9
+ def initialize(env:, resolver: nil)
10
+ @env = env
11
+ @resolver = resolver
12
+ @definition_builder = DefinitionBuilder.new(env: env)
13
+ end
14
+
15
+ def absolute_type(type, context:, &block)
16
+ return type unless resolver
17
+
18
+ type.map_type_name do |type_name, _, type|
19
+ resolver.resolve(type_name, context: context) || (block ? yield(type) : type_name)
20
+ end
21
+ end
22
+
23
+ # Validates presence of the relative type, and application arity match.
24
+ def validate_type(type, context:)
25
+ case type
26
+ when Types::ClassInstance, Types::Interface, Types::Alias
27
+ type = absolute_type(type, context: context) #: Types::ClassInstance | Types::Interface | Types::Alias
28
+
29
+ definition_builder.validate_type_name(type.name, type.location)
30
+
31
+ normalized_type_name = env.normalize_type_name?(type.name)
32
+
33
+ if normalized_type_name
34
+ type_params =
35
+ case type
36
+ when Types::ClassInstance
37
+ entry = env.class_decls[normalized_type_name] or raise
38
+ entry.type_params
39
+ when Types::Interface
40
+ env.interface_decls[normalized_type_name].decl.type_params
41
+ when Types::Alias
42
+ env.type_alias_decls[normalized_type_name].decl.type_params
43
+ end
44
+
45
+ InvalidTypeApplicationError.check!(
46
+ type_name: type.name,
47
+ args: type.args,
48
+ params: type_params,
49
+ location: type.location
50
+ )
51
+ end
52
+
53
+ when Types::ClassSingleton
54
+ type = absolute_type(type, context: context) #: Types::ClassSingleton
55
+ definition_builder.validate_type_presence(type)
56
+ end
57
+
58
+ type.each_type do |type|
59
+ validate_type(type, context: context)
60
+ end
61
+ end
62
+
63
+ def validate_type_alias(entry:)
64
+ type_name = entry.decl.name
65
+
66
+ if type_alias_dependency.circular_definition?(type_name)
67
+ location = entry.decl.location or raise
68
+ raise RecursiveTypeAliasError.new(alias_names: [type_name], location: location)
69
+ end
70
+
71
+ if diagnostic = type_alias_regularity.nonregular?(type_name)
72
+ location = entry.decl.location or raise
73
+ raise NonregularTypeAliasError.new(diagnostic: diagnostic, location: location)
74
+ end
75
+
76
+ unless entry.decl.type_params.empty?
77
+ calculator = VarianceCalculator.new(builder: definition_builder)
78
+ result = calculator.in_type_alias(name: type_name)
79
+ if set = result.incompatible?(entry.decl.type_params)
80
+ set.each do |param_name|
81
+ param = entry.decl.type_params.find {|param| param.name == param_name } or raise
82
+ next if param.unchecked?
83
+
84
+ raise InvalidVarianceAnnotationError.new(
85
+ type_name: type_name,
86
+ param: param,
87
+ location: entry.decl.type.location
88
+ )
89
+ end
90
+ end
91
+
92
+ validate_type_params(
93
+ entry.decl.type_params,
94
+ type_name: type_name,
95
+ location: entry.decl.location&.aref(:type_params)
96
+ )
97
+ end
98
+
99
+ if block_given?
100
+ yield entry.decl.type
101
+ end
102
+ end
103
+
104
+ def validate_method_definition(method_def, type_name:)
105
+ method_def.overloads.each do |overload|
106
+ method_type = overload.method_type
107
+ unless method_type.type_params.empty?
108
+ loc = method_type.location&.aref(:type_params)
109
+
110
+ validate_type_params(
111
+ method_type.type_params,
112
+ type_name: type_name,
113
+ method_name: method_def.name,
114
+ location: loc
115
+ )
116
+ end
117
+ end
118
+ end
119
+
120
+ def validate_type_params(params, type_name: , method_name: nil, location:)
121
+ # @type var each_node: ^() { (Symbol) -> void } -> void
122
+ each_node = -> (&block) do
123
+ params.each do |param|
124
+ block[param.name]
125
+ end
126
+ end
127
+ # @type var each_child: ^(Symbol) { (Symbol) -> void } -> void
128
+ each_child = -> (name, &block) do
129
+ if param = params.find {|p| p.name == name }
130
+ if b = param.upper_bound_type
131
+ b.free_variables.each do |tv|
132
+ block[tv]
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+ TSort.each_strongly_connected_component(each_node, each_child) do |names|
139
+ if names.size > 1
140
+ params = names.map do |name|
141
+ params.find {|param| param.name == name} or raise
142
+ end
143
+
144
+ raise CyclicTypeParameterBound.new(
145
+ type_name: type_name,
146
+ method_name: method_name,
147
+ params: params,
148
+ location: location
149
+ )
150
+ end
151
+ end
152
+ end
153
+
154
+ def validate_variable(var)
155
+ validate_type(var.type, context: nil)
156
+ end
157
+
158
+ def validate_class_alias(entry:)
159
+ case env.normalize_module_name?(entry.decl.new_name)
160
+ when nil
161
+ raise NoTypeFoundError.new(type_name: entry.decl.old_name, location: entry.decl.location&.[](:old_name))
162
+ when false
163
+ raise CyclicClassAliasDefinitionError.new(entry)
164
+ end
165
+
166
+ case entry
167
+ when Environment::ClassAliasEntry
168
+ unless env.class_entry(entry.decl.old_name)
169
+ raise InconsistentClassModuleAliasError.new(entry)
170
+ end
171
+ when Environment::ModuleAliasEntry
172
+ unless env.module_entry(entry.decl.old_name)
173
+ raise InconsistentClassModuleAliasError.new(entry)
174
+ end
175
+ end
176
+ end
177
+
178
+ def type_alias_dependency
179
+ @type_alias_dependency ||= TypeAliasDependency.new(env: env)
180
+ end
181
+
182
+ def type_alias_regularity
183
+ @type_alias_regularity ||= TypeAliasRegularity.validate(env: env)
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,189 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ class VarianceCalculator
5
+ class Result
6
+ attr_reader :result
7
+
8
+ def initialize(variables:)
9
+ @result = {}
10
+ variables.each do |x|
11
+ result[x] = :unused
12
+ end
13
+ end
14
+
15
+ def covariant(x)
16
+ case result[x]
17
+ when :unused
18
+ result[x] = :covariant
19
+ when :contravariant
20
+ result[x] = :invariant
21
+ end
22
+ end
23
+
24
+ def contravariant(x)
25
+ case result[x]
26
+ when :unused
27
+ result[x] = :contravariant
28
+ when :covariant
29
+ result[x] = :invariant
30
+ end
31
+ end
32
+
33
+ def invariant(x)
34
+ result[x] = :invariant
35
+ end
36
+
37
+ def each(&block)
38
+ result.each(&block)
39
+ end
40
+
41
+ def include?(name)
42
+ result.key?(name)
43
+ end
44
+
45
+ def compatible?(var, with_annotation:)
46
+ variance = result[var]
47
+
48
+ case
49
+ when variance == :unused
50
+ true
51
+ when with_annotation == :invariant
52
+ true
53
+ when variance == with_annotation
54
+ true
55
+ else
56
+ false
57
+ end
58
+ end
59
+
60
+ def incompatible?(params)
61
+ # @type set: Hash[Symbol]
62
+ set = Set[]
63
+
64
+ params.each do |param|
65
+ unless compatible?(param.name, with_annotation: param.variance)
66
+ set << param.name
67
+ end
68
+ end
69
+
70
+ unless set.empty?
71
+ set
72
+ end
73
+ end
74
+ end
75
+
76
+ attr_reader :builder
77
+
78
+ def initialize(builder:)
79
+ @builder = builder
80
+ end
81
+
82
+ def env
83
+ builder.env
84
+ end
85
+
86
+ def in_method_type(method_type:, variables:)
87
+ result = Result.new(variables: variables)
88
+
89
+ function(method_type.type, result: result, context: :covariant)
90
+
91
+ if block = method_type.block
92
+ function(block.type, result: result, context: :contravariant)
93
+ end
94
+
95
+ result
96
+ end
97
+
98
+ def in_inherit(name:, args:, variables:)
99
+ type = if name.class?
100
+ Types::ClassInstance.new(name: name, args: args, location: nil)
101
+ else
102
+ Types::Interface.new(name: name, args: args, location: nil)
103
+ end
104
+
105
+ Result.new(variables: variables).tap do |result|
106
+ type(type, result: result, context: :covariant)
107
+ end
108
+ end
109
+
110
+ def in_type_alias(name:)
111
+ env.normalized_type_name!(name)
112
+
113
+ decl = env.type_alias_decls[name].decl or raise
114
+ variables = decl.type_params.each.map(&:name)
115
+
116
+ Result.new(variables: variables).tap do |result|
117
+ type(decl.type, result: result, context: :covariant)
118
+ end
119
+ end
120
+
121
+ def type(type, result:, context:)
122
+ case type
123
+ when Types::Variable
124
+ if result.include?(type.name)
125
+ case context
126
+ when :covariant
127
+ result.covariant(type.name)
128
+ when :contravariant
129
+ result.contravariant(type.name)
130
+ when :invariant
131
+ result.invariant(type.name)
132
+ end
133
+ end
134
+ when Types::ClassInstance, Types::Interface, Types::Alias
135
+ if type_name = env.normalize_type_name?(type.name)
136
+ type_params = case type
137
+ when Types::ClassInstance
138
+ env.class_decls[type_name].type_params
139
+ when Types::Interface
140
+ env.interface_decls[type_name].decl.type_params
141
+ when Types::Alias
142
+ env.type_alias_decls[type_name].decl.type_params
143
+ end
144
+
145
+ type.args.each.with_index do |ty, i|
146
+ if var = type_params[i]
147
+ case var.variance
148
+ when :invariant
149
+ type(ty, result: result, context: :invariant)
150
+ when :covariant
151
+ type(ty, result: result, context: context)
152
+ when :contravariant
153
+ type(ty, result: result, context: negate(context))
154
+ end
155
+ end
156
+ end
157
+ else
158
+ raise NoTypeFoundError.new(type_name: type.name, location: type.location)
159
+ end
160
+ when Types::Proc
161
+ function(type.type, result: result, context: context)
162
+ else
163
+ type.each_type do |ty|
164
+ type(ty, result: result, context: context)
165
+ end
166
+ end
167
+ end
168
+
169
+ def function(type, result:, context:)
170
+ type.each_param do |param|
171
+ type(param.type, result: result, context: negate(context))
172
+ end
173
+ type(type.return_type, result: result, context: context)
174
+ end
175
+
176
+ def negate(variance)
177
+ case variance
178
+ when :invariant
179
+ :invariant
180
+ when :covariant
181
+ :contravariant
182
+ when :contravariant
183
+ :covariant
184
+ else
185
+ raise
186
+ end
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ class Vendorer
5
+ attr_reader :vendor_dir
6
+ attr_reader :loader
7
+
8
+ def initialize(vendor_dir:, loader:)
9
+ @vendor_dir = vendor_dir
10
+ @loader = loader
11
+ end
12
+
13
+ def ensure_dir
14
+ unless vendor_dir.directory?
15
+ vendor_dir.mkpath
16
+ end
17
+
18
+ yield
19
+ end
20
+
21
+ def clean!
22
+ ensure_dir do
23
+ RBS.logger.info "Cleaning vendor root: #{vendor_dir}..."
24
+ vendor_dir.rmtree
25
+ end
26
+ end
27
+
28
+ def copy!
29
+ # @type var paths: Set[[Pathname, Pathname]]
30
+ paths = Set[]
31
+
32
+ if core_root = loader.core_root
33
+ RBS.logger.info "Vendoring core RBSs in #{vendor_dir + "core"}..."
34
+ FileFinder.each_file(core_root, skip_hidden: true) do |file_path|
35
+ paths << [file_path, Pathname("core") + file_path.relative_path_from(core_root)]
36
+ end
37
+ end
38
+
39
+ loader.libs.each do |lib|
40
+ case
41
+ when (spec, path = EnvironmentLoader.gem_sig_path(lib.name, lib.version))
42
+ dest_dir = Pathname("#{lib.name}-#{spec.version}")
43
+
44
+ RBS.logger.info "Vendoring #{lib.name}(#{spec.version}) RBSs in #{vendor_dir + dest_dir}..."
45
+
46
+ FileFinder.each_file(path, skip_hidden: true) do |file_path|
47
+ paths << [file_path, dest_dir + file_path.relative_path_from(path)]
48
+ end
49
+
50
+ when (rbs, path = loader.repository.lookup_path(lib.name, lib.version))
51
+ dest_dir = Pathname("#{rbs.name}-#{path.version}")
52
+
53
+ RBS.logger.info "Vendoring #{lib.name}(#{path.version}) RBSs in #{vendor_dir + dest_dir}..."
54
+
55
+ FileFinder.each_file(path.path, skip_hidden: true) do |file_path|
56
+ paths << [file_path, dest_dir + file_path.relative_path_from(path.path)]
57
+ end
58
+ else
59
+ RBS.logger.error "Couldn't find RBSs for #{lib.name} (#{lib.version}); skipping..."
60
+ end
61
+ end
62
+
63
+ paths.each do |from, to|
64
+ dest = vendor_dir + to
65
+ dest.parent.mkpath unless dest.parent.directory?
66
+
67
+ FileUtils.copy_file(from.to_s, dest.to_s)
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ VERSION = "3.9.0.1"
5
+ end