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,176 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ module UnitTest
5
+ module Convertibles
6
+ class BlankSlate < BasicObject
7
+ instance_methods.each do |im|
8
+ next if im == :__send__
9
+ undef_method im
10
+ end
11
+
12
+ def __with_object_methods(*methods)
13
+ methods.each do |method|
14
+ singleton_class = ::Object.instance_method(:singleton_class).bind_call(self) #: Class
15
+ singleton_class.instance_eval do
16
+ define_method method, ::Object.instance_method(method)
17
+ end
18
+ end
19
+ self
20
+ end
21
+ end
22
+
23
+ class ToIO < BlankSlate
24
+ def initialize(io = $stdout)
25
+ @io = io
26
+ end
27
+
28
+ def to_io
29
+ @io
30
+ end
31
+ end
32
+
33
+ class ToI < BlankSlate
34
+ def initialize(value = 3)
35
+ @value = value
36
+ end
37
+
38
+ def to_i
39
+ @value
40
+ end
41
+ end
42
+
43
+ class ToInt < BlankSlate
44
+ def initialize(value = 3)
45
+ @value = value
46
+ end
47
+
48
+ def to_int
49
+ @value
50
+ end
51
+ end
52
+
53
+ class ToF < BlankSlate
54
+ def initialize(value = 0.1)
55
+ @value = value
56
+ end
57
+
58
+ def to_f
59
+ @value
60
+ end
61
+ end
62
+
63
+ class ToR < BlankSlate
64
+ def initialize(value = 1r)
65
+ @value = value
66
+ end
67
+
68
+ def to_r
69
+ @value
70
+ end
71
+ end
72
+
73
+ class ToC < BlankSlate
74
+ def initialize(value = 1i)
75
+ @value = value
76
+ end
77
+
78
+ def to_c
79
+ @value
80
+ end
81
+ end
82
+
83
+ class ToStr < BlankSlate
84
+ def initialize(value = "")
85
+ @value = value
86
+ end
87
+
88
+ def to_str
89
+ @value
90
+ end
91
+ end
92
+
93
+ class ToS < BlankSlate
94
+ def initialize(value = "")
95
+ @value = value
96
+ end
97
+
98
+ def to_s
99
+ @value
100
+ end
101
+ end
102
+
103
+ class ToSym < BlankSlate
104
+ def initialize(value = :&)
105
+ @value = value
106
+ end
107
+
108
+ def to_sym
109
+ @value
110
+ end
111
+ end
112
+
113
+ class ToA < BlankSlate
114
+ def initialize(*args)
115
+ @args = args
116
+ end
117
+
118
+ def to_a
119
+ @args
120
+ end
121
+ end
122
+
123
+ class ToArray < BlankSlate
124
+ def initialize(*args)
125
+ @args = args
126
+ end
127
+
128
+ def to_ary
129
+ @args
130
+ end
131
+ end
132
+
133
+ class ToHash < BlankSlate
134
+ def initialize(hash = { 'hello' => 'world' })
135
+ @hash = hash
136
+ end
137
+
138
+ def to_hash
139
+ @hash
140
+ end
141
+ end
142
+
143
+ class ToPath < BlankSlate
144
+ def initialize(value = "")
145
+ @value = value
146
+ end
147
+
148
+ def to_path
149
+ @value
150
+ end
151
+ end
152
+
153
+ class CustomRange < BlankSlate
154
+ attr_reader :begin, :end
155
+
156
+ def initialize(begin_, end_, exclude_end = false)
157
+ @begin = begin_
158
+ @end = end_
159
+ @exclude_end = exclude_end
160
+ end
161
+
162
+ def exclude_end? = @exclude_end
163
+ end
164
+
165
+ class Each < BlankSlate
166
+ def initialize(*args)
167
+ @args = args
168
+ end
169
+
170
+ def each(&block)
171
+ @args.each(&block)
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RBS
4
+ module UnitTest
5
+ module Spy
6
+ def self.wrap(object, method_name)
7
+ spy = WrapSpy.new(object: object, method_name: method_name)
8
+
9
+ if block_given?
10
+ begin
11
+ yield spy, spy.wrapped_object
12
+ end
13
+ else
14
+ spy
15
+ end
16
+ end
17
+
18
+ class WrapSpy
19
+ attr_accessor :callback
20
+ attr_reader :object
21
+ attr_reader :method_name
22
+
23
+ NO_RETURN = Object.new
24
+
25
+ def initialize(object:, method_name:)
26
+ @callback = -> (_) { }
27
+ @object = object
28
+ @method_name = method_name
29
+ end
30
+
31
+ def wrapped_object
32
+ spy = self #: WrapSpy[untyped]
33
+
34
+ Class.new(BasicObject) do
35
+ # @type self: Class
36
+
37
+ define_method(:method_missing) do |name, *args, &block|
38
+ spy.object.__send__(name, *args, &block)
39
+ end
40
+
41
+ define_method(
42
+ spy.method_name,
43
+ _ = -> (*args, &block) do
44
+ return_value = NO_RETURN
45
+ exception = nil
46
+ block_calls = [] #: Array[Test::ArgumentsReturn]
47
+
48
+ spy_block = if block
49
+ Object.new.instance_eval do |fresh|
50
+ proc = -> (*block_args) do
51
+ block_exn = nil
52
+ block_return = nil
53
+
54
+ begin
55
+ block_return = if self.equal?(fresh)
56
+ # no instance eval
57
+ block.call(*block_args)
58
+ else
59
+ self.instance_exec(*block_args, &block)
60
+ end
61
+ rescue Exception => exn
62
+ block_exn = exn
63
+ end
64
+
65
+ if block_exn
66
+ block_calls << Test::ArgumentsReturn.exception(
67
+ arguments: block_args,
68
+ exception: block_exn
69
+ )
70
+ else
71
+ block_calls << Test::ArgumentsReturn.return(
72
+ arguments: block_args,
73
+ value: block_return
74
+ )
75
+ end
76
+
77
+ if block_exn
78
+ raise block_exn
79
+ else
80
+ block_return
81
+ end
82
+ end #: Proc
83
+
84
+ proc.ruby2_keywords
85
+ end
86
+ end
87
+
88
+ begin
89
+ if spy_block
90
+ return_value = spy.object.__send__(spy.method_name, *args) do |*a, **k, &b|
91
+ spy_block.call(*a, **k, &b)
92
+ end
93
+ else
94
+ return_value = spy.object.__send__(spy.method_name, *args, &spy_block)
95
+ end
96
+ rescue ::Exception => exn
97
+ exception = exn
98
+ end
99
+
100
+ return_value
101
+
102
+ ensure
103
+ call =
104
+ case
105
+ when exception
106
+ Test::ArgumentsReturn.exception(
107
+ arguments: args,
108
+ exception: exception
109
+ )
110
+ when ::RBS::UnitTest::Spy::WrapSpy::NO_RETURN != return_value
111
+ Test::ArgumentsReturn.return(
112
+ arguments: args,
113
+ value: return_value
114
+ )
115
+ else
116
+ # break
117
+ Test::ArgumentsReturn.break(arguments: args)
118
+ end
119
+ trace = RBS::Test::CallTrace.new(
120
+ method_name: spy.method_name,
121
+ method_call: call,
122
+ block_calls: block_calls,
123
+ block_given: block != nil
124
+ )
125
+
126
+ spy.callback.call(trace)
127
+
128
+ if exception
129
+ spy.object.__send__(:raise, exception)
130
+ end
131
+ end.ruby2_keywords
132
+ )
133
+ end.allocate()
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,347 @@
1
+ # frozen_string_literal: true
2
+ module RBS
3
+ module UnitTest
4
+ module TypeAssertions
5
+ module ClassMethods
6
+ attr_reader :target
7
+
8
+ def library(*libs)
9
+ if @libs
10
+ raise "Multiple #library calls are not allowed"
11
+ end
12
+
13
+ @libs = libs
14
+ @env = nil
15
+ @target = nil
16
+ end
17
+
18
+ @@env_cache = {} #: Hash[Array[String], RBS::Environment]
19
+
20
+ def env
21
+ @env = @@env_cache[@libs] ||=
22
+ begin
23
+ loader = RBS::EnvironmentLoader.new
24
+ (@libs || []).each do |lib|
25
+ loader.add(library: lib, version: nil)
26
+ end
27
+
28
+ RBS::Environment.from_loader(loader).resolve_type_names
29
+ end
30
+ end
31
+
32
+ def builder
33
+ @builder ||= RBS::DefinitionBuilder.new(env: env)
34
+ end
35
+
36
+ def testing(type_or_string)
37
+ type = case type_or_string
38
+ when String
39
+ RBS::Parser.parse_type(type_or_string, variables: []) || raise
40
+ else
41
+ type_or_string
42
+ end
43
+
44
+ definition = case type
45
+ when RBS::Types::ClassInstance
46
+ builder.build_instance(type.name)
47
+ when RBS::Types::ClassSingleton
48
+ builder.build_singleton(type.name)
49
+ else
50
+ raise "Test target should be class instance or class singleton: #{type}"
51
+ end
52
+
53
+ @target = [type, definition] #: [target_type, Definition]
54
+ end
55
+ end
56
+
57
+ def self.included(base)
58
+ base.extend ClassMethods
59
+ end
60
+
61
+ def env
62
+ (_ = self.class).env
63
+ end
64
+
65
+ def builder
66
+ (_ = self.class).builder
67
+ end
68
+
69
+ def targets
70
+ @targets ||= []
71
+ end
72
+
73
+ def target
74
+ targets.last || (_ = self.class).target
75
+ end
76
+
77
+ def testing(type_or_string)
78
+ type = case type_or_string
79
+ when String
80
+ RBS::Parser.parse_type(type_or_string, variables: [])
81
+ else
82
+ type_or_string
83
+ end
84
+
85
+ definition = case type
86
+ when RBS::Types::ClassInstance
87
+ builder.build_instance(type.name)
88
+ when RBS::Types::ClassSingleton
89
+ builder.build_singleton(type.name)
90
+ else
91
+ raise "Test target should be class instance or class singleton: #{type}"
92
+ end
93
+
94
+ targets.push(
95
+ [
96
+ type, #: target_type
97
+ definition
98
+ ]
99
+ )
100
+
101
+ if block_given?
102
+ begin
103
+ yield
104
+ ensure
105
+ targets.pop
106
+ end
107
+ else
108
+ [type, definition]
109
+ end
110
+ end
111
+
112
+ def instance_class
113
+ type, _ = target
114
+
115
+ case type
116
+ when RBS::Types::ClassSingleton, RBS::Types::ClassInstance
117
+ Object.const_get(type.name.to_s)
118
+ end
119
+ end
120
+
121
+ def class_class
122
+ type, _ = target
123
+
124
+ case type
125
+ when RBS::Types::ClassSingleton, RBS::Types::ClassInstance
126
+ Object.const_get(type.name.to_s).singleton_class
127
+ end
128
+ end
129
+
130
+ def send_setup(method_type, receiver, method, args, proc)
131
+ mt =
132
+ case method_type
133
+ when String
134
+ RBS::Parser.parse_method_type(method_type, variables: []) || raise
135
+ when RBS::MethodType
136
+ method_type
137
+ end
138
+
139
+ validate_simple_method_type(mt)
140
+
141
+ trace = [] #: Array[Test::CallTrace]
142
+ spy = Spy.wrap(receiver, method)
143
+ spy.callback = -> (result) { trace << result }
144
+
145
+ result = nil #: untyped
146
+ exception = nil #: Exception?
147
+ non_jump_exit = true
148
+
149
+ begin
150
+ result = catch do |tag|
151
+ @break_tag = tag
152
+ spy.wrapped_object.__send__(method, *args, &proc)
153
+ ensure
154
+ @break_tag = nil
155
+ end
156
+
157
+ non_jump_exit = false
158
+ rescue Exception => exn
159
+ exception = exn
160
+ ensure
161
+ if non_jump_exit && !exception
162
+ raise "`break` nor `return` from blocks given to `assert_send_type` are prohibited. Use `#break_from_block` instead."
163
+ end
164
+ end
165
+
166
+ last_trace = trace.last or raise "empty trace"
167
+
168
+ yield(mt, last_trace, result, exception)
169
+ end
170
+
171
+ ruby2_keywords def assert_send_type(method_type, receiver, method, *args, &block)
172
+ send_setup(method_type, receiver, method, args, block) do |method_type, trace, result, exception|
173
+ typecheck = RBS::Test::TypeCheck.new(
174
+ self_class: receiver.class,
175
+ builder: builder,
176
+ sample_size: 100,
177
+ unchecked_classes: [],
178
+ instance_class: instance_class,
179
+ class_class: class_class
180
+ )
181
+ errors = typecheck.method_call(method, method_type, trace, errors: [])
182
+
183
+ assert_empty errors.map {|x| RBS::Test::Errors.to_string(x) }, "Call trace does not match with given method type: #{trace.inspect}"
184
+
185
+ method_defs = method_defs(method)
186
+ all_errors = method_defs.map {|t| typecheck.method_call(method, t.type, trace, errors: [], annotations: t.annotations) }
187
+ assert all_errors.any? {|es| es.empty? }, "Call trace does not match one of method definitions:\n #{trace.inspect}\n #{method_defs.map(&:type).join(" | ")}"
188
+
189
+ raise exception if exception
190
+
191
+ result
192
+ end
193
+ end
194
+
195
+ ruby2_keywords def refute_send_type(method_type, receiver, method, *args, &block)
196
+ send_setup(method_type, receiver, method, args, block) do |method_type, trace, result, exception|
197
+ method_type = method_type.update(
198
+ block:
199
+ if method_type.block
200
+ RBS::Types::Block.new(
201
+ type: method_type.block.type.with_return_type(RBS::Types::Bases::Any.new(location: nil)),
202
+ required: method_type.block.required,
203
+ self_type: nil
204
+ )
205
+ end,
206
+ type: method_type.type.with_return_type(RBS::Types::Bases::Any.new(location: nil))
207
+ )
208
+
209
+ typecheck = RBS::Test::TypeCheck.new(
210
+ self_class: receiver.class,
211
+ instance_class: instance_class,
212
+ class_class: class_class,
213
+ builder: builder,
214
+ sample_size: 100,
215
+ unchecked_classes: []
216
+ )
217
+ errors = typecheck.method_call(method, method_type, trace, errors: [])
218
+
219
+ assert_operator exception, :is_a?, ::Exception
220
+ assert_empty errors.map {|x| RBS::Test::Errors.to_string(x) }
221
+
222
+ method_defs = method_defs(method)
223
+ all_errors = method_defs.map {|t| typecheck.method_call(method, t.type, trace, errors: [], annotations: t.annotations) }
224
+ assert all_errors.all? {|es| es.size > 0 }, "Call trace unexpectedly matches one of method definitions:\n #{trace.inspect}\n #{method_defs.map(&:type).join(" | ")}"
225
+
226
+ result
227
+ end
228
+ end
229
+
230
+ def method_defs(method)
231
+ type, definition = target
232
+
233
+ case type
234
+ when Types::ClassInstance
235
+ subst = RBS::Substitution.build(definition.type_params, type.args)
236
+ definition.methods[method].defs.map do |type_def|
237
+ type_def.update(
238
+ type: type_def.type.sub(subst)
239
+ )
240
+ end
241
+ when Types::ClassSingleton
242
+ definition.methods[method].defs
243
+ else
244
+ raise
245
+ end
246
+ end
247
+
248
+ def method_types(method)
249
+ method_defs(method).map(&:type)
250
+ end
251
+
252
+ def allows_error(*errors)
253
+ yield
254
+ rescue *errors => exn
255
+ notify "Error allowed: #{exn.inspect}"
256
+ end
257
+
258
+ def assert_const_type(type, constant_name)
259
+ constant = Object.const_get(constant_name)
260
+
261
+ typecheck = RBS::Test::TypeCheck.new(
262
+ self_class: constant.class,
263
+ instance_class: instance_class,
264
+ class_class: class_class,
265
+ builder: builder,
266
+ sample_size: 100,
267
+ unchecked_classes: []
268
+ )
269
+
270
+ value_type =
271
+ case type
272
+ when String
273
+ RBS::Parser.parse_type(type, variables: []) || raise
274
+ else
275
+ type
276
+ end
277
+
278
+ assert typecheck.value(constant, value_type), "`#{constant_name}` (#{constant.inspect}) must be compatible with given type `#{value_type}`"
279
+
280
+ type_name = TypeName.parse(constant_name).absolute!
281
+ definition = env.constant_entry(type_name)
282
+ assert definition, "Cannot find RBS type definition of `#{constant_name}`"
283
+
284
+ case definition
285
+ when RBS::Environment::ClassEntry, RBS::Environment::ModuleEntry
286
+ definition_type = RBS::Types::ClassSingleton.new(name: type_name, location: nil)
287
+ when RBS::Environment::ClassAliasEntry, RBS::Environment::ModuleAliasEntry
288
+ type_name = env.normalize_type_name!(type_name)
289
+ definition_type = RBS::Types::ClassSingleton.new(name: type_name, location: nil)
290
+ when RBS::Environment::ConstantEntry
291
+ definition_type = definition.decl.type
292
+ end
293
+
294
+ assert definition_type, "Cannot find RBS entry for `#{constant_name}`"
295
+ definition_type or raise
296
+ assert typecheck.value(constant, definition_type), "`#{constant_name}` (#{constant.inspect}) must be compatible with RBS type definition `#{definition_type}`"
297
+ end
298
+
299
+ def assert_type(type, value)
300
+ typecheck = RBS::Test::TypeCheck.new(
301
+ self_class: value.class,
302
+ instance_class: _ = "No `instance` class allowed",
303
+ class_class: _ = "No `class` class allowed",
304
+ builder: builder,
305
+ sample_size: 100,
306
+ unchecked_classes: []
307
+ )
308
+
309
+ type =
310
+ case type
311
+ when String
312
+ RBS::Parser.parse_type(type, variables: []) or raise
313
+ else
314
+ type
315
+ end
316
+
317
+ assert typecheck.value(value, type), "`#{value.inspect}` must be compatible with given type `#{type}`"
318
+ end
319
+
320
+ def allow_non_simple_method_type()
321
+ begin
322
+ @allows_non_simple_method_type = true
323
+ yield
324
+ rescue
325
+ @allows_non_simple_method_type = false
326
+ end
327
+ end
328
+
329
+ def validate_simple_method_type(type)
330
+ return if @allows_non_simple_method_type
331
+
332
+ refute_predicate type, :has_self_type?, "`self` types is prohibited in method type: `#{type}`"
333
+ refute_predicate type, :has_classish_type?, "`instance` and `class` types is prohibited in method type: `#{type}`"
334
+ refute_predicate type, :with_nonreturn_void?, "`void` is only allowed at return type or generics parameters: `#{type}`"
335
+ end
336
+
337
+ def break_from_block(value = nil)
338
+ raise "Cannot break without `@break_tag`" unless @break_tag
339
+ throw @break_tag, value
340
+ end
341
+
342
+ def pass(message = nil)
343
+ assert true, message
344
+ end
345
+ end
346
+ end
347
+ end