rbs-relaxed 3.9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- metadata +532 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
module RBS
|
2
|
+
module Prototype
|
3
|
+
class RB
|
4
|
+
include Helpers
|
5
|
+
|
6
|
+
class Context
|
7
|
+
type method_kind = :singleton | :singleton_instance | :instance
|
8
|
+
|
9
|
+
attr_accessor module_function: bool
|
10
|
+
|
11
|
+
attr_accessor singleton: bool
|
12
|
+
|
13
|
+
attr_accessor namespace: Namespace
|
14
|
+
|
15
|
+
attr_accessor in_def: bool
|
16
|
+
|
17
|
+
def initialize: (module_function: bool, singleton: bool, namespace: Namespace, in_def: bool) -> void
|
18
|
+
|
19
|
+
def method_kind: () -> method_kind
|
20
|
+
|
21
|
+
def attribute_kind: () -> (:singleton | :instance)
|
22
|
+
|
23
|
+
def enter_namespace: (Namespace) -> Context
|
24
|
+
|
25
|
+
def update: (?module_function: bool, ?singleton: bool, ?in_def: bool) -> Context
|
26
|
+
|
27
|
+
def self.initial: (?namespace: Namespace) -> Context
|
28
|
+
end
|
29
|
+
|
30
|
+
type decl = AST::Declarations::t | AST::Members::t
|
31
|
+
|
32
|
+
attr_reader source_decls: Array[decl]
|
33
|
+
|
34
|
+
def initialize: () -> void
|
35
|
+
|
36
|
+
def decls: () -> Array[AST::Declarations::t]
|
37
|
+
|
38
|
+
def parse: (String) -> void
|
39
|
+
|
40
|
+
def process: (untyped node, decls: Array[AST::Declarations::t | AST::Members::t], comments: Hash[Integer, AST::Comment], context: Context) -> void
|
41
|
+
|
42
|
+
def process_children: (RubyVM::AbstractSyntaxTree::Node node, decls: Array[decl], comments: Hash[Integer, AST::Comment], context: Context) -> void
|
43
|
+
|
44
|
+
# Returns a type name that represents the name of the constant.
|
45
|
+
# `node` must be _constant_ node, `CONST`, `COLON2`, or `COLON3` node.
|
46
|
+
#
|
47
|
+
def const_to_name!: (RubyVM::AbstractSyntaxTree::Node node, ?context: Context?) -> TypeName
|
48
|
+
|
49
|
+
# Returns a type name that represents the name of the constant.
|
50
|
+
# `node` can be `SELF` for `extend self` pattern.
|
51
|
+
#
|
52
|
+
def const_to_name: (RubyVM::AbstractSyntaxTree::Node? node, context: Context) -> TypeName?
|
53
|
+
|
54
|
+
def literal_to_symbol: (RubyVM::AbstractSyntaxTree::Node node) -> Symbol?
|
55
|
+
|
56
|
+
def function_type_from_body: (RubyVM::AbstractSyntaxTree::Node node, Symbol def_name) -> Types::Function
|
57
|
+
|
58
|
+
def function_return_type_from_body: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
|
59
|
+
|
60
|
+
def body_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
|
61
|
+
|
62
|
+
def if_unless_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
|
63
|
+
|
64
|
+
def block_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
|
65
|
+
|
66
|
+
def literal_to_type: (RubyVM::AbstractSyntaxTree::Node node) -> Types::t
|
67
|
+
|
68
|
+
def types_to_union_type: (Array[Types::t] types) -> Types::t
|
69
|
+
|
70
|
+
def range_element_type: (Array[Types::t] types) -> Types::t
|
71
|
+
|
72
|
+
def param_type: (RubyVM::AbstractSyntaxTree::Node node, ?default: Types::Bases::Any) -> Types::t
|
73
|
+
|
74
|
+
# backward compatible
|
75
|
+
alias node_type param_type
|
76
|
+
|
77
|
+
def private: () -> AST::Members::Private
|
78
|
+
|
79
|
+
@private: AST::Members::Private?
|
80
|
+
|
81
|
+
def public: () -> AST::Members::Public
|
82
|
+
|
83
|
+
@public: AST::Members::Public?
|
84
|
+
|
85
|
+
def current_accessibility: (Array[decl] decls, ?Integer index) -> (AST::Members::Private | AST::Members::Public)
|
86
|
+
|
87
|
+
def remove_unnecessary_accessibility_methods!: (Array[decl]) -> void
|
88
|
+
|
89
|
+
def is_accessibility?: (decl) -> bool
|
90
|
+
|
91
|
+
def find_def_index_by_name: (Array[decl] decls, Symbol name) -> [Integer, AST::Members::MethodDefinition | AST::Members::AttrReader | AST::Members::AttrWriter]?
|
92
|
+
|
93
|
+
def sort_members!: (Array[decl] decls) -> void
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module RBS
|
2
|
+
module Prototype
|
3
|
+
class RBI
|
4
|
+
include Helpers
|
5
|
+
|
6
|
+
attr_reader decls: Array[AST::Declarations::t]
|
7
|
+
|
8
|
+
type module_decl = AST::Declarations::Class | AST::Declarations::Module
|
9
|
+
|
10
|
+
# A stack representing the module nesting structure in the Ruby code
|
11
|
+
attr_reader modules: Array[module_decl]
|
12
|
+
|
13
|
+
# Last subsequent `sig` calls
|
14
|
+
attr_reader last_sig: Array[RubyVM::AbstractSyntaxTree::Node]?
|
15
|
+
|
16
|
+
def initialize: () -> void
|
17
|
+
|
18
|
+
def parse: (String) -> void
|
19
|
+
|
20
|
+
def nested_name: (RubyVM::AbstractSyntaxTree::Node name) -> TypeName
|
21
|
+
|
22
|
+
def current_namespace: () -> Namespace
|
23
|
+
|
24
|
+
def push_class: (
|
25
|
+
RubyVM::AbstractSyntaxTree::Node name,
|
26
|
+
RubyVM::AbstractSyntaxTree::Node super_class,
|
27
|
+
comment: AST::Comment?
|
28
|
+
) { () -> void } -> void
|
29
|
+
|
30
|
+
def push_module: (RubyVM::AbstractSyntaxTree::Node name, comment: AST::Comment?) { () -> void } -> void
|
31
|
+
|
32
|
+
# The inner most module/class definition, returns `nil` on toplevel
|
33
|
+
def current_module: () -> module_decl?
|
34
|
+
|
35
|
+
# The inner most module/class definition, raises on toplevel
|
36
|
+
def current_module!: () -> module_decl
|
37
|
+
|
38
|
+
# Put a `sig` call to current list.
|
39
|
+
def push_sig: (RubyVM::AbstractSyntaxTree::Node node) -> void
|
40
|
+
|
41
|
+
# Clear the `sig` call list
|
42
|
+
def pop_sig: () -> Array[RubyVM::AbstractSyntaxTree::Node]?
|
43
|
+
|
44
|
+
def join_comments: (Array[RubyVM::AbstractSyntaxTree::Node] nodes, Hash[Integer, AST::Comment] comments) -> AST::Comment
|
45
|
+
|
46
|
+
def process: (RubyVM::AbstractSyntaxTree::Node node, comments: Hash[Integer, AST::Comment], ?outer: Array[RubyVM::AbstractSyntaxTree::Node]) -> void
|
47
|
+
|
48
|
+
def method_type: (RubyVM::AbstractSyntaxTree::Node? args_node, RubyVM::AbstractSyntaxTree::Node? type_node, variables: Array[AST::TypeParam], overloads: Integer) -> MethodType?
|
49
|
+
|
50
|
+
def parse_params: (RubyVM::AbstractSyntaxTree::Node args_node, RubyVM::AbstractSyntaxTree::Node args, MethodType method_type, variables: Array[AST::TypeParam], overloads: Integer) -> MethodType
|
51
|
+
|
52
|
+
def type_of: (RubyVM::AbstractSyntaxTree::Node type_node, variables: Array[AST::TypeParam]) -> Types::t
|
53
|
+
|
54
|
+
def type_of0: (RubyVM::AbstractSyntaxTree::Node type_node, variables: Array[AST::TypeParam]) -> Types::t
|
55
|
+
|
56
|
+
def proc_type?: (RubyVM::AbstractSyntaxTree::Node type_node) -> bool
|
57
|
+
|
58
|
+
def call_node?: (RubyVM::AbstractSyntaxTree::Node node, name: Symbol, ?receiver: ^(RubyVM::AbstractSyntaxTree::Node) -> bool, ?args: ^(RubyVM::AbstractSyntaxTree::Node) -> bool) -> bool
|
59
|
+
|
60
|
+
# Receives a constant node and returns `TypeName` instance
|
61
|
+
def const_to_name: (RubyVM::AbstractSyntaxTree::Node node) -> TypeName
|
62
|
+
|
63
|
+
# Receives `:ARRAY` or `:LIST` node and yields the child nodes.
|
64
|
+
def each_arg: (RubyVM::AbstractSyntaxTree::Node array) { (RubyVM::AbstractSyntaxTree::Node) -> void } -> void
|
65
|
+
| (RubyVM::AbstractSyntaxTree::Node array) -> Enumerator[RubyVM::AbstractSyntaxTree::Node, void]
|
66
|
+
|
67
|
+
# Receives node and yields the child nodes.
|
68
|
+
def each_child: (RubyVM::AbstractSyntaxTree::Node node) { (RubyVM::AbstractSyntaxTree::Node) -> void } -> void
|
69
|
+
| (RubyVM::AbstractSyntaxTree::Node node) -> Enumerator[RubyVM::AbstractSyntaxTree::Node, void]
|
70
|
+
|
71
|
+
# Receives a keyword `:HASH` node and returns hash instance.
|
72
|
+
def node_to_hash: (RubyVM::AbstractSyntaxTree::Node node) -> Hash[Symbol, RubyVM::AbstractSyntaxTree::Node]?
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,182 @@
|
|
1
|
+
module RBS
|
2
|
+
module Prototype
|
3
|
+
class Runtime
|
4
|
+
module Reflection
|
5
|
+
self.@object_class: UnboundMethod
|
6
|
+
def self.object_class: (Module value) -> Class
|
7
|
+
|
8
|
+
self.@constants_of: UnboundMethod
|
9
|
+
def self.constants_of: (Module mod, ?bool inherit) -> Array[Symbol]
|
10
|
+
end
|
11
|
+
|
12
|
+
module Helpers
|
13
|
+
@module_name_method: UnboundMethod
|
14
|
+
@untyped: Types::Bases::Any
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def const_name: (Module const) -> String?
|
19
|
+
|
20
|
+
def const_name!: (Module const) -> String
|
21
|
+
|
22
|
+
# Returns the exact name & not compactly declared name
|
23
|
+
def only_name: (Module mod) -> String
|
24
|
+
|
25
|
+
def to_type_name: (String name, ?full_name: bool) -> TypeName
|
26
|
+
|
27
|
+
def untyped: () -> Types::Bases::Any
|
28
|
+
end
|
29
|
+
|
30
|
+
class ValueObjectBase
|
31
|
+
include Helpers
|
32
|
+
|
33
|
+
# @target_class stores the singleton object of `Data` or `Struct` subclass
|
34
|
+
@target_class: untyped
|
35
|
+
|
36
|
+
def build_decl: () -> AST::Declarations::Class
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def build_member_accessors: (untyped ast_members_class) -> untyped
|
41
|
+
|
42
|
+
def build_s_members: () -> Array[AST::Members::MethodDefinition]
|
43
|
+
|
44
|
+
def build_super_class: () -> AST::Declarations::Class::Super
|
45
|
+
|
46
|
+
def add_decl_members: (AST::Declarations::Class) -> void
|
47
|
+
|
48
|
+
def initialize: (Class target_class) -> void
|
49
|
+
end
|
50
|
+
|
51
|
+
class StructGenerator < ValueObjectBase
|
52
|
+
def self.generatable?: (Class target) -> bool
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def add_decl_members: (AST::Declarations::Class decl) -> void
|
57
|
+
|
58
|
+
def build_overload_for_keyword_arguments: () -> AST::Members::MethodDefinition::Overload
|
59
|
+
|
60
|
+
def build_overload_for_positional_arguments: () -> AST::Members::MethodDefinition::Overload
|
61
|
+
|
62
|
+
def build_s_keyword_init_p: () -> Array[AST::Members::MethodDefinition]
|
63
|
+
|
64
|
+
def build_s_new: () -> Array[AST::Members::MethodDefinition]
|
65
|
+
|
66
|
+
def build_super_class: () -> AST::Declarations::Class::Super
|
67
|
+
|
68
|
+
CAN_CALL_KEYWORD_INIT_P: bool
|
69
|
+
end
|
70
|
+
|
71
|
+
class DataGenerator < ValueObjectBase
|
72
|
+
def self.generatable?: (Class target) -> bool
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def add_decl_members: (AST::Declarations::Class decl) -> void
|
77
|
+
|
78
|
+
def build_s_new: () -> Array[AST::Members::MethodDefinition]
|
79
|
+
|
80
|
+
def build_super_class: () -> AST::Declarations::Class::Super
|
81
|
+
end
|
82
|
+
|
83
|
+
class Todo
|
84
|
+
@builder: DefinitionBuilder
|
85
|
+
|
86
|
+
@mixin_decls_cache: Hash[TypeName, Array[untyped]]
|
87
|
+
|
88
|
+
def initialize: (builder: DefinitionBuilder) -> void
|
89
|
+
|
90
|
+
def skip_mixin?: (type_name: TypeName, module_name: TypeName, mixin_class: mixin_class) -> bool
|
91
|
+
|
92
|
+
def skip_singleton_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
|
93
|
+
|
94
|
+
def skip_instance_method?: (module_name: TypeName, method: UnboundMethod, accessibility: Definition::accessibility) -> bool
|
95
|
+
|
96
|
+
def skip_constant?: (module_name: String, name: Symbol) -> bool
|
97
|
+
|
98
|
+
private def mixin_decls: (TypeName type_name) -> Array[AST::Members::Include | AST::Members::Extend | AST::Members::Prepend]
|
99
|
+
end
|
100
|
+
|
101
|
+
type mixin_class = singleton(AST::Members::Include) | singleton(AST::Members::Prepend) | singleton(AST::Members::Extend)
|
102
|
+
|
103
|
+
@decls: Array[AST::Declarations::t]?
|
104
|
+
|
105
|
+
@modules: Hash[String, Module]
|
106
|
+
|
107
|
+
@builder: DefinitionBuilder
|
108
|
+
|
109
|
+
@module_name_method: UnboundMethod
|
110
|
+
@object_class: UnboundMethod
|
111
|
+
|
112
|
+
@todo_object: Todo?
|
113
|
+
|
114
|
+
include Helpers
|
115
|
+
|
116
|
+
attr_reader patterns: Array[String]
|
117
|
+
|
118
|
+
attr_reader env: Environment
|
119
|
+
|
120
|
+
attr_reader merge: bool
|
121
|
+
|
122
|
+
attr_reader todo: bool
|
123
|
+
|
124
|
+
attr_accessor outline: bool
|
125
|
+
|
126
|
+
attr_reader owners_included: Array[Module]
|
127
|
+
|
128
|
+
def initialize: (patterns: Array[String], env: Environment, merge: bool, ?todo: bool, ?owners_included: Array[Symbol]) -> void
|
129
|
+
|
130
|
+
def target?: (Module const) -> bool
|
131
|
+
|
132
|
+
def todo_object: () -> Todo?
|
133
|
+
|
134
|
+
def builder: () -> DefinitionBuilder
|
135
|
+
|
136
|
+
def parse: (String file) -> void
|
137
|
+
|
138
|
+
def decls: () -> Array[AST::Declarations::t]
|
139
|
+
|
140
|
+
def each_mixined_module: (TypeName type_name, Module mod) { (TypeName, TypeName, mixin_class) -> void } -> void
|
141
|
+
|
142
|
+
def each_mixined_module_one: (TypeName type_name, Module mod) { (TypeName, TypeName, bool) -> void } -> void
|
143
|
+
|
144
|
+
def method_type: (UnboundMethod method) -> MethodType
|
145
|
+
|
146
|
+
def merge_rbs: [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, singleton: Symbol) { () -> A } -> A?
|
147
|
+
| [A] (TypeName module_name, Array[AST::Declarations::Class::member] members, instance: Symbol) { () -> A } -> A?
|
148
|
+
|
149
|
+
def target_method?: (Module mod, instance: Symbol) -> bool
|
150
|
+
| (Module mod, singleton: Symbol) -> bool
|
151
|
+
|
152
|
+
def generate_methods: (Module mod, TypeName module_name, Array[AST::Declarations::Class::member] members) -> void
|
153
|
+
|
154
|
+
def generate_constants: (Module mod, Array[AST::Declarations::Class::member] decls) -> void
|
155
|
+
|
156
|
+
def generate_super_class: (Class mod) -> AST::Declarations::Class::Super?
|
157
|
+
|
158
|
+
def generate_class: (Class mod) -> void
|
159
|
+
|
160
|
+
def generate_module: (Module mod) -> void
|
161
|
+
|
162
|
+
def generate_mixin: (Module mod, AST::Declarations::Class | AST::Declarations::Module, TypeName, TypeName) -> void
|
163
|
+
|
164
|
+
# Generate/find outer module declarations
|
165
|
+
# This is broken down into another method to comply with `DRY`
|
166
|
+
# This generates/finds declarations in nested form & returns the last array of declarations
|
167
|
+
def ensure_outer_module_declarations: (Module mod) -> Array[AST::Declarations::Class::member]
|
168
|
+
|
169
|
+
def object_class: (untyped) -> untyped
|
170
|
+
|
171
|
+
def type_args: (TypeName type_name) -> Array[Types::t]
|
172
|
+
|
173
|
+
def block_from_ast_of: (UnboundMethod method) -> Types::Block?
|
174
|
+
|
175
|
+
def block_from_body: (RubyVM::AbstractSyntaxTree::Node) -> Types::Block?
|
176
|
+
|
177
|
+
def can_alias?: (Module, UnboundMethod) -> bool
|
178
|
+
|
179
|
+
def type_params: (Module) -> Array[AST::TypeParam]
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
data/sig/rbs.rbs
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module RBS
|
2
|
+
def self.logger: () -> Logger
|
3
|
+
|
4
|
+
def self.logger_level: () -> Integer?
|
5
|
+
|
6
|
+
def self.logger_level=: (Integer?) -> Integer?
|
7
|
+
|
8
|
+
%a{pure} def self.logger_output: () -> IO?
|
9
|
+
|
10
|
+
def self.logger_output=: (IO) -> IO
|
11
|
+
|
12
|
+
def self.print_warning: () { () -> String } -> void
|
13
|
+
|
14
|
+
self.@logger: Logger?
|
15
|
+
|
16
|
+
self.@logger_output: IO?
|
17
|
+
|
18
|
+
self.@logger_level: Integer?
|
19
|
+
|
20
|
+
self.@warnings: Set[String]
|
21
|
+
end
|
data/sig/rdoc/rbs.rbs
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
module RDoc
|
2
|
+
class Parser
|
3
|
+
class RBS < Parser
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
module RBS
|
9
|
+
module RDocPlugin
|
10
|
+
class Parser
|
11
|
+
@top_level: RDoc::TopLevel
|
12
|
+
|
13
|
+
@content: String
|
14
|
+
|
15
|
+
type allowed_decls = RBS::AST::Declarations::Class
|
16
|
+
| RBS::AST::Declarations::Module
|
17
|
+
| RBS::AST::Declarations::Constant
|
18
|
+
|
19
|
+
def initialize: (RDoc::TopLevel top_level, String content) -> void
|
20
|
+
|
21
|
+
def scan: () -> RDoc::TopLevel
|
22
|
+
|
23
|
+
def parse_member: (decl: RBS::AST::Declarations::t | RBS::AST::Members::t, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
24
|
+
|
25
|
+
def parse_class_decl: (decl: RBS::AST::Declarations::Class, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
26
|
+
|
27
|
+
def parse_module_decl: (decl: RBS::AST::Declarations::Module | RBS::AST::Declarations::Interface, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
28
|
+
|
29
|
+
def parse_constant_decl: (decl: RBS::AST::Declarations::Constant, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
30
|
+
|
31
|
+
def parse_method_decl: (decl: RBS::AST::Members::MethodDefinition, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
32
|
+
|
33
|
+
def parse_method_alias_decl: (decl: RBS::AST::Members::Alias, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
34
|
+
|
35
|
+
def parse_attr_decl: (decl: RBS::AST::Members::AttrReader | RBS::AST::Members::AttrAccessor | RBS::AST::Members::AttrWriter, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
36
|
+
|
37
|
+
def parse_include_decl: (decl: RBS::AST::Members::Include, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
38
|
+
|
39
|
+
def parse_extend_decl: (decl: RBS::AST::Members::Extend, context: RDoc::Context, ?outer_name: RBS::TypeName?) -> void
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def construct_comment: (context: RDoc::Context, comment: String) -> RDoc::Comment
|
44
|
+
|
45
|
+
# _DeclWithComment is a utility interface that has `#comment`
|
46
|
+
#
|
47
|
+
interface _DeclWithComment
|
48
|
+
def comment: () -> ::RBS::AST::Comment?
|
49
|
+
end
|
50
|
+
|
51
|
+
# Extract comment string from a declaration with comment
|
52
|
+
#
|
53
|
+
# * If `#comment" returns a Comment object, it returns its `#string` value
|
54
|
+
# * If `#comment` returns `nil`, it raises an error
|
55
|
+
#
|
56
|
+
# Note that you have to confirm if the `#comment` of given declaration exists.
|
57
|
+
#
|
58
|
+
# ```ruby
|
59
|
+
# comment = construct_comment(context: context, comment: comment_string(decl)) if decl.comment
|
60
|
+
# ```
|
61
|
+
#
|
62
|
+
def comment_string: (_DeclWithComment) -> String
|
63
|
+
|
64
|
+
def fully_qualified_name: (outer_name: RBS::TypeName?, decl: allowed_decls) -> RBS::TypeName
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/sig/repository.rbs
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
module RBS
|
2
|
+
# Set of RBS repositories.
|
3
|
+
#
|
4
|
+
# A repository object can handle multiple repository roots.
|
5
|
+
#
|
6
|
+
# ```ruby
|
7
|
+
# repo = RBS::Repository.new()
|
8
|
+
# repo.add(Pathname("vendor/rbs/gem-rbs"))
|
9
|
+
# repo.add(Pathname("vendor/rbs/internal-rbs"))
|
10
|
+
# repo.add(Pathname("vendor/rbs/definitely-rbs"))
|
11
|
+
#
|
12
|
+
# repo.lookup("minitest", "2.1.3") # => Pathname or nil
|
13
|
+
# ```
|
14
|
+
#
|
15
|
+
# If one gem version can resolve to several directories, the last added dir wins.
|
16
|
+
#
|
17
|
+
class Repository
|
18
|
+
class GemRBS
|
19
|
+
attr_reader name: String
|
20
|
+
|
21
|
+
# Array of gem dirs.
|
22
|
+
# Gem dir contains directories for each version.
|
23
|
+
attr_reader paths: Array[Pathname]
|
24
|
+
|
25
|
+
# Hash from a version to VersionPath object.
|
26
|
+
attr_reader versions(): Hash[Gem::Version, VersionPath]
|
27
|
+
|
28
|
+
@versions: Hash[Gem::Version, VersionPath]?
|
29
|
+
|
30
|
+
def initialize: (name: String) -> void
|
31
|
+
|
32
|
+
def load!: () -> void
|
33
|
+
|
34
|
+
def version_names: () -> Array[Gem::Version]
|
35
|
+
|
36
|
+
def oldest_version: () -> VersionPath
|
37
|
+
|
38
|
+
def latest_version: () -> VersionPath
|
39
|
+
|
40
|
+
def find_best_version: (Gem::Version?) -> VersionPath
|
41
|
+
|
42
|
+
# Returns true if versions is empty.
|
43
|
+
def empty?: () -> bool
|
44
|
+
end
|
45
|
+
|
46
|
+
class VersionPath
|
47
|
+
attr_reader gem: GemRBS
|
48
|
+
attr_reader version: Gem::Version
|
49
|
+
attr_reader path: Pathname
|
50
|
+
|
51
|
+
def initialize: (gem: GemRBS, version: Gem::Version, path: Pathname) -> void
|
52
|
+
end
|
53
|
+
|
54
|
+
DEFAULT_STDLIB_ROOT: Pathname
|
55
|
+
|
56
|
+
# Array of _root dir_s of repositories.
|
57
|
+
#
|
58
|
+
attr_reader dirs: Array[Pathname]
|
59
|
+
|
60
|
+
attr_reader gems: Hash[String, GemRBS]
|
61
|
+
|
62
|
+
def self.default: () -> instance
|
63
|
+
|
64
|
+
def self.find_best_version: (Gem::Version? version, Array[Gem::Version] candidates) -> Gem::Version
|
65
|
+
|
66
|
+
# An optional keyword argument `no_stdlib` is to skip adding directory for stdlib classes.
|
67
|
+
# Passing truthy value will skip loading stdlib. (You can add the stdlib root by yourself.)
|
68
|
+
#
|
69
|
+
def initialize: (?no_stdlib: bool) -> void
|
70
|
+
|
71
|
+
# Add new _root dir_ to the repository set.
|
72
|
+
# If two repository dirs have exactly same gem-version definitions, the latter overwrites the prior.
|
73
|
+
#
|
74
|
+
def add: (Pathname dir) -> void
|
75
|
+
|
76
|
+
# Returns a directory for given `gem` name and `version`.
|
77
|
+
# `version` can be `nil` for _any version_.
|
78
|
+
#
|
79
|
+
# If the given gem cannot be found, it returns `nil`.
|
80
|
+
#
|
81
|
+
def lookup: (String gem, String? version) -> Pathname?
|
82
|
+
|
83
|
+
def lookup_path: (String gem, String? version) -> [GemRBS, VersionPath]?
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
module RBS
|
2
|
+
module Resolver
|
3
|
+
class ConstantResolver
|
4
|
+
# Table stores the set of immediate child constants of a module.
|
5
|
+
#
|
6
|
+
# ```rb
|
7
|
+
# table = RBS::ConstantResolver::Table.new(env)
|
8
|
+
#
|
9
|
+
# table.children(TypeName.parse("::Object")) # -> { ... } Returns a hash of name and constants.
|
10
|
+
# table.children(TypeName.parse("::File::PATH_SEPARATOR")) # -> nil Returns nil because the constant is not a module.
|
11
|
+
#
|
12
|
+
# table.toplevel # -> { ... } Returns a hash of top level constants.
|
13
|
+
# ```
|
14
|
+
#
|
15
|
+
# The `#toplevel` is incompatible with Ruby.
|
16
|
+
# All constants in Ruby are defined under `Object`, and they are accessed with `::` (Colon3) operator.
|
17
|
+
# RBS is different.
|
18
|
+
# `::` constants are _toplevel_ constants, and they are not defined under `::Object`.
|
19
|
+
#
|
20
|
+
# The behavior is simulated in `ConstantResolver`.
|
21
|
+
#
|
22
|
+
class Table
|
23
|
+
attr_reader children_table: Hash[TypeName, Hash[Symbol, Constant]?]
|
24
|
+
attr_reader constants_table: Hash[TypeName, Constant]
|
25
|
+
attr_reader toplevel: Hash[Symbol, Constant]
|
26
|
+
|
27
|
+
def initialize: (Environment) -> void
|
28
|
+
|
29
|
+
def constant: (TypeName constant_name) -> Constant?
|
30
|
+
|
31
|
+
# Returns a set of constants defined under `module_name`.
|
32
|
+
# Returns `nil` if there is no module with given `module_name`.
|
33
|
+
#
|
34
|
+
def children: (TypeName module_name) -> Hash[Symbol, Constant]?
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def constant_of_module: (TypeName name, Environment::ClassEntry | Environment::ModuleEntry) -> Constant
|
39
|
+
|
40
|
+
def constant_of_constant: (TypeName name, Environment::ConstantEntry) -> Constant
|
41
|
+
end
|
42
|
+
|
43
|
+
attr_reader builder: DefinitionBuilder
|
44
|
+
attr_reader table: Table
|
45
|
+
attr_reader context_constants_cache: Hash[context, Hash[Symbol, Constant]?]
|
46
|
+
attr_reader child_constants_cache: Hash[TypeName, Hash[Symbol, Constant]]
|
47
|
+
|
48
|
+
def initialize: (builder: DefinitionBuilder) -> void
|
49
|
+
|
50
|
+
# Resolves to `Constant` with given constant name `name` and `context`.
|
51
|
+
# Returns `nil` if the constant cannot be resolved from the context.
|
52
|
+
#
|
53
|
+
def resolve: (Symbol name, context: context) -> Constant?
|
54
|
+
|
55
|
+
# Returns the available all constants from `context`.
|
56
|
+
#
|
57
|
+
# Returns `nil` when the `context` is invalid.
|
58
|
+
def constants: (context) -> Hash[Symbol, Constant]?
|
59
|
+
|
60
|
+
# Resolves the module_name and constant name to `Constant`
|
61
|
+
#
|
62
|
+
# ```ruby
|
63
|
+
# A::B
|
64
|
+
# ^ <- module_name
|
65
|
+
# ^ <- constant_name
|
66
|
+
# ```
|
67
|
+
#
|
68
|
+
def resolve_child: (TypeName module_name, Symbol constant_name) -> Constant?
|
69
|
+
|
70
|
+
# Returns the table of all constants accessible with `::` (colon2) operator.
|
71
|
+
#
|
72
|
+
# * The constants under the module are included.
|
73
|
+
# * The constants under the ancestor modules are included.
|
74
|
+
# * The constants under the `::Object` class are not included.
|
75
|
+
# * The top level constants are not included.
|
76
|
+
#
|
77
|
+
def children: (TypeName module_name) -> Hash[Symbol, Constant]
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def load_context_constants: (context) -> void
|
82
|
+
|
83
|
+
def load_child_constants: (TypeName) -> void
|
84
|
+
|
85
|
+
def constants_from_context: (context, constants: Hash[Symbol, Constant]) -> bool
|
86
|
+
|
87
|
+
def constants_from_ancestors: (TypeName, constants: Hash[Symbol, Constant]) -> void
|
88
|
+
|
89
|
+
def constants_itself: (context, constants: Hash[Symbol, Constant]) -> void
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module RBS
|
2
|
+
module Resolver
|
3
|
+
# `context` represents the module nesting structure.
|
4
|
+
#
|
5
|
+
# - `nil` means toplevel
|
6
|
+
# - A 2-tuple represents parent and the most inner module
|
7
|
+
# - `TypeName` is for a module
|
8
|
+
# - `false` is for unknown module
|
9
|
+
#
|
10
|
+
# Note that the `TypeName` must be an absolute type name.
|
11
|
+
#
|
12
|
+
# The following Ruby code has context of `[[nil, TypeName.parse("::Foo")], false]` where
|
13
|
+
#
|
14
|
+
# * `Foo` is a class defined in RBS file
|
15
|
+
# * `Bar` is not defined in RBS files
|
16
|
+
#
|
17
|
+
# ```ruby
|
18
|
+
# class Foo
|
19
|
+
# module Bar
|
20
|
+
# # Context here
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
# ```
|
24
|
+
#
|
25
|
+
# The unknown module (`false`) appears only in Ruby code.
|
26
|
+
# RBS modules/classes are always exists (or defines new module).
|
27
|
+
# Nesting a unknown module cannot happen in RBS.
|
28
|
+
#
|
29
|
+
# In Ruby this happens when the module/class is not declared in RBS files.
|
30
|
+
#
|
31
|
+
type context = [context, TypeName | false]
|
32
|
+
| nil
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RBS
|
2
|
+
module Resolver
|
3
|
+
# TypeNameResolver resolves given relative type name to absolute type name under a module nesting context.
|
4
|
+
#
|
5
|
+
# The type name resolution doesn't take account of ancestors of modules.
|
6
|
+
# It just ignores included modules and super classes.
|
7
|
+
#
|
8
|
+
class TypeNameResolver
|
9
|
+
type query = [TypeName, context]
|
10
|
+
|
11
|
+
def initialize: (Environment) -> void
|
12
|
+
|
13
|
+
# Translates given type name to absolute type name.
|
14
|
+
# Returns `nil` if cannot find associated type name.
|
15
|
+
#
|
16
|
+
def resolve: (TypeName, context: context) -> TypeName?
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
attr_reader env: Environment
|
21
|
+
|
22
|
+
attr_reader all_names: Set[TypeName]
|
23
|
+
|
24
|
+
attr_reader cache: Hash[query, TypeName?]
|
25
|
+
|
26
|
+
def has_name?: (TypeName) -> TypeName?
|
27
|
+
|
28
|
+
def try_cache: (query) { () -> TypeName? } -> TypeName?
|
29
|
+
|
30
|
+
def resolve_in: (Symbol, context) -> TypeName?
|
31
|
+
|
32
|
+
def partition: (TypeName) -> [Symbol, TypeName?]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|