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
data/sig/diff.rbs
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Diff
|
|
3
|
+
@type_name: TypeName
|
|
4
|
+
@library_options: RBS::CLI::LibraryOptions
|
|
5
|
+
@after_path: Array[String]
|
|
6
|
+
@before_path: Array[String]
|
|
7
|
+
@detail: boolish
|
|
8
|
+
|
|
9
|
+
def initialize: (
|
|
10
|
+
type_name: TypeName,
|
|
11
|
+
library_options: RBS::CLI::LibraryOptions,
|
|
12
|
+
?after_path: Array[String],
|
|
13
|
+
?before_path: Array[String],
|
|
14
|
+
?detail: boolish
|
|
15
|
+
) -> void
|
|
16
|
+
|
|
17
|
+
def each_diff: () { (String before, String after) -> void } -> void
|
|
18
|
+
|
|
19
|
+
private def each_diff_by: (Symbol kind, Hash[::Symbol, Definition::Method] before_methods, Hash[::Symbol, Definition::Method] after_methods) { (String before, String after) -> void } -> void
|
|
20
|
+
private def build_methods: (Array[String] path) -> [ Hash[::Symbol, Definition::Method], Hash[::Symbol, Definition::Method] , Hash[Symbol, Constant]]
|
|
21
|
+
private def build_env: (Array[String] path) -> Environment
|
|
22
|
+
private def build_builder: (Environment env) -> DefinitionBuilder
|
|
23
|
+
private def definition_method_to_s: (Symbol key, Symbol kind, Definition::Method definition_method) -> String?
|
|
24
|
+
private def each_diff_methods: (Symbol kind, Hash[Symbol, Definition::Method], Hash[Symbol, Definition::Method]) { (String before, String after) -> void } -> void
|
|
25
|
+
private def each_diff_constants: (Hash[Symbol, Constant] before_constants, Hash[Symbol, Constant] after_constants) { (String before, String after) -> void } -> void
|
|
26
|
+
private def constant_to_s: (Constant?) -> String
|
|
27
|
+
end
|
|
28
|
+
end
|
data/sig/directives.rbs
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
module AST
|
|
3
|
+
module Directives
|
|
4
|
+
type t = Use | ResolveTypeNames
|
|
5
|
+
|
|
6
|
+
class Base
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# ```
|
|
10
|
+
# use Foo, Foo::Bar as FBar, Foo:Baz::*
|
|
11
|
+
# ```
|
|
12
|
+
#
|
|
13
|
+
class Use < Base
|
|
14
|
+
type clause = SingleClause | WildcardClause
|
|
15
|
+
|
|
16
|
+
class SingleClause
|
|
17
|
+
# Foo::Bar
|
|
18
|
+
# ^^^^^^^^ type_name
|
|
19
|
+
#
|
|
20
|
+
# Foo::Bar as X
|
|
21
|
+
# ^^ keyword
|
|
22
|
+
# ^ new_name
|
|
23
|
+
#
|
|
24
|
+
type loc = Location[:type_name, :keyword | :new_name]
|
|
25
|
+
|
|
26
|
+
attr_reader type_name: TypeName
|
|
27
|
+
|
|
28
|
+
attr_reader new_name: Symbol?
|
|
29
|
+
|
|
30
|
+
attr_reader location: loc?
|
|
31
|
+
|
|
32
|
+
def initialize: (type_name: TypeName, new_name: Symbol?, location: loc?) -> void
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
class WildcardClause
|
|
36
|
+
# Foo::Bar::*
|
|
37
|
+
# ^^^^^^^^^^ namespace
|
|
38
|
+
# ^ star
|
|
39
|
+
#
|
|
40
|
+
type loc = Location[:namespace | :star, bot]
|
|
41
|
+
|
|
42
|
+
attr_reader namespace: Namespace
|
|
43
|
+
|
|
44
|
+
attr_reader location: loc?
|
|
45
|
+
|
|
46
|
+
def initialize: (namespace: Namespace, location: loc?) -> void
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# use Foo
|
|
50
|
+
# ^^^ keyword
|
|
51
|
+
type loc = Location[:keyword, bot]
|
|
52
|
+
|
|
53
|
+
attr_reader clauses: Array[clause]
|
|
54
|
+
|
|
55
|
+
attr_reader location: loc?
|
|
56
|
+
|
|
57
|
+
def initialize: (clauses: Array[clause], location: loc?) -> void
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class ResolveTypeNames < Base
|
|
61
|
+
# ```
|
|
62
|
+
# # resolve-type-names: false
|
|
63
|
+
# ^^^^^^^^^^^^^^^^^^ keyword
|
|
64
|
+
# ^ colon
|
|
65
|
+
# ^^^^^ value
|
|
66
|
+
# ```
|
|
67
|
+
type loc = Location[:keyword | :colon | :value, bot]
|
|
68
|
+
|
|
69
|
+
attr_reader location: loc?
|
|
70
|
+
|
|
71
|
+
attr_reader value: bool
|
|
72
|
+
|
|
73
|
+
def initialize: (value: bool, location: loc?) -> void
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Environment
|
|
3
|
+
# Represents a class entry in the environment
|
|
4
|
+
#
|
|
5
|
+
# ```rb
|
|
6
|
+
# entry = ClassEntry.new(TypeName.parse("::String"))
|
|
7
|
+
# entry << [nil, declaration]
|
|
8
|
+
# entry << [[nil, TypeName.parse("::Kernel")], declaration]
|
|
9
|
+
# ```
|
|
10
|
+
class ClassEntry
|
|
11
|
+
attr_reader name: TypeName
|
|
12
|
+
|
|
13
|
+
type declaration = AST::Declarations::Class | AST::Ruby::Declarations::ClassDecl
|
|
14
|
+
|
|
15
|
+
type context_decl = [Resolver::context, declaration]
|
|
16
|
+
|
|
17
|
+
attr_reader context_decls: Array[context_decl]
|
|
18
|
+
|
|
19
|
+
@primary_decl: declaration?
|
|
20
|
+
|
|
21
|
+
def initialize: (TypeName) -> void
|
|
22
|
+
|
|
23
|
+
def <<: (context_decl) -> self
|
|
24
|
+
|
|
25
|
+
def each_decl: { (declaration) -> void } -> void
|
|
26
|
+
| () -> Enumerator[declaration]
|
|
27
|
+
|
|
28
|
+
# Returns true if the entry doesn't have any declaration
|
|
29
|
+
#
|
|
30
|
+
def empty?: () -> bool
|
|
31
|
+
|
|
32
|
+
# Find the *primary* declaration of the class
|
|
33
|
+
#
|
|
34
|
+
# * Returns the first declaration with super class
|
|
35
|
+
# * Returns the first declaration if the declaration doesn't have super class
|
|
36
|
+
#
|
|
37
|
+
%a{pure} def primary_decl: () -> declaration
|
|
38
|
+
|
|
39
|
+
# Returns the generics declaration
|
|
40
|
+
#
|
|
41
|
+
def type_params: () -> Array[AST::TypeParam]
|
|
42
|
+
|
|
43
|
+
# Confirms if the type parameters in the declaration are compatible
|
|
44
|
+
#
|
|
45
|
+
# * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
|
|
46
|
+
#
|
|
47
|
+
def validate_type_params: () -> void
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Environment
|
|
3
|
+
# Represents a class entry in the environment
|
|
4
|
+
#
|
|
5
|
+
# ```rb
|
|
6
|
+
# entry = ModuleEntry.new(TypeName.parse("::Kernel"))
|
|
7
|
+
# entry << [nil, declaration]
|
|
8
|
+
# entry << [[nil, TypeName.parse("::Object")], declaration]
|
|
9
|
+
# ```
|
|
10
|
+
#
|
|
11
|
+
class ModuleEntry
|
|
12
|
+
attr_reader name: TypeName
|
|
13
|
+
|
|
14
|
+
type declaration = AST::Declarations::Module | AST::Ruby::Declarations::ModuleDecl
|
|
15
|
+
|
|
16
|
+
type context_decl = [Resolver::context, declaration]
|
|
17
|
+
|
|
18
|
+
attr_reader context_decls: Array[context_decl]
|
|
19
|
+
|
|
20
|
+
def initialize: (TypeName) -> void
|
|
21
|
+
|
|
22
|
+
def <<: (context_decl) -> self
|
|
23
|
+
|
|
24
|
+
def each_decl: { (declaration) -> void } -> void
|
|
25
|
+
| () -> Enumerator[declaration]
|
|
26
|
+
|
|
27
|
+
# Returns true if the entry doesn't have any declaration
|
|
28
|
+
#
|
|
29
|
+
def empty?: () -> bool
|
|
30
|
+
|
|
31
|
+
# Returns the first declaration
|
|
32
|
+
#
|
|
33
|
+
# This method helps using the class with `ClassEntry` objects.
|
|
34
|
+
#
|
|
35
|
+
def primary_decl: () -> declaration
|
|
36
|
+
|
|
37
|
+
# Returns the generics declaration
|
|
38
|
+
#
|
|
39
|
+
def type_params: () -> Array[AST::TypeParam]
|
|
40
|
+
|
|
41
|
+
# Confirms if the type parameters in the declaration are compatible
|
|
42
|
+
#
|
|
43
|
+
# * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
|
|
44
|
+
#
|
|
45
|
+
def validate_type_params: () -> void
|
|
46
|
+
|
|
47
|
+
def self_types: () -> Array[AST::Declarations::Module::Self]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/sig/environment.rbs
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
class Environment
|
|
3
|
+
type module_decl = AST::Declarations::Class | AST::Declarations::Module
|
|
4
|
+
|
|
5
|
+
# Name of object, it's (single) declaration, and the outer module declarations
|
|
6
|
+
#
|
|
7
|
+
class SingleEntry[N, D]
|
|
8
|
+
attr_reader name: N
|
|
9
|
+
attr_reader decl: D
|
|
10
|
+
attr_reader context: Resolver::context
|
|
11
|
+
|
|
12
|
+
def initialize: (name: N, decl: D, context: Resolver::context) -> void
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class InterfaceEntry < SingleEntry[TypeName, AST::Declarations::Interface]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class TypeAliasEntry < SingleEntry[TypeName, AST::Declarations::TypeAlias]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant | AST::Ruby::Declarations::ConstantDecl]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class GlobalEntry < SingleEntry[Symbol, AST::Declarations::Global]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Top level declarations
|
|
34
|
+
def declarations: () -> Array[AST::Ruby::Declarations::t | AST::Declarations::t]
|
|
35
|
+
|
|
36
|
+
# Array of source objects loaded in the environment
|
|
37
|
+
#
|
|
38
|
+
attr_reader sources: Array[Source::t]
|
|
39
|
+
|
|
40
|
+
# Class declarations
|
|
41
|
+
attr_reader class_decls: Hash[TypeName, ModuleEntry | ClassEntry]
|
|
42
|
+
|
|
43
|
+
attr_reader class_alias_decls: Hash[TypeName, ModuleAliasEntry | ClassAliasEntry]
|
|
44
|
+
|
|
45
|
+
# Interface declarations
|
|
46
|
+
attr_reader interface_decls: Hash[TypeName, InterfaceEntry]
|
|
47
|
+
|
|
48
|
+
# Type alias declarations
|
|
49
|
+
attr_reader type_alias_decls: Hash[TypeName, TypeAliasEntry]
|
|
50
|
+
|
|
51
|
+
# Constant declarations
|
|
52
|
+
attr_reader constant_decls: Hash[TypeName, ConstantEntry]
|
|
53
|
+
|
|
54
|
+
# Global declarations
|
|
55
|
+
attr_reader global_decls: Hash[Symbol, GlobalEntry]
|
|
56
|
+
|
|
57
|
+
def initialize: () -> void
|
|
58
|
+
|
|
59
|
+
def initialize_copy: (Environment) -> void
|
|
60
|
+
|
|
61
|
+
# Construct an environment from EnvironmentLoader
|
|
62
|
+
#
|
|
63
|
+
def self.from_loader: (EnvironmentLoader) -> Environment
|
|
64
|
+
|
|
65
|
+
def add_source: (Source::t) -> void
|
|
66
|
+
|
|
67
|
+
def each_rbs_source: () { (Source::RBS) -> void } -> void
|
|
68
|
+
| () -> Enumerator[Source::RBS]
|
|
69
|
+
|
|
70
|
+
def each_ruby_source: () { (Source::Ruby) -> void } -> void
|
|
71
|
+
| () -> Enumerator[Source::Ruby]
|
|
72
|
+
|
|
73
|
+
# Insert a declaration into the environment
|
|
74
|
+
#
|
|
75
|
+
private def insert_rbs_decl: (AST::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
|
|
76
|
+
|
|
77
|
+
# Insert a declaration into the environment
|
|
78
|
+
#
|
|
79
|
+
private def insert_ruby_decl: (AST::Ruby::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
|
|
80
|
+
|
|
81
|
+
# Resolve all type names in the environment to absolute type names.
|
|
82
|
+
# Relative type name will be left if absolute type name cannot be found.
|
|
83
|
+
#
|
|
84
|
+
# When `only` is given, it skips other _top-level_ declarations not included in the collection.
|
|
85
|
+
# This helps running resolution faster in the case of _partial updates_.
|
|
86
|
+
#
|
|
87
|
+
def resolve_type_names: (?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?) -> Environment
|
|
88
|
+
|
|
89
|
+
def resolve_signature: (
|
|
90
|
+
Resolver::TypeNameResolver,
|
|
91
|
+
UseMap::Table,
|
|
92
|
+
Array[AST::Directives::t],
|
|
93
|
+
Array[AST::Declarations::t],
|
|
94
|
+
?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?
|
|
95
|
+
) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
|
|
96
|
+
|
|
97
|
+
def inspect: () -> String
|
|
98
|
+
|
|
99
|
+
def buffers: () -> Array[Buffer]
|
|
100
|
+
|
|
101
|
+
# Remove declarations and directives that are loaded from `buffers`
|
|
102
|
+
#
|
|
103
|
+
def unload: (Set[Pathname] paths) -> Environment
|
|
104
|
+
| %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
|
|
105
|
+
|
|
106
|
+
# Returns true if an interface with the type name is defined
|
|
107
|
+
#
|
|
108
|
+
def interface_name?: (TypeName) -> bool
|
|
109
|
+
|
|
110
|
+
# Returns true if a type alias with the type name is defined
|
|
111
|
+
#
|
|
112
|
+
def type_alias_name?: (TypeName) -> bool
|
|
113
|
+
|
|
114
|
+
# Returns true if a module or class with the type name is defined
|
|
115
|
+
#
|
|
116
|
+
def module_name?: (TypeName) -> bool
|
|
117
|
+
|
|
118
|
+
# Returns true if the type name is defined
|
|
119
|
+
#
|
|
120
|
+
def type_name?: (TypeName) -> bool
|
|
121
|
+
|
|
122
|
+
# Returns if a constant of the name is defined
|
|
123
|
+
#
|
|
124
|
+
def constant_name?: (TypeName) -> bool
|
|
125
|
+
|
|
126
|
+
# Returns true if the type name is defined by constant declaration
|
|
127
|
+
#
|
|
128
|
+
def constant_decl?: (TypeName) -> bool
|
|
129
|
+
|
|
130
|
+
# Returns true if the type name is defined by class declaration
|
|
131
|
+
#
|
|
132
|
+
def class_decl?: (TypeName) -> bool
|
|
133
|
+
|
|
134
|
+
# Returns true if the type name is defined by module declaration
|
|
135
|
+
#
|
|
136
|
+
def module_decl?: (TypeName) -> bool
|
|
137
|
+
|
|
138
|
+
# Returns true if the type name is a module alias
|
|
139
|
+
#
|
|
140
|
+
def module_alias?: (TypeName) -> bool
|
|
141
|
+
|
|
142
|
+
# Returns true if the type name is a class alias
|
|
143
|
+
def class_alias?: (TypeName) -> bool
|
|
144
|
+
|
|
145
|
+
# Returns the entry for the class name
|
|
146
|
+
#
|
|
147
|
+
# Returns `nil` when:
|
|
148
|
+
#
|
|
149
|
+
# * The type name is not found
|
|
150
|
+
# * The type name is not a class
|
|
151
|
+
#
|
|
152
|
+
# It normalizes when `normalized: true` is given -- returns `ClassEntry` or `nil`.
|
|
153
|
+
#
|
|
154
|
+
def class_entry: (TypeName, normalized: true) -> ClassEntry?
|
|
155
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | nil)
|
|
156
|
+
|
|
157
|
+
# Returns ClassEntry if the class definition is found, normalized in case of alias
|
|
158
|
+
#
|
|
159
|
+
%a{deprecated: Use `class_entry(type_name, normalized: true)` instead. }
|
|
160
|
+
def normalized_class_entry: (TypeName) -> ClassEntry?
|
|
161
|
+
|
|
162
|
+
# Returns the entry for the module name
|
|
163
|
+
#
|
|
164
|
+
# Returns `nil` when:
|
|
165
|
+
#
|
|
166
|
+
# * The type name is not found
|
|
167
|
+
# * The type name is not a module
|
|
168
|
+
#
|
|
169
|
+
# It normalizes when `normalized: true` is given -- returns `ModuleEntry` or `nil`.
|
|
170
|
+
#
|
|
171
|
+
def module_entry: (TypeName, normalized: true) -> ModuleEntry?
|
|
172
|
+
| (TypeName, ?normalized: bool) -> (ModuleEntry | ModuleAliasEntry | nil)
|
|
173
|
+
|
|
174
|
+
# Returns ModuleEntry if the module definition is found, normalized in case of alias
|
|
175
|
+
#
|
|
176
|
+
%a{deprecated: Use `module_entry(type_name, normalized: true)` instead. }
|
|
177
|
+
def normalized_module_entry: (TypeName) -> ModuleEntry?
|
|
178
|
+
|
|
179
|
+
# Returns the entry for the type name
|
|
180
|
+
#
|
|
181
|
+
# The entry is one of ClassEntry, ModuleEntry, ConstantEntry, ClassAliasEntry, or ModuleAliasEntry.
|
|
182
|
+
# When `normalized: true` is given, it returns normalized entry -- one of ClassEntry, ModuleEntry, or ConstantEntry.
|
|
183
|
+
#
|
|
184
|
+
# Returns `nil` if not found.
|
|
185
|
+
#
|
|
186
|
+
def constant_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | ConstantEntry | nil)
|
|
187
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | ConstantEntry | nil)
|
|
188
|
+
|
|
189
|
+
# Returns ClassEntry or ModuleEntry if the class/module definition is found
|
|
190
|
+
#
|
|
191
|
+
# Normalizes when `normalized: true` is given.
|
|
192
|
+
#
|
|
193
|
+
def module_class_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | nil)
|
|
194
|
+
| (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | nil)
|
|
195
|
+
|
|
196
|
+
%a{deprecated: Use `module_class_entry(type_name, normalized: true)` instead. }
|
|
197
|
+
def normalized_module_class_entry: (TypeName) -> (ClassEntry | ModuleEntry | nil)
|
|
198
|
+
|
|
199
|
+
@normalize_module_name_cache: Hash[TypeName, TypeName | false | nil]
|
|
200
|
+
|
|
201
|
+
# Returns the original module name that is defined with `module` declaration
|
|
202
|
+
#
|
|
203
|
+
# * Calls `#absolute!` for relative module names
|
|
204
|
+
# * Returns `nil` if the rhs name cannot be found
|
|
205
|
+
# * Returns `false` if the name is cyclic
|
|
206
|
+
#
|
|
207
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
208
|
+
#
|
|
209
|
+
def normalize_module_name?: (TypeName) -> (TypeName | nil | false)
|
|
210
|
+
|
|
211
|
+
# Returns the original module name that is defined with `module`/`class` declaration
|
|
212
|
+
#
|
|
213
|
+
# * Raises an error if given type name is not module/class
|
|
214
|
+
# * Calls `#absolute!` for relative module names
|
|
215
|
+
# * Returns the name itself if the name cannot be normalized to a class/module
|
|
216
|
+
#
|
|
217
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
218
|
+
#
|
|
219
|
+
def normalize_module_name: (TypeName) -> TypeName
|
|
220
|
+
|
|
221
|
+
# Returns the original module name that is defined with `module`/`class` declaration
|
|
222
|
+
#
|
|
223
|
+
# * Raises an error if given type name is not a module/class
|
|
224
|
+
def normalize_module_name!: (TypeName) -> TypeName
|
|
225
|
+
|
|
226
|
+
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
227
|
+
#
|
|
228
|
+
# * Calls `#absolute!` for relative module names
|
|
229
|
+
# * Returns `nil` if the typename cannot be found
|
|
230
|
+
# * Returns `false` if the name is cyclic
|
|
231
|
+
#
|
|
232
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
233
|
+
#
|
|
234
|
+
def normalize_type_name?: (TypeName) -> (TypeName | nil | false)
|
|
235
|
+
|
|
236
|
+
# Normalize the type name or raises an error
|
|
237
|
+
#
|
|
238
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
239
|
+
#
|
|
240
|
+
def normalize_type_name!: (TypeName) -> TypeName
|
|
241
|
+
|
|
242
|
+
# Returns a normalized module/class name or a type name with a normalized namespace
|
|
243
|
+
#
|
|
244
|
+
# * Calls `#absolute!` for relative module names
|
|
245
|
+
# * Returns the typename itself if the name cannot be normalized
|
|
246
|
+
#
|
|
247
|
+
# Note that this method assumes the declarations have resolved type names.
|
|
248
|
+
#
|
|
249
|
+
def normalize_type_name: (TypeName) -> TypeName
|
|
250
|
+
|
|
251
|
+
# Returns `true` if given type name is normalized
|
|
252
|
+
#
|
|
253
|
+
def normalized_type_name?: (TypeName) -> bool
|
|
254
|
+
|
|
255
|
+
# Returns the given type name if it's normalized, or raises
|
|
256
|
+
#
|
|
257
|
+
def normalized_type_name!: (TypeName) -> TypeName
|
|
258
|
+
|
|
259
|
+
# Runs generics type params validation over each class definitions
|
|
260
|
+
def validate_type_params: () -> void
|
|
261
|
+
|
|
262
|
+
private
|
|
263
|
+
|
|
264
|
+
# Returns a context for inside given decls
|
|
265
|
+
#
|
|
266
|
+
def resolver_context: (*module_decl) -> Resolver::context
|
|
267
|
+
|
|
268
|
+
def append_context: (Resolver::context, module_decl) -> Resolver::context
|
|
269
|
+
|
|
270
|
+
def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl, context: Resolver::context, prefix: Namespace) -> AST::Declarations::t
|
|
271
|
+
|
|
272
|
+
def resolve_member: (Resolver::TypeNameResolver, UseMap map, AST::Members::t, context: Resolver::context) -> AST::Members::t
|
|
273
|
+
|
|
274
|
+
def resolve_method_type: (Resolver::TypeNameResolver, UseMap map, RBS::MethodType, context: Resolver::context) -> RBS::MethodType
|
|
275
|
+
|
|
276
|
+
def resolve_type_params: (Resolver::TypeNameResolver resolver, UseMap map, Array[AST::TypeParam], context: Resolver::context) -> Array[AST::TypeParam]
|
|
277
|
+
|
|
278
|
+
def resolve_ruby_decl: (Resolver::TypeNameResolver, AST::Ruby::Declarations::t, context: Resolver::context, prefix: Namespace) -> AST::Ruby::Declarations::t
|
|
279
|
+
|
|
280
|
+
def resolve_ruby_member: (Resolver::TypeNameResolver, AST::Ruby::Members::t, context: Resolver::context) -> AST::Ruby::Members::t
|
|
281
|
+
|
|
282
|
+
def absolute_type: (Resolver::TypeNameResolver, UseMap? map, Types::t, context: Resolver::context) -> Types::t
|
|
283
|
+
|
|
284
|
+
def absolute_type_name: (Resolver::TypeNameResolver, UseMap? map, TypeName, context: Resolver::context) -> TypeName
|
|
285
|
+
end
|
|
286
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
# EnvironmentLoader is an object to load RBS files from filesystem.
|
|
3
|
+
#
|
|
4
|
+
# Set up your configuration through repository and `#add` method.
|
|
5
|
+
#
|
|
6
|
+
# ```ruby
|
|
7
|
+
# # Set up the repository to load library RBSs from.
|
|
8
|
+
# repo = RBS::Repository.default
|
|
9
|
+
# repo.add(Pathname("vendor/rbs/gem-rbs"))
|
|
10
|
+
# repo.add(Pathname("vendor/rbs/internal-rbs"))
|
|
11
|
+
#
|
|
12
|
+
# loader = RBS::EnvironmentLoader.new(repository: repo)
|
|
13
|
+
#
|
|
14
|
+
# # Add libraries to load RBS files.
|
|
15
|
+
# loader.add(library: "minitest")
|
|
16
|
+
# loader.add(library: "rbs", version: "1.0.0")
|
|
17
|
+
#
|
|
18
|
+
# # Add dirs to load RBS files from.
|
|
19
|
+
# loader.add(path: Pathname("sig"))
|
|
20
|
+
#
|
|
21
|
+
# # Load RBSs into an environment.
|
|
22
|
+
# environment = RBS::Environment.new()
|
|
23
|
+
# loader.load(env: environment)
|
|
24
|
+
# ```
|
|
25
|
+
#
|
|
26
|
+
class EnvironmentLoader
|
|
27
|
+
class UnknownLibraryError < StandardError
|
|
28
|
+
attr_reader library: Library
|
|
29
|
+
|
|
30
|
+
def initialize: (lib: Library) -> void
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class Library
|
|
34
|
+
attr_reader name: String
|
|
35
|
+
attr_reader version: String?
|
|
36
|
+
|
|
37
|
+
def initialize: (name: String, version: String?) -> void
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
include FileFinder
|
|
41
|
+
|
|
42
|
+
DEFAULT_CORE_ROOT: Pathname
|
|
43
|
+
|
|
44
|
+
attr_reader core_root: Pathname?
|
|
45
|
+
attr_reader repository: Repository
|
|
46
|
+
|
|
47
|
+
attr_reader libs: Set[Library]
|
|
48
|
+
attr_reader dirs: Array[Pathname]
|
|
49
|
+
|
|
50
|
+
# The source where the RBS comes from.
|
|
51
|
+
#
|
|
52
|
+
# `:core` means it is part of core library.
|
|
53
|
+
# `Library` means it is from library.
|
|
54
|
+
# `Pathname` means it is loaded from a directory.
|
|
55
|
+
#
|
|
56
|
+
type source = :core
|
|
57
|
+
| Library
|
|
58
|
+
| Pathname
|
|
59
|
+
|
|
60
|
+
# Accepts two optional keyword arguments.
|
|
61
|
+
#
|
|
62
|
+
# `core_root` is the path to the directory with RBSs for core classes.
|
|
63
|
+
# The default value is the core library included in RBS gem. (EnvironmentLoader::DEFAULT_CORE_ROOT)
|
|
64
|
+
# Passing `nil` means it skips loading core class definitions.
|
|
65
|
+
#
|
|
66
|
+
# `repository` is the repository for library classes.
|
|
67
|
+
# The default value is repository only with stdlib classes. (Repository.new)
|
|
68
|
+
#
|
|
69
|
+
def initialize: (?core_root: Pathname?, ?repository: Repository) -> void
|
|
70
|
+
|
|
71
|
+
# Add a path or library to load RBSs from.
|
|
72
|
+
#
|
|
73
|
+
# `path` can be a file or a directory.
|
|
74
|
+
# All `.rbs` files from the given directory will be loaded.
|
|
75
|
+
# Specifying a file will load the file regardless the extension of the file is.
|
|
76
|
+
#
|
|
77
|
+
# `library` can be a name of a gem.
|
|
78
|
+
# Specifying `nil` to `version` will load any version available.
|
|
79
|
+
# It first tries to load RBS files from gem with specified version.
|
|
80
|
+
# If RBS files cannot be found in the gem, it tries to load RBSs from repository.
|
|
81
|
+
#
|
|
82
|
+
def add: (path: Pathname) -> void
|
|
83
|
+
| (library: String, version: String?, ?resolve_dependencies: boolish) -> void
|
|
84
|
+
|
|
85
|
+
def resolve_dependencies: (library: String, version: String?) -> void
|
|
86
|
+
|
|
87
|
+
# Add repository path and libraries via rbs_collection.lock.yaml.
|
|
88
|
+
def add_collection: (Collection::Config::Lockfile lockfile) -> void
|
|
89
|
+
|
|
90
|
+
# This is helper function to test if RBS for a library is available or not.
|
|
91
|
+
#
|
|
92
|
+
def has_library?: (library: String, version: String?) -> bool
|
|
93
|
+
|
|
94
|
+
# Add all declarations to environment.
|
|
95
|
+
#
|
|
96
|
+
# Raises `UnknownLibraryError` if RBS cannot be loaded from a library.
|
|
97
|
+
#
|
|
98
|
+
# Returns an array of tuples of the declaration, path to the file, and the source.
|
|
99
|
+
#
|
|
100
|
+
def load: (env: Environment) -> Array[[AST::Declarations::t, Pathname, source]]
|
|
101
|
+
|
|
102
|
+
# Returns a pair of spec and path for a gem with RBS.
|
|
103
|
+
# Returns nil if the gem is not installed, or the gem doesn't provide RBS.
|
|
104
|
+
#
|
|
105
|
+
def self.gem_sig_path: (String name, String? version) -> [Gem::Specification, Pathname]?
|
|
106
|
+
|
|
107
|
+
def each_signature: () { (source, Pathname, Buffer, Array[AST::Declarations::t], Array[AST::Directives::t]) -> void } -> void
|
|
108
|
+
|
|
109
|
+
def each_dir: { (source, Pathname) -> void } -> void
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
module RBS
|
|
2
|
+
# EnvironmentWalker provides topological sort of class/module definitions.
|
|
3
|
+
#
|
|
4
|
+
# If a method, attribute, or ancestor in a class definition have a reference to another class, it is dependency.
|
|
5
|
+
#
|
|
6
|
+
# ```rb
|
|
7
|
+
# walker = EnvironmentWalker.new(env: env)
|
|
8
|
+
#
|
|
9
|
+
# walker.each_strongly_connected_component do |scc|
|
|
10
|
+
# # Yields an array of strongly connected components.
|
|
11
|
+
# end
|
|
12
|
+
# ```
|
|
13
|
+
#
|
|
14
|
+
# The `#only_ancestors!` method limits the dependency only to ancestors.
|
|
15
|
+
# Only super classes and included modules are dependencies with the option.
|
|
16
|
+
# This is useful to calculate the dependencies of class hierarchy.
|
|
17
|
+
#
|
|
18
|
+
# ```rb
|
|
19
|
+
# walker = EnvironmentWalker.new(env: env).only_ancestors!
|
|
20
|
+
#
|
|
21
|
+
# walker.each_strongly_connected_component do |scc|
|
|
22
|
+
# # Yields an array of strongly connected components.
|
|
23
|
+
# end
|
|
24
|
+
# ```
|
|
25
|
+
#
|
|
26
|
+
class EnvironmentWalker
|
|
27
|
+
class InstanceNode
|
|
28
|
+
attr_reader type_name: TypeName
|
|
29
|
+
def initialize: (type_name: TypeName) -> void
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class SingletonNode
|
|
33
|
+
attr_reader type_name: TypeName
|
|
34
|
+
def initialize: (type_name: TypeName) -> void
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class TypeNameNode
|
|
38
|
+
attr_reader type_name: TypeName
|
|
39
|
+
def initialize: (type_name: TypeName) -> void
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
attr_reader env: Environment
|
|
43
|
+
attr_reader only_ancestors: bool
|
|
44
|
+
attr_reader builder: DefinitionBuilder
|
|
45
|
+
|
|
46
|
+
def initialize: (env: Environment) -> void
|
|
47
|
+
|
|
48
|
+
def only_ancestors!: (?bool only) -> self
|
|
49
|
+
|
|
50
|
+
def only_ancestors?: () -> bool
|
|
51
|
+
|
|
52
|
+
type node = InstanceNode | SingletonNode | TypeNameNode
|
|
53
|
+
include TSort[node]
|
|
54
|
+
|
|
55
|
+
def tsort_each_node: () { (node) -> void } -> void
|
|
56
|
+
|
|
57
|
+
def tsort_each_child: (node) { (node) -> void } -> void
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
def each_type_name: (Types::t) { (TypeName) -> void } -> void
|
|
62
|
+
|
|
63
|
+
def each_type_node: (Types::t) { (node) -> void } -> void
|
|
64
|
+
end
|
|
65
|
+
end
|