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.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- metadata +532 -0
@@ -0,0 +1,154 @@
|
|
1
|
+
module RBS
|
2
|
+
module UnitTest
|
3
|
+
module Convertibles
|
4
|
+
# An object that doesn't have methods excepts `__send__` and `__id__`
|
5
|
+
#
|
6
|
+
# Other methods are `undef`ed.
|
7
|
+
#
|
8
|
+
class BlankSlate < BasicObject
|
9
|
+
# Add Object methods to `self`
|
10
|
+
#
|
11
|
+
def __with_object_methods: (*Symbol methods) -> self
|
12
|
+
end
|
13
|
+
|
14
|
+
# An object with `#to_io` method
|
15
|
+
class ToIO < BlankSlate
|
16
|
+
@io: untyped
|
17
|
+
|
18
|
+
def initialize: (?untyped io) -> void
|
19
|
+
|
20
|
+
def to_io: () -> untyped
|
21
|
+
end
|
22
|
+
|
23
|
+
# An object with `#to_i` method
|
24
|
+
class ToI < BlankSlate
|
25
|
+
@value: untyped
|
26
|
+
|
27
|
+
def initialize: (?untyped value) -> void
|
28
|
+
|
29
|
+
def to_i: () -> untyped
|
30
|
+
end
|
31
|
+
|
32
|
+
# An object with `#to_int` method
|
33
|
+
class ToInt < BlankSlate
|
34
|
+
@value: untyped
|
35
|
+
|
36
|
+
def initialize: (?untyped value) -> void
|
37
|
+
|
38
|
+
def to_int: () -> untyped
|
39
|
+
end
|
40
|
+
|
41
|
+
# An object with `#to_f` method
|
42
|
+
class ToF < BlankSlate
|
43
|
+
@value: untyped
|
44
|
+
|
45
|
+
def initialize: (?untyped value) -> void
|
46
|
+
|
47
|
+
def to_f: () -> untyped
|
48
|
+
end
|
49
|
+
|
50
|
+
# An object with `#to_r` method
|
51
|
+
class ToR < BlankSlate
|
52
|
+
@value: untyped
|
53
|
+
|
54
|
+
def initialize: (?untyped value) -> void
|
55
|
+
|
56
|
+
def to_r: () -> untyped
|
57
|
+
end
|
58
|
+
|
59
|
+
# An object with `#to_c` method
|
60
|
+
class ToC < BlankSlate
|
61
|
+
@value: untyped
|
62
|
+
|
63
|
+
def initialize: (?untyped value) -> void
|
64
|
+
|
65
|
+
def to_c: () -> untyped
|
66
|
+
end
|
67
|
+
|
68
|
+
# An object with `#to_str` method
|
69
|
+
class ToStr < BlankSlate
|
70
|
+
@value: untyped
|
71
|
+
|
72
|
+
def initialize: (?untyped value) -> void
|
73
|
+
|
74
|
+
def to_str: () -> untyped
|
75
|
+
end
|
76
|
+
|
77
|
+
# An object with `#to_s` method
|
78
|
+
class ToS < BlankSlate
|
79
|
+
@value: untyped
|
80
|
+
|
81
|
+
def initialize: (?untyped value) -> void
|
82
|
+
|
83
|
+
def to_s: () -> untyped
|
84
|
+
end
|
85
|
+
|
86
|
+
# An object with `#to_sym` method
|
87
|
+
class ToSym < BlankSlate
|
88
|
+
@value: untyped
|
89
|
+
|
90
|
+
def initialize: (?untyped value) -> void
|
91
|
+
|
92
|
+
def to_sym: () -> untyped
|
93
|
+
end
|
94
|
+
|
95
|
+
# An object with `#to_a` method
|
96
|
+
class ToA < BlankSlate
|
97
|
+
@args: untyped
|
98
|
+
|
99
|
+
def initialize: (*untyped args) -> void
|
100
|
+
|
101
|
+
def to_a: () -> Array[untyped]
|
102
|
+
end
|
103
|
+
|
104
|
+
# An object with `#to_ary` method
|
105
|
+
class ToArray < BlankSlate
|
106
|
+
@args: untyped
|
107
|
+
|
108
|
+
def initialize: (*untyped args) -> void
|
109
|
+
|
110
|
+
def to_ary: () -> Array[untyped]
|
111
|
+
end
|
112
|
+
|
113
|
+
# An object with `#to_hash` method
|
114
|
+
class ToHash < BlankSlate
|
115
|
+
@hash: untyped
|
116
|
+
|
117
|
+
def initialize: (?::Hash[untyped, untyped] hash) -> void
|
118
|
+
|
119
|
+
def to_hash: () -> Hash[untyped, untyped]
|
120
|
+
end
|
121
|
+
|
122
|
+
# An object with `#to_path` method
|
123
|
+
class ToPath < BlankSlate
|
124
|
+
@value: untyped
|
125
|
+
|
126
|
+
def initialize: (?untyped value) -> void
|
127
|
+
|
128
|
+
def to_path: () -> untyped
|
129
|
+
end
|
130
|
+
|
131
|
+
# An object with `#begin`, `#end`, and `#exclude_end`
|
132
|
+
class CustomRange < BlankSlate
|
133
|
+
@exclude_end: untyped
|
134
|
+
|
135
|
+
attr_reader begin: untyped
|
136
|
+
|
137
|
+
attr_reader end: untyped
|
138
|
+
|
139
|
+
def initialize: (untyped begin_, untyped end_, ?untyped exclude_end) -> void
|
140
|
+
|
141
|
+
def exclude_end?: () -> untyped
|
142
|
+
end
|
143
|
+
|
144
|
+
# An object with `#each` method
|
145
|
+
class Each < BlankSlate
|
146
|
+
@args: Array[untyped]
|
147
|
+
|
148
|
+
def initialize: (*untyped args) -> void
|
149
|
+
|
150
|
+
def each: () { (untyped) -> void } -> untyped
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module RBS
|
2
|
+
module UnitTest
|
3
|
+
module Spy
|
4
|
+
def self.wrap: [T] (untyped object, Symbol method_name) -> WrapSpy[T]
|
5
|
+
| [T, S] (untyped object, Symbol method_name) { (WrapSpy[T], T) -> S } -> S
|
6
|
+
|
7
|
+
class WrapSpy[T]
|
8
|
+
NO_RETURN: Object
|
9
|
+
|
10
|
+
attr_accessor callback: ^(Test::CallTrace) -> void
|
11
|
+
|
12
|
+
attr_reader object: T
|
13
|
+
|
14
|
+
attr_reader method_name: Symbol
|
15
|
+
|
16
|
+
def initialize: (object: T, method_name: Symbol) -> void
|
17
|
+
|
18
|
+
def wrapped_object: () -> untyped
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Proc
|
25
|
+
def ruby2_keywords: () -> self
|
26
|
+
end
|
27
|
+
|
28
|
+
class Module
|
29
|
+
def ruby2_keywords: (*Symbol) -> void
|
30
|
+
end
|
@@ -0,0 +1,196 @@
|
|
1
|
+
module RBS
|
2
|
+
module UnitTest
|
3
|
+
# TypeAssertions provides assertions to test RBS type definitions in unit test
|
4
|
+
#
|
5
|
+
# ```ruby
|
6
|
+
# class FooInstanceTest < Test::Unit::TestCase
|
7
|
+
# include RBS::UnitTest::TypeAssertions
|
8
|
+
#
|
9
|
+
# testing "::Foo"
|
10
|
+
#
|
11
|
+
# def test_foo
|
12
|
+
# assert_send_type(
|
13
|
+
# "(String) -> Integer",
|
14
|
+
# Foo.new, :foo, "hello"
|
15
|
+
# )
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
# ```
|
19
|
+
#
|
20
|
+
# The module provides four assertions:
|
21
|
+
#
|
22
|
+
# * `assert_send_type` to confirm if a method call has the expected method type
|
23
|
+
# * `refute_send_type` to confirm if a method call doesn't have the method type
|
24
|
+
# * `assert_const_type` to confirm if a constant has an expected type
|
25
|
+
# * `assert_type` to confirm a Ruby value has a RBS type
|
26
|
+
#
|
27
|
+
# See `.testing` and `.library` methods to set up RBS type testing.
|
28
|
+
#
|
29
|
+
module TypeAssertions : _BaseAssertions
|
30
|
+
type target_type = Types::ClassInstance | Types::ClassSingleton
|
31
|
+
|
32
|
+
interface _BaseAssertions
|
33
|
+
def assert: (untyped, ?String?) -> void
|
34
|
+
|
35
|
+
def refute: (untyped, ?String?) -> void
|
36
|
+
|
37
|
+
def assert_empty: (untyped, ?String?) -> void
|
38
|
+
|
39
|
+
def assert_operator: (untyped, Symbol, *untyped) -> void
|
40
|
+
|
41
|
+
def notify: (untyped) -> void
|
42
|
+
|
43
|
+
def assert_predicate: (untyped, Symbol, ?String?) -> void
|
44
|
+
|
45
|
+
def refute_predicate: (untyped, Symbol, ?String?) -> void
|
46
|
+
end
|
47
|
+
|
48
|
+
module ClassMethods
|
49
|
+
attr_reader target: [target_type, Definition]?
|
50
|
+
|
51
|
+
@libs: Array[String]
|
52
|
+
|
53
|
+
@env: Environment?
|
54
|
+
|
55
|
+
@@env_cache: Hash[Array[String], Environment]
|
56
|
+
|
57
|
+
# `testing` is to tell the framework which class is being tested
|
58
|
+
#
|
59
|
+
# ```ruby
|
60
|
+
# testing "::String"
|
61
|
+
# testing "::Array[Integer]"
|
62
|
+
#
|
63
|
+
# testing "singleton(::Integer)"
|
64
|
+
# ```
|
65
|
+
#
|
66
|
+
def testing: (String | target_type) -> void
|
67
|
+
|
68
|
+
# `library` is to load RBS type definition of dependencies
|
69
|
+
#
|
70
|
+
# The test or implementation already `require` dependencies, but the RBS type definition of the dependencies are also required for testing.
|
71
|
+
#
|
72
|
+
# ```ruby
|
73
|
+
# library "pathname", "securerandom"
|
74
|
+
# ```
|
75
|
+
#
|
76
|
+
def library: (*String) -> void
|
77
|
+
|
78
|
+
def env: () -> Environment
|
79
|
+
|
80
|
+
@builder: DefinitionBuilder
|
81
|
+
|
82
|
+
def builder: () -> DefinitionBuilder
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.included: (Module) -> void
|
86
|
+
|
87
|
+
def env: () -> Environment
|
88
|
+
|
89
|
+
def builder: () -> DefinitionBuilder
|
90
|
+
|
91
|
+
@targets: Array[[target_type, Definition]]
|
92
|
+
|
93
|
+
def targets: () -> Array[[target_type, Definition]]
|
94
|
+
|
95
|
+
def target: () -> [target_type, Definition]
|
96
|
+
|
97
|
+
def testing: (String | target_type) ?{ () -> void } -> void
|
98
|
+
|
99
|
+
# The class object that is associated to the `instance` type of the testing type
|
100
|
+
#
|
101
|
+
def instance_class: () -> Class
|
102
|
+
|
103
|
+
# The singleton class object that is associated to the `class` type of the testing type
|
104
|
+
#
|
105
|
+
def class_class: () -> Class
|
106
|
+
|
107
|
+
def method_defs: (Symbol) -> Array[Definition::Method::TypeDef]
|
108
|
+
|
109
|
+
def method_types: (Symbol) -> Array[MethodType]
|
110
|
+
|
111
|
+
def allows_error: (*Exception) { () -> void } -> void
|
112
|
+
|
113
|
+
# Calls a method `method_name` and validates if it's compatible with RBS type definition
|
114
|
+
#
|
115
|
+
# 1. It calls `method_name` with `receiver` passing `args` and given block,
|
116
|
+
# 2. Validates if it's compatible with given `method_type`, and
|
117
|
+
# 3. Validates if it's also compatible with one of the overloads defined in RBS type definition
|
118
|
+
#
|
119
|
+
# ```ruby
|
120
|
+
# assert_send_type(
|
121
|
+
# "(::Integer) -> ::Integer",
|
122
|
+
# [], :sum, 8
|
123
|
+
# )
|
124
|
+
# ```
|
125
|
+
#
|
126
|
+
# To test methods that takes a block, pass a block to `assert_send_type`.
|
127
|
+
# We recommend using `&proc { ... }` syntax for textual representation and prevent from using `break` from the block.
|
128
|
+
#
|
129
|
+
# ```ruby
|
130
|
+
# assert_send_type(
|
131
|
+
# "() { () -> void } -> void",
|
132
|
+
# self, :loop, &proc { break_from_block }
|
133
|
+
# )
|
134
|
+
# ```
|
135
|
+
#
|
136
|
+
# Exiting from the block using `break` and `return` skips assertions.
|
137
|
+
# Use `break_from_block` instead.
|
138
|
+
#
|
139
|
+
# `method_type` must be _simple_.
|
140
|
+
# It raises an exception if it's not _simple_.
|
141
|
+
# When you really need _non-simple_ `method_type`, wrap the calls inside `allow_non_simple_method_type`.
|
142
|
+
# See `docs/stdlib.md` for the details.
|
143
|
+
#
|
144
|
+
def assert_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
|
145
|
+
|
146
|
+
# Calls a method `method_name` and validates if it's **not** compatible with RBS type definition
|
147
|
+
#
|
148
|
+
# 1. It calls `method_name` with `receiver` passing `args` and given block,
|
149
|
+
# 2. Validates if it's compatible with given `method_type`, and
|
150
|
+
# 3. Validates if it's not compatible with **none** of the overloads defined in RBS type definition
|
151
|
+
#
|
152
|
+
# See `assert_send_type` for the details.
|
153
|
+
#
|
154
|
+
def refute_send_type: (String | MethodType method_type, untyped receiver, Symbol method_name, *untyped args) ?{ () -> untyped } -> void
|
155
|
+
|
156
|
+
# Asserts if the constant `constant_name` has `constant_type`, and the RBS definition has compatible type
|
157
|
+
#
|
158
|
+
# ```ruby
|
159
|
+
# assert_const_type("Array[String]", "::Foo::Bar")
|
160
|
+
# ```
|
161
|
+
#
|
162
|
+
# The assertion above succeeds if `::Foo::Bar` is `["foo"]` and RBS contains `::Foo::Bar: [untyped]`.
|
163
|
+
# It fails if `::Foo::Bar` is `[2]`, or the RBS definition is `::Foo::Bar: String`.
|
164
|
+
#
|
165
|
+
def assert_const_type: (String | Types::t constant_type, String constant_name) -> void
|
166
|
+
|
167
|
+
# Asserts if given `value` has a type of `value_type`
|
168
|
+
#
|
169
|
+
def assert_type: (String | Types::t value_type, untyped value) -> void
|
170
|
+
|
171
|
+
# Allow non _simple-type_ method types given to `assert_send_type` and `refute_send_type`
|
172
|
+
#
|
173
|
+
# ```ruby
|
174
|
+
# allow_non_simple_method_type do
|
175
|
+
# assert_send_type("() -> self", ...)
|
176
|
+
# end
|
177
|
+
# ```
|
178
|
+
#
|
179
|
+
def allow_non_simple_method_type: () { () -> void } -> void
|
180
|
+
|
181
|
+
@allows_non_simple_method_type: boolish
|
182
|
+
|
183
|
+
def validate_simple_method_type: (MethodType) -> void
|
184
|
+
|
185
|
+
# Break from `assert_send_type` or `refute_send_type`
|
186
|
+
#
|
187
|
+
def break_from_block: (?untyped value) -> void
|
188
|
+
|
189
|
+
@break_tag: untyped
|
190
|
+
|
191
|
+
def send_setup: [T] (String | RBS::MethodType method_type, untyped receiver, Symbol method_name, Array[untyped] args, Proc?) { (RBS::MethodType, Test::CallTrace, untyped, Exception?) -> T } -> T
|
192
|
+
|
193
|
+
def pass: (?String? message) -> void
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,136 @@
|
|
1
|
+
module RBS
|
2
|
+
module UnitTest
|
3
|
+
# WithAliases module provides `with_***` methods that helps writing tests which passes convertible objects
|
4
|
+
#
|
5
|
+
# ```ruby
|
6
|
+
# include WithAliases
|
7
|
+
#
|
8
|
+
# with_int do |i|
|
9
|
+
# # Yields Integer and RBS::UnitTest::Convertibles::ToInt
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# with_string.and_nil do |s|
|
13
|
+
# # Yields String, RBS::UnitTest::Convertibles::ToStr, and nil
|
14
|
+
# end
|
15
|
+
# ```
|
16
|
+
#
|
17
|
+
module WithAliases
|
18
|
+
include Convertibles
|
19
|
+
|
20
|
+
class WithEnum[T]
|
21
|
+
@enum: _Each[T]
|
22
|
+
|
23
|
+
include Enumerable[T]
|
24
|
+
|
25
|
+
def initialize: (_Each[T] enum) -> void
|
26
|
+
|
27
|
+
def each: () { (T) -> void } -> void
|
28
|
+
|
29
|
+
# Yield `nil` in addition to original `enum` elements
|
30
|
+
#
|
31
|
+
# ```ruby
|
32
|
+
# e = WithEnum.new([1, 2])
|
33
|
+
# e.and_nil do |i|
|
34
|
+
# pp i # => 1, 2, and nil
|
35
|
+
# end
|
36
|
+
# ```
|
37
|
+
#
|
38
|
+
def and_nil: () { (T?) -> void } -> void
|
39
|
+
| () -> WithEnum[T?]
|
40
|
+
|
41
|
+
# Skip yielding objects in `cases`
|
42
|
+
#
|
43
|
+
# ```ruby
|
44
|
+
# e = WithEnum.new([1, 2, 3])
|
45
|
+
# e.but(2) do |i|
|
46
|
+
# pp i # => 1 and 3
|
47
|
+
# end
|
48
|
+
# ```
|
49
|
+
#
|
50
|
+
def but: (*T cases) { (T) -> void } -> void
|
51
|
+
| (*T cases) -> WithEnum[T]
|
52
|
+
|
53
|
+
# Yield objects in `args` in addition to original `enum` elements
|
54
|
+
#
|
55
|
+
# ```ruby
|
56
|
+
# e = WithEnum.new([1, 2])
|
57
|
+
# e.and(3) do |i|
|
58
|
+
# pp i # => 1, 2, and 3
|
59
|
+
# end
|
60
|
+
# ```
|
61
|
+
#
|
62
|
+
def and: [S] (*S args) { (T | S) -> void } -> void
|
63
|
+
| [S] (*S args) -> WithEnum[T | S]
|
64
|
+
end
|
65
|
+
|
66
|
+
# Yields `args` objects
|
67
|
+
#
|
68
|
+
def with: (*untyped args) -> void
|
69
|
+
| (*untyped args) { (untyped) -> void } -> void
|
70
|
+
|
71
|
+
# Yields `::int` objects
|
72
|
+
#
|
73
|
+
def with_int: (?Integer value) { (int) -> void } -> void
|
74
|
+
| (?Integer value) -> WithEnum[int]
|
75
|
+
|
76
|
+
# Yields `::float` objects
|
77
|
+
#
|
78
|
+
def with_float: (?Float value) { (float) -> void } -> void
|
79
|
+
| (?Float value) -> WithEnum[float]
|
80
|
+
|
81
|
+
# Yields `::string` objects
|
82
|
+
#
|
83
|
+
def with_string: (?String value) { (string) -> void } -> void
|
84
|
+
| (?String value) -> WithEnum[string]
|
85
|
+
|
86
|
+
# Yields `::array` objects
|
87
|
+
#
|
88
|
+
def with_array: [T] (*T elements) { (array[T]) -> void } -> void
|
89
|
+
| [T] (*T elements) -> WithEnum[array[T]]
|
90
|
+
|
91
|
+
# Yields `::hash` objects
|
92
|
+
#
|
93
|
+
def with_hash: [K, V] (?Hash[K, V] hash) { (hash[K, V]) -> void } -> void
|
94
|
+
| [K, V] (?Hash[K, V] hash) -> WithEnum[hash[K, V]]
|
95
|
+
|
96
|
+
# Yields `::io` objects
|
97
|
+
#
|
98
|
+
def with_io: (?untyped io) { (io) -> void } -> void
|
99
|
+
| (?untyped io) -> WithEnum[io]
|
100
|
+
|
101
|
+
# Yields `::path` objects
|
102
|
+
#
|
103
|
+
def with_path: (?String path) { (path) -> void } -> void
|
104
|
+
| (?String path) -> WithEnum[path]
|
105
|
+
|
106
|
+
# Yields `::encoding` objects
|
107
|
+
#
|
108
|
+
def with_encoding: (?untyped encoding) { (encoding) -> void } -> void
|
109
|
+
| (?untyped encoding) -> WithEnum[encoding]
|
110
|
+
|
111
|
+
# Yields `::interned` objects
|
112
|
+
#
|
113
|
+
def with_interned: (?Symbol value) { (interned) -> void } -> void
|
114
|
+
| (?Symbol value) -> WithEnum[interned]
|
115
|
+
|
116
|
+
# Yields `::bool` objects
|
117
|
+
#
|
118
|
+
def with_bool: () { (bool) -> void } -> void
|
119
|
+
| () -> WithEnum[bool]
|
120
|
+
|
121
|
+
# Yields `::boolish` objects
|
122
|
+
#
|
123
|
+
def with_boolish: () { (boolish) -> void } -> void
|
124
|
+
| () -> WithEnum[boolish]
|
125
|
+
|
126
|
+
# Yields `::untyped` objects
|
127
|
+
#
|
128
|
+
def with_untyped: () { (untyped) -> void } -> void
|
129
|
+
| () -> WithEnum[untyped]
|
130
|
+
|
131
|
+
# Yields `::range` objects
|
132
|
+
#
|
133
|
+
def with_range: (WithEnum[untyped] start, WithEnum[untyped] stop, ?bool exclude_end) { (range[untyped]) -> void } -> void
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/sig/use_map.rbs
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module RBS
|
2
|
+
class Environment
|
3
|
+
# ```rb
|
4
|
+
# map = UseMap.build(environment)
|
5
|
+
#
|
6
|
+
# map.resolve?(TypeName.parse("TN")) # => nil or resolved type name
|
7
|
+
# ```
|
8
|
+
#
|
9
|
+
class UseMap
|
10
|
+
class Table
|
11
|
+
attr_reader known_types: Set[TypeName]
|
12
|
+
|
13
|
+
attr_reader children: Hash[Namespace, Set[TypeName]]
|
14
|
+
|
15
|
+
def initialize: () -> void
|
16
|
+
|
17
|
+
def compute_children: () -> self
|
18
|
+
end
|
19
|
+
|
20
|
+
attr_reader use_dirs: Array[AST::Directives::Use]
|
21
|
+
|
22
|
+
@map: Hash[Symbol, TypeName]
|
23
|
+
|
24
|
+
@table: Table
|
25
|
+
|
26
|
+
def initialize: (table: Table) -> void
|
27
|
+
|
28
|
+
def resolve?: (TypeName) -> TypeName?
|
29
|
+
|
30
|
+
def resolve: (TypeName) -> TypeName
|
31
|
+
|
32
|
+
def build_map: (AST::Directives::Use::clause) -> self
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/sig/util.rbs
ADDED
data/sig/validator.rbs
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
module RBS
|
2
|
+
class Validator
|
3
|
+
attr_reader env: Environment
|
4
|
+
|
5
|
+
attr_reader resolver: Resolver::TypeNameResolver?
|
6
|
+
|
7
|
+
attr_reader definition_builder: DefinitionBuilder
|
8
|
+
|
9
|
+
attr_reader type_alias_dependency: TypeAliasDependency
|
10
|
+
|
11
|
+
attr_reader type_alias_regularity: TypeAliasRegularity
|
12
|
+
|
13
|
+
def initialize: (env: Environment, ?resolver: Resolver::TypeNameResolver?) -> void
|
14
|
+
|
15
|
+
# Validates the presence of type names and type application arity match.
|
16
|
+
#
|
17
|
+
def validate_type: (Types::t, context: Resolver::context) -> void
|
18
|
+
|
19
|
+
# Validates type alias definition:
|
20
|
+
#
|
21
|
+
# - There is no circular definition between aliases
|
22
|
+
# - The type alias is _regular_
|
23
|
+
# - The generics type parameter variance annotation is consistent with respect to their usage
|
24
|
+
# - There is no circular dependencies between the generics type parameter bounds
|
25
|
+
#
|
26
|
+
# It yields the rhs type if block is given, so that you can validate the rhs type.
|
27
|
+
#
|
28
|
+
def validate_type_alias: (entry: Environment::TypeAliasEntry) ?{ (Types::t rhs_type) -> void } -> void
|
29
|
+
|
30
|
+
# Validates the type parameters in generic methods.
|
31
|
+
#
|
32
|
+
def validate_method_definition: (AST::Members::MethodDefinition, type_name: TypeName) -> void
|
33
|
+
|
34
|
+
# Validates the type parameters if there is no circular dependencies between the bounds.
|
35
|
+
#
|
36
|
+
# ```rbs
|
37
|
+
# [X, Y] # OK
|
38
|
+
# [X, Y < _Foo[X]] # OK
|
39
|
+
# [X < _Foo[Y], Y] # OK
|
40
|
+
# [X < _Foo[Y], Y < _Foo[X]] # Error
|
41
|
+
# ```
|
42
|
+
#
|
43
|
+
def validate_type_params: (Array[AST::TypeParam] params, type_name: TypeName, ?method_name: Symbol?, location: Location[untyped, untyped]?) -> void
|
44
|
+
|
45
|
+
# Validates class alias declaration
|
46
|
+
#
|
47
|
+
# - The right hand side can be normalized
|
48
|
+
# - No mixing alias declaration between class and modules
|
49
|
+
#
|
50
|
+
def validate_class_alias: (entry: Environment::ClassAliasEntry | Environment::ModuleAliasEntry) -> void
|
51
|
+
|
52
|
+
# Validates instance/class-instance/class variables.
|
53
|
+
#
|
54
|
+
def validate_variable: (AST::Members::Var) -> void
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
# Resolves relative type names to absolute type names in given context.
|
59
|
+
# Yields the type when the type name resolution using `#resolver` fails.
|
60
|
+
#
|
61
|
+
def absolute_type: (Types::t, context: Resolver::context) ?{ (Types::t) -> TypeName } -> Types::t
|
62
|
+
end
|
63
|
+
end
|