rbs 4.1.0.pre.2-java
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/.clang-format +75 -0
- data/.clangd +2 -0
- data/.github/dependabot.yml +24 -0
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +61 -0
- data/.github/workflows/comments.yml +37 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +158 -0
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +39 -0
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +49 -0
- data/.gitignore +38 -0
- data/.rubocop.yml +72 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +2292 -0
- data/COPYING +56 -0
- data/README.md +240 -0
- data/Rakefile +869 -0
- data/Steepfile +53 -0
- data/config.yml +913 -0
- data/core/array.rbs +4142 -0
- data/core/basic_object.rbs +376 -0
- data/core/binding.rbs +148 -0
- data/core/builtin.rbs +278 -0
- data/core/class.rbs +223 -0
- data/core/comparable.rbs +192 -0
- data/core/complex.rbs +812 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +993 -0
- data/core/encoding.rbs +1368 -0
- data/core/enumerable.rbs +2506 -0
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +705 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +682 -0
- data/core/errors.rbs +789 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +570 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2045 -0
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1316 -0
- data/core/gc.rbs +788 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +2183 -0
- data/core/integer.rbs +1374 -0
- data/core/io/buffer.rbs +995 -0
- data/core/io/wait.rbs +48 -0
- data/core/io.rbs +3472 -0
- data/core/kernel.rbs +3172 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +637 -0
- data/core/math.rbs +770 -0
- data/core/method.rbs +422 -0
- data/core/module.rbs +1856 -0
- data/core/nil_class.rbs +210 -0
- data/core/numeric.rbs +832 -0
- data/core/object.rbs +108 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +197 -0
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +905 -0
- data/core/process.rbs +2316 -0
- data/core/ractor.rbs +924 -0
- data/core/random.rbs +255 -0
- data/core/range.rbs +1209 -0
- data/core/rational.rbs +502 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +1236 -0
- data/core/rbs/unnamed/env_class.rbs +1214 -0
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +186 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1974 -0
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +809 -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 +109 -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 +1105 -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 +293 -0
- data/core/set.rbs +751 -0
- data/core/signal.rbs +110 -0
- data/core/string.rbs +5532 -0
- data/core/struct.rbs +668 -0
- data/core/symbol.rbs +482 -0
- data/core/thread.rbs +1826 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1793 -0
- data/core/trace_point.rbs +483 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +337 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +107 -0
- data/docs/aliases.md +79 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/config.md +171 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +56 -0
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/rust.md +96 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +940 -0
- data/docs/tools.md +17 -0
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/ast_translation.c +1855 -0
- data/ext/rbs_extension/ast_translation.h +41 -0
- data/ext/rbs_extension/class_constants.c +187 -0
- data/ext/rbs_extension/class_constants.h +104 -0
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +40 -0
- data/ext/rbs_extension/legacy_location.c +294 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +613 -0
- data/ext/rbs_extension/rbs_extension.h +16 -0
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/ast.h +1047 -0
- data/include/rbs/defines.h +99 -0
- data/include/rbs/lexer.h +207 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +155 -0
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +14 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +82 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +398 -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 +472 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +762 -0
- data/lib/rbs/ast/type_param.rb +235 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +189 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +84 -0
- data/lib/rbs/cli/validate.rb +294 -0
- data/lib/rbs/cli.rb +1253 -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 +269 -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 +265 -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 +415 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
- data/lib/rbs/definition_builder/method_builder.rb +295 -0
- data/lib/rbs/definition_builder.rb +1054 -0
- data/lib/rbs/diff.rb +131 -0
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +1028 -0
- data/lib/rbs/environment_loader.rb +167 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +634 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +568 -0
- data/lib/rbs/location_aux.rb +170 -0
- data/lib/rbs/locator.rb +247 -0
- data/lib/rbs/method_type.rb +145 -0
- data/lib/rbs/namespace.rb +154 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +142 -0
- data/lib/rbs/prototype/helpers.rb +197 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +816 -0
- data/lib/rbs/prototype/rbi.rb +625 -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 +680 -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 +167 -0
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +204 -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 +457 -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 +122 -0
- data/lib/rbs/types.rb +1604 -0
- data/lib/rbs/unit_test/convertibles.rb +177 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +383 -0
- data/lib/rbs/unit_test/with_aliases.rb +145 -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/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
- data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
- data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
- data/lib/rbs/wasm/jars/asm-util.jar +0 -0
- data/lib/rbs/wasm/jars/asm.jar +0 -0
- data/lib/rbs/wasm/jars/compiler.jar +0 -0
- data/lib/rbs/wasm/jars/log.jar +0 -0
- data/lib/rbs/wasm/jars/runtime.jar +0 -0
- data/lib/rbs/wasm/jars/wasi.jar +0 -0
- data/lib/rbs/wasm/jars/wasm.jar +0 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/rbs_parser.wasm +0 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +117 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs.gemspec +68 -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 +52 -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 +85 -0
- data/sig/annotate/rdoc_source.rbs +32 -0
- data/sig/annotation.rbs +27 -0
- data/sig/ast/ruby/annotations.rbs +470 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +198 -0
- data/sig/buffer.rbs +108 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +15 -0
- data/sig/cli/validate.rbs +47 -0
- data/sig/cli.rbs +89 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +68 -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 +274 -0
- data/sig/definition.rbs +232 -0
- data/sig/definition_builder.rbs +181 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +286 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +408 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +126 -0
- data/sig/location.rbs +135 -0
- data/sig/locator.rbs +56 -0
- data/sig/manifest.yaml +5 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +89 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +161 -0
- data/sig/parser.rbs +164 -0
- data/sig/prototype/helpers.rbs +29 -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 +61 -0
- data/sig/rewriter.rbs +45 -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/source.rbs +48 -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 +115 -0
- data/sig/typename.rbs +89 -0
- data/sig/types.rbs +578 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +22 -0
- data/sig/unit_test/type_assertions.rbs +211 -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/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/sig/writer.rbs +127 -0
- data/src/ast.c +1628 -0
- data/src/lexer.c +3217 -0
- data/src/lexer.re +155 -0
- data/src/lexstate.c +217 -0
- data/src/location.c +31 -0
- data/src/parser.c +4255 -0
- data/src/serialize.c +958 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +162 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +268 -0
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -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 +1647 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +911 -0
- data/stdlib/cgi/0/manifest.yaml +4 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +266 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1598 -0
- data/stdlib/date/0/date_time.rbs +617 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +187 -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 +344 -0
- data/stdlib/digest/0/digest.rbs +687 -0
- data/stdlib/erb/0/erb.rbs +933 -0
- data/stdlib/etc/0/etc.rbs +884 -0
- data/stdlib/fileutils/0/fileutils.rbs +1753 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +271 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
- data/stdlib/json/0/json.rbs +1963 -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 +5580 -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 +470 -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 +433 -0
- data/stdlib/open3/0/open3.rbs +606 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12231 -0
- data/stdlib/optparse/0/optparse.rbs +1734 -0
- data/stdlib/pathname/0/pathname.rbs +36 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +301 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +608 -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 +455 -0
- data/stdlib/psych/0/store.rbs +57 -0
- data/stdlib/pty/0/pty.rbs +240 -0
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +52 -0
- data/stdlib/rdoc/0/comment.rbs +61 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +393 -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 +1787 -0
- data/stdlib/ripper/0/ripper.rbs +1654 -0
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +49 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +134 -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 +94 -0
- data/stdlib/socket/0/socket.rbs +4170 -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 +87 -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 +1681 -0
- data/stdlib/strscan/0/string_scanner.rbs +1648 -0
- data/stdlib/tempfile/0/tempfile.rbs +483 -0
- data/stdlib/time/0/time.rbs +434 -0
- data/stdlib/timeout/0/timeout.rbs +137 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +8 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +410 -0
- data/stdlib/uri/0/common.rbs +621 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1116 -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 +211 -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 +168 -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 +201 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +660 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# <!-- rdoc-file=proc.c -->
|
|
2
|
+
# Ruby supports two forms of objectified methods. Class `Method` is used to
|
|
3
|
+
# represent methods that are associated with a particular object: these method
|
|
4
|
+
# objects are bound to that object. Bound method objects for an object can be
|
|
5
|
+
# created using Object#method.
|
|
6
|
+
#
|
|
7
|
+
# Ruby also supports unbound methods; methods objects that are not associated
|
|
8
|
+
# with a particular object. These can be created either by calling
|
|
9
|
+
# Module#instance_method or by calling #unbind on a bound method object. The
|
|
10
|
+
# result of both of these is an UnboundMethod object.
|
|
11
|
+
#
|
|
12
|
+
# Unbound methods can only be called after they are bound to an object. That
|
|
13
|
+
# object must be a kind_of? the method's original class.
|
|
14
|
+
#
|
|
15
|
+
# class Square
|
|
16
|
+
# def area
|
|
17
|
+
# @side * @side
|
|
18
|
+
# end
|
|
19
|
+
# def initialize(side)
|
|
20
|
+
# @side = side
|
|
21
|
+
# end
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
# area_un = Square.instance_method(:area)
|
|
25
|
+
#
|
|
26
|
+
# s = Square.new(12)
|
|
27
|
+
# area = area_un.bind(s)
|
|
28
|
+
# area.call #=> 144
|
|
29
|
+
#
|
|
30
|
+
# Unbound methods are a reference to the method at the time it was objectified:
|
|
31
|
+
# subsequent changes to the underlying class will not affect the unbound method.
|
|
32
|
+
#
|
|
33
|
+
# class Test
|
|
34
|
+
# def test
|
|
35
|
+
# :original
|
|
36
|
+
# end
|
|
37
|
+
# end
|
|
38
|
+
# um = Test.instance_method(:test)
|
|
39
|
+
# class Test
|
|
40
|
+
# def test
|
|
41
|
+
# :modified
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
# t = Test.new
|
|
45
|
+
# t.test #=> :modified
|
|
46
|
+
# um.bind(t).call #=> :original
|
|
47
|
+
#
|
|
48
|
+
class UnboundMethod
|
|
49
|
+
# <!--
|
|
50
|
+
# rdoc-file=proc.c
|
|
51
|
+
# - meth.eql?(other_meth) -> true or false
|
|
52
|
+
# - meth == other_meth -> true or false
|
|
53
|
+
# -->
|
|
54
|
+
# Two unbound method objects are equal if they refer to the same method
|
|
55
|
+
# definition.
|
|
56
|
+
#
|
|
57
|
+
# Array.instance_method(:each_slice) == Enumerable.instance_method(:each_slice)
|
|
58
|
+
# #=> true
|
|
59
|
+
#
|
|
60
|
+
# Array.instance_method(:sum) == Enumerable.instance_method(:sum)
|
|
61
|
+
# #=> false, Array redefines the method for efficiency
|
|
62
|
+
#
|
|
63
|
+
def ==: (untyped other) -> bool
|
|
64
|
+
|
|
65
|
+
# <!-- rdoc-file=proc.c -->
|
|
66
|
+
# Two unbound method objects are equal if they refer to the same method
|
|
67
|
+
# definition.
|
|
68
|
+
#
|
|
69
|
+
# Array.instance_method(:each_slice) == Enumerable.instance_method(:each_slice)
|
|
70
|
+
# #=> true
|
|
71
|
+
#
|
|
72
|
+
# Array.instance_method(:sum) == Enumerable.instance_method(:sum)
|
|
73
|
+
# #=> false, Array redefines the method for efficiency
|
|
74
|
+
#
|
|
75
|
+
alias eql? ==
|
|
76
|
+
|
|
77
|
+
# <!--
|
|
78
|
+
# rdoc-file=proc.c
|
|
79
|
+
# - meth.hash -> integer
|
|
80
|
+
# -->
|
|
81
|
+
# Returns a hash value corresponding to the method object.
|
|
82
|
+
#
|
|
83
|
+
# See also Object#hash.
|
|
84
|
+
#
|
|
85
|
+
def hash: () -> Integer
|
|
86
|
+
|
|
87
|
+
# <!--
|
|
88
|
+
# rdoc-file=proc.c
|
|
89
|
+
# - method.clone -> new_method
|
|
90
|
+
# -->
|
|
91
|
+
# Returns a clone of this method.
|
|
92
|
+
#
|
|
93
|
+
# class A
|
|
94
|
+
# def foo
|
|
95
|
+
# return "bar"
|
|
96
|
+
# end
|
|
97
|
+
# end
|
|
98
|
+
#
|
|
99
|
+
# m = A.new.method(:foo)
|
|
100
|
+
# m.call # => "bar"
|
|
101
|
+
# n = m.clone.call # => "bar"
|
|
102
|
+
#
|
|
103
|
+
def clone: () -> self
|
|
104
|
+
|
|
105
|
+
# <!--
|
|
106
|
+
# rdoc-file=proc.c
|
|
107
|
+
# - meth.arity -> integer
|
|
108
|
+
# -->
|
|
109
|
+
# Returns an indication of the number of arguments accepted by a method. Returns
|
|
110
|
+
# a nonnegative integer for methods that take a fixed number of arguments. For
|
|
111
|
+
# Ruby methods that take a variable number of arguments, returns -n-1, where n
|
|
112
|
+
# is the number of required arguments. Keyword arguments will be considered as a
|
|
113
|
+
# single additional argument, that argument being mandatory if any keyword
|
|
114
|
+
# argument is mandatory. For methods written in C, returns -1 if the call takes
|
|
115
|
+
# a variable number of arguments.
|
|
116
|
+
#
|
|
117
|
+
# class C
|
|
118
|
+
# def one; end
|
|
119
|
+
# def two(a); end
|
|
120
|
+
# def three(*a); end
|
|
121
|
+
# def four(a, b); end
|
|
122
|
+
# def five(a, b, *c); end
|
|
123
|
+
# def six(a, b, *c, &d); end
|
|
124
|
+
# def seven(a, b, x:0); end
|
|
125
|
+
# def eight(x:, y:); end
|
|
126
|
+
# def nine(x:, y:, **z); end
|
|
127
|
+
# def ten(*a, x:, y:); end
|
|
128
|
+
# end
|
|
129
|
+
# c = C.new
|
|
130
|
+
# c.method(:one).arity #=> 0
|
|
131
|
+
# c.method(:two).arity #=> 1
|
|
132
|
+
# c.method(:three).arity #=> -1
|
|
133
|
+
# c.method(:four).arity #=> 2
|
|
134
|
+
# c.method(:five).arity #=> -3
|
|
135
|
+
# c.method(:six).arity #=> -3
|
|
136
|
+
# c.method(:seven).arity #=> -3
|
|
137
|
+
# c.method(:eight).arity #=> 1
|
|
138
|
+
# c.method(:nine).arity #=> 1
|
|
139
|
+
# c.method(:ten).arity #=> -2
|
|
140
|
+
#
|
|
141
|
+
# "cat".method(:size).arity #=> 0
|
|
142
|
+
# "cat".method(:replace).arity #=> 1
|
|
143
|
+
# "cat".method(:squeeze).arity #=> -1
|
|
144
|
+
# "cat".method(:count).arity #=> -1
|
|
145
|
+
#
|
|
146
|
+
def arity: () -> Integer
|
|
147
|
+
|
|
148
|
+
# <!--
|
|
149
|
+
# rdoc-file=proc.c
|
|
150
|
+
# - umeth.bind(obj) -> method
|
|
151
|
+
# -->
|
|
152
|
+
# Bind *umeth* to *obj*. If Klass was the class from which *umeth* was obtained,
|
|
153
|
+
# <code>obj.kind_of?(Klass)</code> must be true.
|
|
154
|
+
#
|
|
155
|
+
# class A
|
|
156
|
+
# def test
|
|
157
|
+
# puts "In test, class = #{self.class}"
|
|
158
|
+
# end
|
|
159
|
+
# end
|
|
160
|
+
# class B < A
|
|
161
|
+
# end
|
|
162
|
+
# class C < B
|
|
163
|
+
# end
|
|
164
|
+
#
|
|
165
|
+
# um = B.instance_method(:test)
|
|
166
|
+
# bm = um.bind(C.new)
|
|
167
|
+
# bm.call
|
|
168
|
+
# bm = um.bind(B.new)
|
|
169
|
+
# bm.call
|
|
170
|
+
# bm = um.bind(A.new)
|
|
171
|
+
# bm.call
|
|
172
|
+
#
|
|
173
|
+
# <em>produces:</em>
|
|
174
|
+
#
|
|
175
|
+
# In test, class = C
|
|
176
|
+
# In test, class = B
|
|
177
|
+
# prog.rb:16:in `bind': bind argument must be an instance of B (TypeError)
|
|
178
|
+
# from prog.rb:16
|
|
179
|
+
#
|
|
180
|
+
def bind: (untyped obj) -> Method
|
|
181
|
+
|
|
182
|
+
# <!--
|
|
183
|
+
# rdoc-file=proc.c
|
|
184
|
+
# - meth.to_s -> string
|
|
185
|
+
# - meth.inspect -> string
|
|
186
|
+
# -->
|
|
187
|
+
# Returns a human-readable description of the underlying method.
|
|
188
|
+
#
|
|
189
|
+
# "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
|
|
190
|
+
# (1..3).method(:map).inspect #=> "#<Method: Range(Enumerable)#map()>"
|
|
191
|
+
#
|
|
192
|
+
# In the latter case, the method description includes the "owner" of the
|
|
193
|
+
# original method (`Enumerable` module, which is included into `Range`).
|
|
194
|
+
#
|
|
195
|
+
# `inspect` also provides, when possible, method argument names (call sequence)
|
|
196
|
+
# and source location.
|
|
197
|
+
#
|
|
198
|
+
# require 'net/http'
|
|
199
|
+
# Net::HTTP.method(:get).inspect
|
|
200
|
+
# #=> "#<Method: Net::HTTP.get(uri_or_host, path=..., port=...) <skip>/lib/ruby/2.7.0/net/http.rb:457>"
|
|
201
|
+
#
|
|
202
|
+
# <code>...</code> in argument definition means argument is optional (has some
|
|
203
|
+
# default value).
|
|
204
|
+
#
|
|
205
|
+
# For methods defined in C (language core and extensions), location and argument
|
|
206
|
+
# names can't be extracted, and only generic information is provided in form of
|
|
207
|
+
# <code>*</code> (any number of arguments) or `_` (some positional argument).
|
|
208
|
+
#
|
|
209
|
+
# "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
|
|
210
|
+
# "cat".method(:+).inspect #=> "#<Method: String#+(_)>""
|
|
211
|
+
#
|
|
212
|
+
def inspect: () -> String
|
|
213
|
+
|
|
214
|
+
# <!-- rdoc-file=proc.c -->
|
|
215
|
+
# Returns a human-readable description of the underlying method.
|
|
216
|
+
#
|
|
217
|
+
# "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
|
|
218
|
+
# (1..3).method(:map).inspect #=> "#<Method: Range(Enumerable)#map()>"
|
|
219
|
+
#
|
|
220
|
+
# In the latter case, the method description includes the "owner" of the
|
|
221
|
+
# original method (`Enumerable` module, which is included into `Range`).
|
|
222
|
+
#
|
|
223
|
+
# `inspect` also provides, when possible, method argument names (call sequence)
|
|
224
|
+
# and source location.
|
|
225
|
+
#
|
|
226
|
+
# require 'net/http'
|
|
227
|
+
# Net::HTTP.method(:get).inspect
|
|
228
|
+
# #=> "#<Method: Net::HTTP.get(uri_or_host, path=..., port=...) <skip>/lib/ruby/2.7.0/net/http.rb:457>"
|
|
229
|
+
#
|
|
230
|
+
# <code>...</code> in argument definition means argument is optional (has some
|
|
231
|
+
# default value).
|
|
232
|
+
#
|
|
233
|
+
# For methods defined in C (language core and extensions), location and argument
|
|
234
|
+
# names can't be extracted, and only generic information is provided in form of
|
|
235
|
+
# <code>*</code> (any number of arguments) or `_` (some positional argument).
|
|
236
|
+
#
|
|
237
|
+
# "cat".method(:count).inspect #=> "#<Method: String#count(*)>"
|
|
238
|
+
# "cat".method(:+).inspect #=> "#<Method: String#+(_)>""
|
|
239
|
+
#
|
|
240
|
+
alias to_s inspect
|
|
241
|
+
|
|
242
|
+
# <!--
|
|
243
|
+
# rdoc-file=proc.c
|
|
244
|
+
# - meth.name -> symbol
|
|
245
|
+
# -->
|
|
246
|
+
# Returns the name of the method.
|
|
247
|
+
#
|
|
248
|
+
def name: () -> Symbol
|
|
249
|
+
|
|
250
|
+
# <!--
|
|
251
|
+
# rdoc-file=proc.c
|
|
252
|
+
# - meth.owner -> class_or_module
|
|
253
|
+
# -->
|
|
254
|
+
# Returns the class or module on which this method is defined. In other words,
|
|
255
|
+
#
|
|
256
|
+
# meth.owner.instance_methods(false).include?(meth.name) # => true
|
|
257
|
+
#
|
|
258
|
+
# holds as long as the method is not removed/undefined/replaced, (with
|
|
259
|
+
# private_instance_methods instead of instance_methods if the method is
|
|
260
|
+
# private).
|
|
261
|
+
#
|
|
262
|
+
# See also Method#receiver.
|
|
263
|
+
#
|
|
264
|
+
# (1..3).method(:map).owner #=> Enumerable
|
|
265
|
+
#
|
|
266
|
+
def owner: () -> (Class | Module)
|
|
267
|
+
|
|
268
|
+
# <!--
|
|
269
|
+
# rdoc-file=proc.c
|
|
270
|
+
# - meth.parameters -> array
|
|
271
|
+
# -->
|
|
272
|
+
# Returns the parameter information of this method.
|
|
273
|
+
#
|
|
274
|
+
# def foo(bar); end
|
|
275
|
+
# method(:foo).parameters #=> [[:req, :bar]]
|
|
276
|
+
#
|
|
277
|
+
# def foo(bar, baz, bat, &blk); end
|
|
278
|
+
# method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:req, :bat], [:block, :blk]]
|
|
279
|
+
#
|
|
280
|
+
# def foo(bar, *args); end
|
|
281
|
+
# method(:foo).parameters #=> [[:req, :bar], [:rest, :args]]
|
|
282
|
+
#
|
|
283
|
+
# def foo(bar, baz, *args, &blk); end
|
|
284
|
+
# method(:foo).parameters #=> [[:req, :bar], [:req, :baz], [:rest, :args], [:block, :blk]]
|
|
285
|
+
#
|
|
286
|
+
def parameters: () -> Method::param_types
|
|
287
|
+
|
|
288
|
+
# <!--
|
|
289
|
+
# rdoc-file=proc.c
|
|
290
|
+
# - meth.source_location -> [String, Integer, Integer, Integer, Integer]
|
|
291
|
+
# -->
|
|
292
|
+
# Returns the location where the method was defined. The returned Array
|
|
293
|
+
# contains:
|
|
294
|
+
# (1) the Ruby source filename
|
|
295
|
+
# (2) the line number where the definition starts
|
|
296
|
+
# (3) the column number where the definition starts
|
|
297
|
+
# (4) the line number where the definition ends
|
|
298
|
+
# (5) the column number where the definitions ends
|
|
299
|
+
#
|
|
300
|
+
# This method will return `nil` if the method was not defined in Ruby (i.e.
|
|
301
|
+
# native).
|
|
302
|
+
#
|
|
303
|
+
def source_location: () -> [String, Integer]?
|
|
304
|
+
|
|
305
|
+
# <!--
|
|
306
|
+
# rdoc-file=proc.c
|
|
307
|
+
# - meth.super_method -> method
|
|
308
|
+
# -->
|
|
309
|
+
# Returns a `Method` of superclass which would be called when super is used or
|
|
310
|
+
# nil if there is no method on superclass.
|
|
311
|
+
#
|
|
312
|
+
def super_method: () -> UnboundMethod?
|
|
313
|
+
|
|
314
|
+
# <!--
|
|
315
|
+
# rdoc-file=proc.c
|
|
316
|
+
# - meth.original_name -> symbol
|
|
317
|
+
# -->
|
|
318
|
+
# Returns the original name of the method.
|
|
319
|
+
#
|
|
320
|
+
# class C
|
|
321
|
+
# def foo; end
|
|
322
|
+
# alias bar foo
|
|
323
|
+
# end
|
|
324
|
+
# C.instance_method(:bar).original_name # => :foo
|
|
325
|
+
#
|
|
326
|
+
def original_name: () -> Symbol
|
|
327
|
+
|
|
328
|
+
# <!--
|
|
329
|
+
# rdoc-file=proc.c
|
|
330
|
+
# - umeth.bind_call(recv, args, ...) -> obj
|
|
331
|
+
# -->
|
|
332
|
+
# Bind *umeth* to *recv* and then invokes the method with the specified
|
|
333
|
+
# arguments. This is semantically equivalent to
|
|
334
|
+
# <code>umeth.bind(recv).call(args, ...)</code>.
|
|
335
|
+
#
|
|
336
|
+
def bind_call: (untyped recv, *untyped, **untyped) ?{ (?) -> untyped } -> untyped
|
|
337
|
+
end
|
data/core/warning.rbs
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# <!-- rdoc-file=error.c -->
|
|
2
|
+
# The Warning module contains a single method named #warn, and the module
|
|
3
|
+
# extends itself, making Warning.warn available. Warning.warn is called for all
|
|
4
|
+
# warnings issued by Ruby. By default, warnings are printed to $stderr.
|
|
5
|
+
#
|
|
6
|
+
# Changing the behavior of Warning.warn is useful to customize how warnings are
|
|
7
|
+
# handled by Ruby, for instance by filtering some warnings, and/or outputting
|
|
8
|
+
# warnings somewhere other than <code>$stderr</code>.
|
|
9
|
+
#
|
|
10
|
+
# If you want to change the behavior of Warning.warn you should use
|
|
11
|
+
# <code>Warning.extend(MyNewModuleWithWarnMethod)</code> and you can use `super`
|
|
12
|
+
# to get the default behavior of printing the warning to <code>$stderr</code>.
|
|
13
|
+
#
|
|
14
|
+
# Example:
|
|
15
|
+
# module MyWarningFilter
|
|
16
|
+
# def warn(message, category: nil, **kwargs)
|
|
17
|
+
# if /some warning I want to ignore/.match?(message)
|
|
18
|
+
# # ignore
|
|
19
|
+
# else
|
|
20
|
+
# super
|
|
21
|
+
# end
|
|
22
|
+
# end
|
|
23
|
+
# end
|
|
24
|
+
# Warning.extend MyWarningFilter
|
|
25
|
+
#
|
|
26
|
+
# You should never redefine Warning#warn (the instance method), as that will
|
|
27
|
+
# then no longer provide a way to use the default behavior.
|
|
28
|
+
#
|
|
29
|
+
# The [warning](https://rubygems.org/gems/warning) gem provides convenient ways
|
|
30
|
+
# to customize Warning.warn.
|
|
31
|
+
#
|
|
32
|
+
module Warning
|
|
33
|
+
# The types of categories the `Warning` module understands.
|
|
34
|
+
#
|
|
35
|
+
type category = :deprecated | :experimental | :performance
|
|
36
|
+
|
|
37
|
+
# <!--
|
|
38
|
+
# rdoc-file=error.c
|
|
39
|
+
# - Warning[category] -> true or false
|
|
40
|
+
# -->
|
|
41
|
+
# Returns the flag to show the warning messages for `category`. Supported
|
|
42
|
+
# categories are:
|
|
43
|
+
#
|
|
44
|
+
# <code>:deprecated</code>
|
|
45
|
+
# : deprecation warnings
|
|
46
|
+
# * assignment of non-nil value to <code>$,</code> and <code>$;</code>
|
|
47
|
+
# * keyword arguments
|
|
48
|
+
# etc.
|
|
49
|
+
#
|
|
50
|
+
#
|
|
51
|
+
# <code>:experimental</code>
|
|
52
|
+
# : experimental features
|
|
53
|
+
#
|
|
54
|
+
#
|
|
55
|
+
# <code>:performance</code>
|
|
56
|
+
# : performance hints
|
|
57
|
+
# * Shape variation limit
|
|
58
|
+
#
|
|
59
|
+
def self.[]: (category) -> bool
|
|
60
|
+
|
|
61
|
+
# <!--
|
|
62
|
+
# rdoc-file=error.c
|
|
63
|
+
# - Warning[category] = flag -> flag
|
|
64
|
+
# -->
|
|
65
|
+
# Sets the warning flags for `category`. See Warning.[] for the categories.
|
|
66
|
+
#
|
|
67
|
+
def self.[]=: [T] (category, T flag) -> T
|
|
68
|
+
|
|
69
|
+
# <!--
|
|
70
|
+
# rdoc-file=error.c
|
|
71
|
+
# - categories -> array
|
|
72
|
+
# -->
|
|
73
|
+
# Returns a list of the supported category symbols.
|
|
74
|
+
#
|
|
75
|
+
def self.categories: () -> Array[Symbol]
|
|
76
|
+
|
|
77
|
+
# <!--
|
|
78
|
+
# rdoc-file=error.c
|
|
79
|
+
# - warn(msg, category: nil) -> nil
|
|
80
|
+
# -->
|
|
81
|
+
# Writes warning message `msg` to $stderr. This method is called by Ruby for all
|
|
82
|
+
# emitted warnings. A `category` may be included with the warning.
|
|
83
|
+
#
|
|
84
|
+
# See the documentation of the Warning module for how to customize this.
|
|
85
|
+
#
|
|
86
|
+
def self?.warn: (String message, ?category: category?) -> nil
|
|
87
|
+
end
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Core and Standard Library Signatures Contribution Guide
|
|
2
|
+
|
|
3
|
+
## Guides
|
|
4
|
+
|
|
5
|
+
* [RBS by Example](rbs_by_example.md)
|
|
6
|
+
* [Writing Signature Guide](sigs.md)
|
|
7
|
+
* [Testing Core API and Standard Library Types](stdlib.md)
|
|
8
|
+
* [Syntax](syntax.md)
|
|
9
|
+
|
|
10
|
+
## Introduction
|
|
11
|
+
|
|
12
|
+
The RBS repository contains the type definitions of Core API and Standard Libraries.
|
|
13
|
+
There are some discussions whether if it is the best to have them in this repository, but we have them and continue updating the files meanwhile.
|
|
14
|
+
|
|
15
|
+
The target version of the bundled type definitions is the [latest _release_ of Ruby](https://www.ruby-lang.org/en/downloads/branches/) -- `4.0` as of 2026.
|
|
16
|
+
Note, however, that the CI currently retains the tests on Ruby 3.2 as well.
|
|
17
|
+
|
|
18
|
+
**The core API** type definitions are in `core` directory.
|
|
19
|
+
You will find the familiar class names in the directory, like `string.rbs` or `array.rbs`.
|
|
20
|
+
|
|
21
|
+
**The standard libraries** type definitions are in `stdlib` directory.
|
|
22
|
+
They have the [third party repository](repo.md) structure.
|
|
23
|
+
There is a `set` directory for the `set` library, and it contains `0` directory.
|
|
24
|
+
Because RBS supports the latest release of Ruby, we have one set of RBS files which corresponds to the bundled versions of the libraries.
|
|
25
|
+
|
|
26
|
+
## Steps for Contribution
|
|
27
|
+
|
|
28
|
+
1. Pick the class/library you will work for.
|
|
29
|
+
2. Make a directory `stdlib/foo/0` if you work for one of the standard libraries.
|
|
30
|
+
3. Write RBS type definitions and tests.
|
|
31
|
+
|
|
32
|
+
You will typically follow the steps as follows:
|
|
33
|
+
|
|
34
|
+
1. Run `rbs prototype runtime` to generate list of methods.
|
|
35
|
+
2. Run `rbs annotate` to import RDoc comments.
|
|
36
|
+
3. Run `rake generate:stdlib_test[LIB]` to generate a test case.
|
|
37
|
+
4. Write the type definitions and tests.
|
|
38
|
+
|
|
39
|
+
See the next *Useful Tools* section and the guides above for writing and testing RBS files.
|
|
40
|
+
|
|
41
|
+
## Useful Tools
|
|
42
|
+
|
|
43
|
+
* `rbs prototype runtime --merge String`
|
|
44
|
+
* Generate a prototype using runtime API.
|
|
45
|
+
* `--merge` tells to use the method types in RBS if exists.
|
|
46
|
+
* `rbs prototype runtime --merge --method-owner=Numeric Integer`
|
|
47
|
+
* You can use --method-owner if you want to print method of other classes too, for documentation purpose.
|
|
48
|
+
* `rbs annotate core/string.rbs`
|
|
49
|
+
* Import RDoc comments.
|
|
50
|
+
* The imported docs contain the description, *arglists*, and filenames to help writing types.
|
|
51
|
+
* `bin/query-rdoc String#initialize`
|
|
52
|
+
* Print RDoc documents in the format you can copy-and-paste to RBS.
|
|
53
|
+
* `bin/sort core/string.rbs`
|
|
54
|
+
* Sort declarations members in RBS files.
|
|
55
|
+
* `rbs -r LIB validate`
|
|
56
|
+
Validate the syntax and some of the semantics.
|
|
57
|
+
* `rake generate:stdlib_test[String]`
|
|
58
|
+
Scaffold the stdlib test.
|
|
59
|
+
* `rake test/stdlib/Array_test.rb`
|
|
60
|
+
Run specific stdlib test with the path.
|
|
61
|
+
|
|
62
|
+
### Standard STDLIB Members Order
|
|
63
|
+
|
|
64
|
+
We define the standard members order so that ordering doesn't bother reading diffs or git-annotate outputs.
|
|
65
|
+
|
|
66
|
+
1. `def self.new` or `def initialize`
|
|
67
|
+
2. Mixins
|
|
68
|
+
3. Attributes
|
|
69
|
+
4. Singleton methods
|
|
70
|
+
5. `public` & public instance methods
|
|
71
|
+
6. `private` & private instance methods
|
|
72
|
+
|
|
73
|
+
```rbs
|
|
74
|
+
class HelloWorld[X]
|
|
75
|
+
def self.new: [A] () { (void) -> A } -> HelloWorld[A] # new or initialize comes first
|
|
76
|
+
def initialize: () -> void
|
|
77
|
+
|
|
78
|
+
include Enumerable[X, void] # Mixin comes next
|
|
79
|
+
|
|
80
|
+
attr_reader language: (:ja | :en) # Attributes
|
|
81
|
+
|
|
82
|
+
def self.all_languages: () -> Array[Symbol] # Singleton methods
|
|
83
|
+
|
|
84
|
+
public # Public instance methods
|
|
85
|
+
|
|
86
|
+
def each: () { (A) -> void } -> void # Members are sorted dictionary order
|
|
87
|
+
|
|
88
|
+
def to_s: (?Locale) -> String
|
|
89
|
+
|
|
90
|
+
private # Private instance methods
|
|
91
|
+
|
|
92
|
+
alias validate validate_locale
|
|
93
|
+
|
|
94
|
+
def validate_locale: () -> void
|
|
95
|
+
end
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Q&A
|
|
99
|
+
|
|
100
|
+
### Some of the standard libraries are gems. Why we put the files in this repo?
|
|
101
|
+
|
|
102
|
+
You are correct. We want to move to their repos. We haven't started the migration yet.
|
|
103
|
+
|
|
104
|
+
### How can we handle incompatibilities of core APIs and standard libraries between Rubies
|
|
105
|
+
|
|
106
|
+
We ignore the incompatibilities for now.
|
|
107
|
+
We focus on the latest version of core APIs and standard libraries.
|
data/docs/aliases.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Aliases
|
|
2
|
+
|
|
3
|
+
This document explains module/class aliases and type aliases.
|
|
4
|
+
|
|
5
|
+
## Module/class alias
|
|
6
|
+
|
|
7
|
+
Module/class aliases give another name to a module/class.
|
|
8
|
+
This is useful for some syntaxes that has lexical constraints.
|
|
9
|
+
|
|
10
|
+
```rbs
|
|
11
|
+
class C
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class D = C # ::D is an alias for ::C
|
|
15
|
+
|
|
16
|
+
class E < D # ::E inherits from ::D, which is actually ::C
|
|
17
|
+
end
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Note that module/class aliases cannot be recursive.
|
|
21
|
+
|
|
22
|
+
So, we can define a *normalization* of aliased module/class names.
|
|
23
|
+
Normalization follows the chain of alias definitions and resolves them to the original module/class defined with `module`/`class` syntax.
|
|
24
|
+
|
|
25
|
+
```rbs
|
|
26
|
+
class C
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class D = C
|
|
30
|
+
class E = D
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`::E` is defined as an alias, and it can be normalized to `::C`.
|
|
34
|
+
|
|
35
|
+
## Type alias
|
|
36
|
+
|
|
37
|
+
The biggest difference from module/class alias is that type alias can be recursive.
|
|
38
|
+
|
|
39
|
+
```rbs
|
|
40
|
+
# cons_cell type is defined recursively
|
|
41
|
+
type cons_cell = nil
|
|
42
|
+
| [Integer, cons_cell]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This means type aliases *cannot be* normalized generally.
|
|
46
|
+
So, we provide another operation for type alias, `DefinitionBuilder#expand_alias` and its family.
|
|
47
|
+
It substitutes with the immediate right hand side of a type alias.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
cons_cell ===> nil | [Integer, cons_cell] (expand 1 step)
|
|
51
|
+
===> nil | [Integer, nil | [Integer, cons_cell]] (expand 2 steps)
|
|
52
|
+
===> ... (expand will go infinitely)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Note that the namespace of a type alias *can be* normalized, because they are module names.
|
|
56
|
+
|
|
57
|
+
```rbs
|
|
58
|
+
module M
|
|
59
|
+
type t = String
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
module N = M
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
With the type definition above, a type `::N::t` can be normalized to `::M::t`.
|
|
66
|
+
And then it can be expanded to `::String`.
|
|
67
|
+
|
|
68
|
+
> [!NOTE]
|
|
69
|
+
> This is something like an *unfold* operation in type theory.
|
|
70
|
+
|
|
71
|
+
## Type name resolution
|
|
72
|
+
|
|
73
|
+
Type name resolution in RBS usually rewrites *relative* type names to *absolute* type names.
|
|
74
|
+
`Environment#resolve_type_names` converts all type names in the RBS type definitions, and returns a new `Environment` object.
|
|
75
|
+
|
|
76
|
+
It also *normalizes* modules names in type names.
|
|
77
|
+
|
|
78
|
+
- If the type name can be resolved and normalized successfully, the AST has *absolute* type names.
|
|
79
|
+
- If the type name resolution/normalization fails, the AST has *relative* type names.
|