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
data/core/builtin.rbs
ADDED
@@ -0,0 +1,277 @@
|
|
1
|
+
# A type that's convertible to a `Complex`.
|
2
|
+
#
|
3
|
+
interface _ToC
|
4
|
+
# Convert `self` to a `Complex`.
|
5
|
+
#
|
6
|
+
def to_c: () -> Complex
|
7
|
+
end
|
8
|
+
|
9
|
+
# A type that's convertible to a `Rational`.
|
10
|
+
#
|
11
|
+
interface _ToR
|
12
|
+
# Convert `self` to a `Complex`.
|
13
|
+
#
|
14
|
+
def to_r: () -> Rational
|
15
|
+
end
|
16
|
+
|
17
|
+
# A type that's convertible to a `Float`.
|
18
|
+
#
|
19
|
+
interface _ToF
|
20
|
+
# Convert `self` to a `Float`.
|
21
|
+
#
|
22
|
+
def to_f: () -> Float
|
23
|
+
end
|
24
|
+
|
25
|
+
# A type that's convertible to an `Integer`.
|
26
|
+
#
|
27
|
+
interface _ToI
|
28
|
+
# Convert `self` to an `Integer`.
|
29
|
+
#
|
30
|
+
def to_i: () -> Integer
|
31
|
+
end
|
32
|
+
|
33
|
+
# A type that's implicitly convertible to an `Integer`.
|
34
|
+
#
|
35
|
+
# Implicit `.to_int` conversions are usable all over Ruby's stdlib, such as `Kernel#exit`,
|
36
|
+
# `File#chmod`, and `Array#take`. Virtually anywhere that accepts an `Integer` will also accept
|
37
|
+
# something that defines `.to_int`.
|
38
|
+
#
|
39
|
+
# Interestingly, types that define `.to_int` aren't immediately converted in math operations on
|
40
|
+
# `Integers` (eg `1 + defines_to_int`): Instead, `.coerce` must be defined on the right-hand-side
|
41
|
+
# value.
|
42
|
+
#
|
43
|
+
interface _ToInt
|
44
|
+
# Converts `self` to an `Integer`.
|
45
|
+
#
|
46
|
+
def to_int: () -> Integer
|
47
|
+
end
|
48
|
+
|
49
|
+
# A type that's convertible to a `String`.
|
50
|
+
#
|
51
|
+
interface _ToS
|
52
|
+
# Converts `self` to a `String`.
|
53
|
+
#
|
54
|
+
def to_s: () -> String
|
55
|
+
end
|
56
|
+
|
57
|
+
# A type that's implicitly convertible to a `String`.
|
58
|
+
#
|
59
|
+
# Implicit `.to_str` conversions are usable all over Ruby's stdlib, such as `Kernel#abort`,
|
60
|
+
# `String#+`, and `Object#send`. Virtually anywhere that accepts a `String` will also accept
|
61
|
+
# something that defines `.to_Str`.
|
62
|
+
#
|
63
|
+
# Types that define `.to_str` are also usable wherever paths are expected (See the `path` type
|
64
|
+
# alias).
|
65
|
+
#
|
66
|
+
interface _ToStr
|
67
|
+
# Converts `self` to a `String`.
|
68
|
+
#
|
69
|
+
def to_str: () -> String
|
70
|
+
end
|
71
|
+
|
72
|
+
# A type that's explicitly convertible to a `String`.
|
73
|
+
#
|
74
|
+
# Interestingly enough, most methods that accept `Symbol` in the standard library _do not_ accept
|
75
|
+
# an object that defines `.to_sym` (unlike `String` and `.to_str`).
|
76
|
+
#
|
77
|
+
# There are only two places that `Symbol | _ToSym`, and they're quite obscure:
|
78
|
+
# - `Kernel#warn`'s `category:` optional parameter. (Oddly enough, not for `Warning.warn`, though.)
|
79
|
+
# - `TracePoint#trace`'s `event`s parameter.
|
80
|
+
# Additionally, the `rb_iseq_load` C function, only accessible through `Fiddle`, uses `.to_sym`
|
81
|
+
# internally.
|
82
|
+
#
|
83
|
+
interface _ToSym
|
84
|
+
# Converts `self` to a `Symbol`.
|
85
|
+
#
|
86
|
+
def to_sym: () -> Symbol
|
87
|
+
end
|
88
|
+
|
89
|
+
# A type that's convertible to a `Hash`.
|
90
|
+
#
|
91
|
+
interface _ToH[K, V]
|
92
|
+
# Converts `self` to a `Hash`.
|
93
|
+
#
|
94
|
+
def to_h: () -> Hash[K, V]
|
95
|
+
end
|
96
|
+
|
97
|
+
# A type that's implicitly convertible to a `Hash`.
|
98
|
+
#
|
99
|
+
# Implicit `.to_hash` conversions are usable infrequently in Ruby's stdlib, such as `Io#popen`,
|
100
|
+
# `Kernel#sprintf`, and `Enumerable#tally`. It's also used with the `**` "splatsplat" operator.
|
101
|
+
#
|
102
|
+
interface _ToHash[K, V]
|
103
|
+
# Converts `self` to a `Hash`.
|
104
|
+
#
|
105
|
+
def to_hash: () -> Hash[K, V]
|
106
|
+
end
|
107
|
+
|
108
|
+
# A type that's convertible to an `Array`.
|
109
|
+
#
|
110
|
+
interface _ToA[T]
|
111
|
+
# Converts `self` to an `Array`.
|
112
|
+
#
|
113
|
+
def to_a: () -> Array[T]
|
114
|
+
end
|
115
|
+
|
116
|
+
# A type that's implicitly convertible to an `Array`.
|
117
|
+
#
|
118
|
+
# Implicit `.to_ary` conversions are usable semi-frequently in Ruby's stdlib, such as `Dir#glob`,
|
119
|
+
# `Regex#union`, and `Class#private`. It's also used with the `*` "splat" operator.
|
120
|
+
#
|
121
|
+
interface _ToAry[T]
|
122
|
+
# Converts `self` to an `Array`.
|
123
|
+
#
|
124
|
+
def to_ary: () -> Array[T]
|
125
|
+
end
|
126
|
+
|
127
|
+
# A type that's convertible to a `Proc`.
|
128
|
+
#
|
129
|
+
# This is implicitly called when the `&` "block-passing" operator is used, in addition to a handful
|
130
|
+
# of other places, such as `Hash#default_proc=`.
|
131
|
+
#
|
132
|
+
interface _ToProc
|
133
|
+
# Converts `self` to a `Proc.`
|
134
|
+
#
|
135
|
+
def to_proc: () -> Proc
|
136
|
+
end
|
137
|
+
|
138
|
+
# A type that's convertible to a `String` that contains a filepath.
|
139
|
+
#
|
140
|
+
# Implicit `.to_path` conversions are usable throughout Ruby's stdlib, whenever a file path is
|
141
|
+
# expected, such as `Dir#mkdir`, `File#open`, and `UNIXSocket#read`. These functions, however, also
|
142
|
+
# accept types that define `.to_str`. See the `path` type alias.
|
143
|
+
#
|
144
|
+
interface _ToPath
|
145
|
+
# Converts `self` to a `String` containing a filepath.
|
146
|
+
#
|
147
|
+
def to_path: () -> String
|
148
|
+
end
|
149
|
+
|
150
|
+
# A type that's convertible to an `IO`.
|
151
|
+
#
|
152
|
+
# Implicit `.to_io` conversions are usuable infrequently in Ruby's stdlib, such as `IO#reopen`,
|
153
|
+
# `File.exist?`, and `Kernel#select`.
|
154
|
+
#
|
155
|
+
interface _ToIO
|
156
|
+
# Converts `self` to an `IO` object.
|
157
|
+
#
|
158
|
+
def to_io: () -> IO
|
159
|
+
end
|
160
|
+
|
161
|
+
# A type that defines the `.inspect` method.
|
162
|
+
#
|
163
|
+
# Since `Object` defines `.inspect`, nearly every object in Ruby has it defined: Only those that
|
164
|
+
# derive from `BasicObject`, or `undef inspect` won't have it. It's used in a few locations,
|
165
|
+
# such as `Kernel#p` and `Array#join`.
|
166
|
+
#
|
167
|
+
interface _Inspect
|
168
|
+
# Returns a debugging representation of `self`.
|
169
|
+
#
|
170
|
+
def inspect: () -> String
|
171
|
+
end
|
172
|
+
|
173
|
+
interface _Each[out E, out R = void]
|
174
|
+
def each: () { (E) -> void } -> R
|
175
|
+
end
|
176
|
+
|
177
|
+
interface _EachEntry[out E]
|
178
|
+
def each_entry: () { (E) -> void } -> self
|
179
|
+
end
|
180
|
+
|
181
|
+
interface _Reader
|
182
|
+
def read: (?int? length, ?string outbuf) -> String?
|
183
|
+
end
|
184
|
+
|
185
|
+
interface _ReaderPartial
|
186
|
+
def readpartial: (int maxlen, ?string outbuf) -> String
|
187
|
+
end
|
188
|
+
|
189
|
+
interface _Writer
|
190
|
+
# Writes the +data+ string. Returns the number of bytes written
|
191
|
+
#
|
192
|
+
def write: (*_ToS data) -> Integer
|
193
|
+
end
|
194
|
+
|
195
|
+
interface _Rewindable
|
196
|
+
# Positions the stream to the beginning of input, resetting `lineno` to zero.
|
197
|
+
#
|
198
|
+
def rewind: () -> Integer
|
199
|
+
end
|
200
|
+
|
201
|
+
# A type that's usable like a `Range[T]`.
|
202
|
+
#
|
203
|
+
# Implicit `_Range` usage is usable frequently in ruby's stdlib, such as `Comparable#clamp`,
|
204
|
+
# `String#[]`, and `Kernel#rand`.
|
205
|
+
#
|
206
|
+
interface _Range[T]
|
207
|
+
# The beginning value, `nil` if there is no beginning.
|
208
|
+
def begin: () -> T?
|
209
|
+
|
210
|
+
# The ending value, `nil` if there is no ending.
|
211
|
+
def end: () -> T?
|
212
|
+
|
213
|
+
# Whether or not to include the end in the range.
|
214
|
+
def exclude_end?: () -> bool
|
215
|
+
end
|
216
|
+
|
217
|
+
interface _Exception
|
218
|
+
def exception: () -> Exception
|
219
|
+
| (String arg0) -> Exception
|
220
|
+
end
|
221
|
+
|
222
|
+
# Represents an `Integer`, or a type convertible to it (via `.to_int`).
|
223
|
+
#
|
224
|
+
type int = Integer | _ToInt
|
225
|
+
|
226
|
+
# Represents a `Float`, or a type convertible to it (via `.to_f`).
|
227
|
+
#
|
228
|
+
type float = Float | _ToF
|
229
|
+
|
230
|
+
# Represents a `Range[T]`, or a type that acts like it (via `.begin`, `.end`, and `.exclude_end?`).
|
231
|
+
#
|
232
|
+
type range[T] = Range[T] | _Range[T]
|
233
|
+
|
234
|
+
# Represents a `String`, or a type convertible to it (via `.to_str`).
|
235
|
+
#
|
236
|
+
type string = String | _ToStr
|
237
|
+
|
238
|
+
# Represents an `Array[T]`, or a type convertible to it (via `.to_ary`).
|
239
|
+
#
|
240
|
+
type array[T] = Array[T] | _ToAry[T]
|
241
|
+
|
242
|
+
# Represents a `Hash[K, V]`, or a type convertible to it (via `.to_hash`).
|
243
|
+
#
|
244
|
+
type hash[K, V] = Hash[K, V] | _ToHash[K, V]
|
245
|
+
|
246
|
+
# Represents an `IO`, or a type convertible to it (via `.to_io`).
|
247
|
+
#
|
248
|
+
type io = IO | _ToIO
|
249
|
+
|
250
|
+
# A filesystem path: Either something that defines `.to_path`, or a `String` (or a type that is
|
251
|
+
# convertible to a string via `.to_str`).
|
252
|
+
#
|
253
|
+
# If a type defines both `.to_path` and `.to_str`, the `.to_path` function is called.
|
254
|
+
#
|
255
|
+
type path = string | _ToPath
|
256
|
+
|
257
|
+
# An `Encoding`, or a `String` (or type that defines `.to_str`) that represents it.
|
258
|
+
#
|
259
|
+
type encoding = Encoding | string
|
260
|
+
|
261
|
+
# A real number, ie not a `Complex`.
|
262
|
+
#
|
263
|
+
type real = Integer | Float | Rational
|
264
|
+
|
265
|
+
# Represents a `Symbol` or a `string`.
|
266
|
+
#
|
267
|
+
# A lot of builtin functions accept either a Symbol, a String, or something which has `.to_str`
|
268
|
+
# defined.
|
269
|
+
#
|
270
|
+
type interned = Symbol | string
|
271
|
+
|
272
|
+
# `boolish` is a type for documentation.
|
273
|
+
# It means the value of this type is only for testing a condition.
|
274
|
+
# Unlike `bool` type, it doesn't require the value is one of `true` or `false`.
|
275
|
+
# Any Ruby object can have `boolish` type.
|
276
|
+
#
|
277
|
+
type boolish = top
|
data/core/class.rbs
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
# <!-- rdoc-file=object.c -->
|
2
|
+
# Classes in Ruby are first-class objects---each is an instance of class Class.
|
3
|
+
#
|
4
|
+
# Typically, you create a new class by using:
|
5
|
+
#
|
6
|
+
# class Name
|
7
|
+
# # some code describing the class behavior
|
8
|
+
# end
|
9
|
+
#
|
10
|
+
# When a new class is created, an object of type Class is initialized and
|
11
|
+
# assigned to a global constant (Name in this case).
|
12
|
+
#
|
13
|
+
# When `Name.new` is called to create a new object, the #new method in Class is
|
14
|
+
# run by default. This can be demonstrated by overriding #new in Class:
|
15
|
+
#
|
16
|
+
# class Class
|
17
|
+
# alias old_new new
|
18
|
+
# def new(*args)
|
19
|
+
# print "Creating a new ", self.name, "\n"
|
20
|
+
# old_new(*args)
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# class Name
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# n = Name.new
|
28
|
+
#
|
29
|
+
# *produces:*
|
30
|
+
#
|
31
|
+
# Creating a new Name
|
32
|
+
#
|
33
|
+
# Classes, modules, and objects are interrelated. In the diagram that follows,
|
34
|
+
# the vertical arrows represent inheritance, and the parentheses metaclasses.
|
35
|
+
# All metaclasses are instances of the class `Class'.
|
36
|
+
# +---------+ +-...
|
37
|
+
# | | |
|
38
|
+
# BasicObject-----|-->(BasicObject)-------|-...
|
39
|
+
# ^ | ^ |
|
40
|
+
# | | | |
|
41
|
+
# Object---------|----->(Object)---------|-...
|
42
|
+
# ^ | ^ |
|
43
|
+
# | | | |
|
44
|
+
# +-------+ | +--------+ |
|
45
|
+
# | | | | | |
|
46
|
+
# | Module-|---------|--->(Module)-|-...
|
47
|
+
# | ^ | | ^ |
|
48
|
+
# | | | | | |
|
49
|
+
# | Class-|---------|---->(Class)-|-...
|
50
|
+
# | ^ | | ^ |
|
51
|
+
# | +---+ | +----+
|
52
|
+
# | |
|
53
|
+
# obj--->OtherClass---------->(OtherClass)-----------...
|
54
|
+
#
|
55
|
+
%a{annotate:rdoc:source:from=object.c}
|
56
|
+
class Class < Module
|
57
|
+
# <!--
|
58
|
+
# rdoc-file=object.c
|
59
|
+
# - Class.new(super_class=Object) -> a_class
|
60
|
+
# - Class.new(super_class=Object) { |mod| ... } -> a_class
|
61
|
+
# -->
|
62
|
+
# Creates a new anonymous (unnamed) class with the given superclass (or Object
|
63
|
+
# if no parameter is given). You can give a class a name by assigning the class
|
64
|
+
# object to a constant.
|
65
|
+
#
|
66
|
+
# If a block is given, it is passed the class object, and the block is evaluated
|
67
|
+
# in the context of this class like #class_eval.
|
68
|
+
#
|
69
|
+
# fred = Class.new do
|
70
|
+
# def meth1
|
71
|
+
# "hello"
|
72
|
+
# end
|
73
|
+
# def meth2
|
74
|
+
# "bye"
|
75
|
+
# end
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# a = fred.new #=> #<#<Class:0x100381890>:0x100376b98>
|
79
|
+
# a.meth1 #=> "hello"
|
80
|
+
# a.meth2 #=> "bye"
|
81
|
+
#
|
82
|
+
# Assign the class to a constant (name starting uppercase) if you want to treat
|
83
|
+
# it like a regular class.
|
84
|
+
#
|
85
|
+
def initialize: (?Class superclass) ?{ (Class newclass) -> void } -> void
|
86
|
+
|
87
|
+
# <!--
|
88
|
+
# rdoc-file=object.c
|
89
|
+
# - class.allocate() -> obj
|
90
|
+
# -->
|
91
|
+
# Allocates space for a new object of *class*'s class and does not call
|
92
|
+
# initialize on the new instance. The returned object must be an instance of
|
93
|
+
# *class*.
|
94
|
+
#
|
95
|
+
# klass = Class.new do
|
96
|
+
# def initialize(*args)
|
97
|
+
# @initialized = true
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# def initialized?
|
101
|
+
# @initialized || false
|
102
|
+
# end
|
103
|
+
# end
|
104
|
+
#
|
105
|
+
# klass.allocate.initialized? #=> false
|
106
|
+
#
|
107
|
+
def allocate: () -> untyped
|
108
|
+
|
109
|
+
# <!--
|
110
|
+
# rdoc-file=object.c
|
111
|
+
# - attached_object -> object
|
112
|
+
# -->
|
113
|
+
# Returns the object for which the receiver is the singleton class.
|
114
|
+
#
|
115
|
+
# Raises an TypeError if the class is not a singleton class.
|
116
|
+
#
|
117
|
+
# class Foo; end
|
118
|
+
#
|
119
|
+
# Foo.singleton_class.attached_object #=> Foo
|
120
|
+
# Foo.attached_object #=> TypeError: `Foo' is not a singleton class
|
121
|
+
# Foo.new.singleton_class.attached_object #=> #<Foo:0x000000010491a370>
|
122
|
+
# TrueClass.attached_object #=> TypeError: `TrueClass' is not a singleton class
|
123
|
+
# NilClass.attached_object #=> TypeError: `NilClass' is not a singleton class
|
124
|
+
#
|
125
|
+
def attached_object: () -> untyped
|
126
|
+
|
127
|
+
# <!--
|
128
|
+
# rdoc-file=object.c
|
129
|
+
# - inherited(subclass)
|
130
|
+
# -->
|
131
|
+
# Callback invoked whenever a subclass of the current class is created.
|
132
|
+
#
|
133
|
+
# Example:
|
134
|
+
#
|
135
|
+
# class Foo
|
136
|
+
# def self.inherited(subclass)
|
137
|
+
# puts "New subclass: #{subclass}"
|
138
|
+
# end
|
139
|
+
# end
|
140
|
+
#
|
141
|
+
# class Bar < Foo
|
142
|
+
# end
|
143
|
+
#
|
144
|
+
# class Baz < Bar
|
145
|
+
# end
|
146
|
+
#
|
147
|
+
# *produces:*
|
148
|
+
#
|
149
|
+
# New subclass: Bar
|
150
|
+
# New subclass: Baz
|
151
|
+
#
|
152
|
+
def inherited: (Class arg0) -> untyped
|
153
|
+
|
154
|
+
# <!--
|
155
|
+
# rdoc-file=object.c
|
156
|
+
# - class.new(args, ...) -> obj
|
157
|
+
# -->
|
158
|
+
# Calls #allocate to create a new object of *class*'s class, then invokes that
|
159
|
+
# object's #initialize method, passing it *args*. This is the method that ends
|
160
|
+
# up getting called whenever an object is constructed using `.new`.
|
161
|
+
#
|
162
|
+
def new: () -> untyped
|
163
|
+
|
164
|
+
# <!--
|
165
|
+
# rdoc-file=object.c
|
166
|
+
# - subclasses -> array
|
167
|
+
# -->
|
168
|
+
# Returns an array of classes where the receiver is the direct superclass of the
|
169
|
+
# class, excluding singleton classes. The order of the returned array is not
|
170
|
+
# defined.
|
171
|
+
#
|
172
|
+
# class A; end
|
173
|
+
# class B < A; end
|
174
|
+
# class C < B; end
|
175
|
+
# class D < A; end
|
176
|
+
#
|
177
|
+
# A.subclasses #=> [D, B]
|
178
|
+
# B.subclasses #=> [C]
|
179
|
+
# C.subclasses #=> []
|
180
|
+
#
|
181
|
+
# Anonymous subclasses (not associated with a constant) are returned, too:
|
182
|
+
#
|
183
|
+
# c = Class.new(A)
|
184
|
+
# A.subclasses # => [#<Class:0x00007f003c77bd78>, D, B]
|
185
|
+
#
|
186
|
+
# Note that the parent does not hold references to subclasses and doesn't
|
187
|
+
# prevent them from being garbage collected. This means that the subclass might
|
188
|
+
# disappear when all references to it are dropped:
|
189
|
+
#
|
190
|
+
# # drop the reference to subclass, it can be garbage-collected now
|
191
|
+
# c = nil
|
192
|
+
#
|
193
|
+
# A.subclasses
|
194
|
+
# # It can be
|
195
|
+
# # => [#<Class:0x00007f003c77bd78>, D, B]
|
196
|
+
# # ...or just
|
197
|
+
# # => [D, B]
|
198
|
+
# # ...depending on whether garbage collector was run
|
199
|
+
#
|
200
|
+
def subclasses: () -> Array[Class]
|
201
|
+
|
202
|
+
# <!--
|
203
|
+
# rdoc-file=object.c
|
204
|
+
# - class.superclass -> a_super_class or nil
|
205
|
+
# -->
|
206
|
+
# Returns the superclass of *class*, or `nil`.
|
207
|
+
#
|
208
|
+
# File.superclass #=> IO
|
209
|
+
# IO.superclass #=> Object
|
210
|
+
# Object.superclass #=> BasicObject
|
211
|
+
# class Foo; end
|
212
|
+
# class Bar < Foo; end
|
213
|
+
# Bar.superclass #=> Foo
|
214
|
+
#
|
215
|
+
# Returns nil when the given class does not have a parent class:
|
216
|
+
#
|
217
|
+
# BasicObject.superclass #=> nil
|
218
|
+
#
|
219
|
+
def superclass: () -> Class?
|
220
|
+
end
|
data/core/comparable.rbs
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
# <!-- rdoc-file=compar.c -->
|
2
|
+
# The Comparable mixin is used by classes whose objects may be ordered. The
|
3
|
+
# class must define the `<=>` operator, which compares the receiver against
|
4
|
+
# another object, returning a value less than 0, returning 0, or returning a
|
5
|
+
# value greater than 0, depending on whether the receiver is less than, equal
|
6
|
+
# to, or greater than the other object. If the other object is not comparable
|
7
|
+
# then the `<=>` operator should return `nil`. Comparable uses `<=>` to
|
8
|
+
# implement the conventional comparison operators (`<`, `<=`, `==`, `>=`, and
|
9
|
+
# `>`) and the method `between?`.
|
10
|
+
#
|
11
|
+
# class StringSorter
|
12
|
+
# include Comparable
|
13
|
+
#
|
14
|
+
# attr :str
|
15
|
+
# def <=>(other)
|
16
|
+
# str.size <=> other.str.size
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# def initialize(str)
|
20
|
+
# @str = str
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# def inspect
|
24
|
+
# @str
|
25
|
+
# end
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# s1 = StringSorter.new("Z")
|
29
|
+
# s2 = StringSorter.new("YY")
|
30
|
+
# s3 = StringSorter.new("XXX")
|
31
|
+
# s4 = StringSorter.new("WWWW")
|
32
|
+
# s5 = StringSorter.new("VVVVV")
|
33
|
+
#
|
34
|
+
# s1 < s2 #=> true
|
35
|
+
# s4.between?(s1, s3) #=> false
|
36
|
+
# s4.between?(s3, s5) #=> true
|
37
|
+
# [ s3, s2, s5, s4, s1 ].sort #=> [Z, YY, XXX, WWWW, VVVVV]
|
38
|
+
#
|
39
|
+
# ## What's Here
|
40
|
+
#
|
41
|
+
# Module Comparable provides these methods, all of which use method `#<=>`:
|
42
|
+
#
|
43
|
+
# * #<: Returns whether `self` is less than the given object.
|
44
|
+
# * #<=: Returns whether `self` is less than or equal to the given object.
|
45
|
+
# * #==: Returns whether `self` is equal to the given object.
|
46
|
+
# * #>: Returns whether `self` is greater than the given object.
|
47
|
+
# * #>=: Returns whether `self` is greater than or equal to the given object.
|
48
|
+
# * #between?: Returns `true` if `self` is between two given objects.
|
49
|
+
# * #clamp: For given objects `min` and `max`, or range `(min..max)`, returns:
|
50
|
+
#
|
51
|
+
# * `min` if `(self <=> min) < 0`.
|
52
|
+
# * `max` if `(self <=> max) > 0`.
|
53
|
+
# * `self` otherwise.
|
54
|
+
#
|
55
|
+
module Comparable : _WithSpaceshipOperator
|
56
|
+
# <!--
|
57
|
+
# rdoc-file=compar.c
|
58
|
+
# - obj < other -> true or false
|
59
|
+
# -->
|
60
|
+
# Compares two objects based on the receiver's `<=>` method, returning true if
|
61
|
+
# it returns a value less than 0.
|
62
|
+
#
|
63
|
+
def <: (untyped other) -> bool
|
64
|
+
|
65
|
+
# <!--
|
66
|
+
# rdoc-file=compar.c
|
67
|
+
# - obj <= other -> true or false
|
68
|
+
# -->
|
69
|
+
# Compares two objects based on the receiver's `<=>` method, returning true if
|
70
|
+
# it returns a value less than or equal to 0.
|
71
|
+
#
|
72
|
+
def <=: (untyped other) -> bool
|
73
|
+
|
74
|
+
# <!--
|
75
|
+
# rdoc-file=compar.c
|
76
|
+
# - obj == other -> true or false
|
77
|
+
# -->
|
78
|
+
# Compares two objects based on the receiver's `<=>` method, returning true if
|
79
|
+
# it returns 0. Also returns true if *obj* and *other* are the same object.
|
80
|
+
#
|
81
|
+
def ==: (untyped other) -> bool
|
82
|
+
|
83
|
+
# <!--
|
84
|
+
# rdoc-file=compar.c
|
85
|
+
# - obj > other -> true or false
|
86
|
+
# -->
|
87
|
+
# Compares two objects based on the receiver's `<=>` method, returning true if
|
88
|
+
# it returns a value greater than 0.
|
89
|
+
#
|
90
|
+
def >: (untyped other) -> bool
|
91
|
+
|
92
|
+
# <!--
|
93
|
+
# rdoc-file=compar.c
|
94
|
+
# - obj >= other -> true or false
|
95
|
+
# -->
|
96
|
+
# Compares two objects based on the receiver's `<=>` method, returning true if
|
97
|
+
# it returns a value greater than or equal to 0.
|
98
|
+
#
|
99
|
+
def >=: (untyped other) -> bool
|
100
|
+
|
101
|
+
# <!--
|
102
|
+
# rdoc-file=compar.c
|
103
|
+
# - obj.between?(min, max) -> true or false
|
104
|
+
# -->
|
105
|
+
# Returns `false` if *obj* `<=>` *min* is less than zero or if *obj* `<=>` *max*
|
106
|
+
# is greater than zero, `true` otherwise.
|
107
|
+
#
|
108
|
+
# 3.between?(1, 5) #=> true
|
109
|
+
# 6.between?(1, 5) #=> false
|
110
|
+
# 'cat'.between?('ant', 'dog') #=> true
|
111
|
+
# 'gnu'.between?('ant', 'dog') #=> false
|
112
|
+
#
|
113
|
+
def between?: (untyped min, untyped max) -> bool
|
114
|
+
|
115
|
+
# <!--
|
116
|
+
# rdoc-file=compar.c
|
117
|
+
# - obj.clamp(min, max) -> obj
|
118
|
+
# - obj.clamp(range) -> obj
|
119
|
+
# -->
|
120
|
+
# In `(min, max)` form, returns *min* if *obj* `<=>` *min* is less than zero,
|
121
|
+
# *max* if *obj* `<=>` *max* is greater than zero, and *obj* otherwise.
|
122
|
+
#
|
123
|
+
# 12.clamp(0, 100) #=> 12
|
124
|
+
# 523.clamp(0, 100) #=> 100
|
125
|
+
# -3.123.clamp(0, 100) #=> 0
|
126
|
+
#
|
127
|
+
# 'd'.clamp('a', 'f') #=> 'd'
|
128
|
+
# 'z'.clamp('a', 'f') #=> 'f'
|
129
|
+
#
|
130
|
+
# If *min* is `nil`, it is considered smaller than *obj*, and if *max* is `nil`,
|
131
|
+
# it is considered greater than *obj*.
|
132
|
+
#
|
133
|
+
# -20.clamp(0, nil) #=> 0
|
134
|
+
# 523.clamp(nil, 100) #=> 100
|
135
|
+
#
|
136
|
+
# In `(range)` form, returns *range.begin* if *obj* `<=>` *range.begin* is less
|
137
|
+
# than zero, *range.end* if *obj* `<=>` *range.end* is greater than zero, and
|
138
|
+
# *obj* otherwise.
|
139
|
+
#
|
140
|
+
# 12.clamp(0..100) #=> 12
|
141
|
+
# 523.clamp(0..100) #=> 100
|
142
|
+
# -3.123.clamp(0..100) #=> 0
|
143
|
+
#
|
144
|
+
# 'd'.clamp('a'..'f') #=> 'd'
|
145
|
+
# 'z'.clamp('a'..'f') #=> 'f'
|
146
|
+
#
|
147
|
+
# If *range.begin* is `nil`, it is considered smaller than *obj*, and if
|
148
|
+
# *range.end* is `nil`, it is considered greater than *obj*.
|
149
|
+
#
|
150
|
+
# -20.clamp(0..) #=> 0
|
151
|
+
# 523.clamp(..100) #=> 100
|
152
|
+
#
|
153
|
+
# When *range.end* is excluded and not `nil`, an exception is raised.
|
154
|
+
#
|
155
|
+
# 100.clamp(0...100) # ArgumentError
|
156
|
+
#
|
157
|
+
def clamp: [A, B] (A min, B max) -> (self | A | B)
|
158
|
+
| [A] (Range[A]) -> (self | A)
|
159
|
+
end
|
160
|
+
|
161
|
+
# This interface defines the condition for Comparable mixin.
|
162
|
+
#
|
163
|
+
interface Comparable::_WithSpaceshipOperator
|
164
|
+
# `<=>` operator must return Integer or `nil`.
|
165
|
+
# If `other` is greater than `self`, it returns a positive Integer.
|
166
|
+
# If `other` equals to `self`, it returns zero.
|
167
|
+
# If `other` is less than `self`, it returns a positive Integer.
|
168
|
+
# If no comparison is defined with `other` and `self`, it returns `nil`.
|
169
|
+
#
|
170
|
+
def <=>: (untyped other) -> Integer?
|
171
|
+
end
|