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,38 @@
|
|
1
|
+
module Bundler
|
2
|
+
class LockfileParser
|
3
|
+
def initialize: (String) -> void
|
4
|
+
|
5
|
+
def specs: () -> Array[LazySpecification]
|
6
|
+
end
|
7
|
+
|
8
|
+
class LazySpecification
|
9
|
+
def name: () -> String
|
10
|
+
|
11
|
+
def version: () -> String
|
12
|
+
|
13
|
+
def dependencies: () -> Array[Gem::Dependency]
|
14
|
+
end
|
15
|
+
|
16
|
+
class Dependency < Gem::Dependency
|
17
|
+
attr_reader autorequire: Array[String]?
|
18
|
+
|
19
|
+
attr_reader source: untyped
|
20
|
+
end
|
21
|
+
|
22
|
+
class Definition
|
23
|
+
def lockfile: () -> Pathname
|
24
|
+
|
25
|
+
def locked_gems: () -> LockfileParser
|
26
|
+
|
27
|
+
def dependencies: () -> Array[Dependency]
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.default_lockfile: () -> Pathname
|
31
|
+
|
32
|
+
def self.definition: () -> Definition
|
33
|
+
|
34
|
+
module Source
|
35
|
+
class Gemspec
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Gem
|
2
|
+
class Specification
|
3
|
+
attr_reader version (): Version
|
4
|
+
|
5
|
+
attr_reader gem_dir (): String
|
6
|
+
|
7
|
+
def self.find_by_name: (String name, *String requirements) -> instance
|
8
|
+
|
9
|
+
def dependencies: () -> Array[Dependency]
|
10
|
+
end
|
11
|
+
|
12
|
+
class Dependency
|
13
|
+
def name: () -> String
|
14
|
+
end
|
15
|
+
|
16
|
+
module ::Kernel
|
17
|
+
def self?.gem: (String, *String) -> void
|
18
|
+
end
|
19
|
+
end
|
data/sig/sorter.rbs
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
module RBS
|
2
|
+
class Sorter
|
3
|
+
include RBS::AST
|
4
|
+
|
5
|
+
type member = AST::Declarations::Class::member
|
6
|
+
| AST::Declarations::Module::member
|
7
|
+
| AST::Declarations::Interface::member
|
8
|
+
|
9
|
+
attr_reader path: Pathname
|
10
|
+
|
11
|
+
attr_reader stdout: IO
|
12
|
+
|
13
|
+
def initialize: (Pathname path, ?stdout: IO) -> void
|
14
|
+
|
15
|
+
def run: () -> void
|
16
|
+
|
17
|
+
type partitioned = {
|
18
|
+
type_alias_decls: Array[AST::Declarations::TypeAlias],
|
19
|
+
constant_decls: Array[AST::Declarations::Constant],
|
20
|
+
class_decls: Array[AST::Declarations::Class | AST::Declarations::Module | AST::Declarations::Interface],
|
21
|
+
mixin_includes: Array[AST::Members::Include],
|
22
|
+
mixin_prepends: Array[AST::Members::Prepend],
|
23
|
+
mixin_extends: Array[AST::Members::Extend],
|
24
|
+
class_variables: Array[AST::Members::ClassVariable],
|
25
|
+
class_instance_variables: Array[AST::Members::ClassInstanceVariable],
|
26
|
+
instance_variables: Array[AST::Members::InstanceVariable],
|
27
|
+
singleton_attributes: Array[AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader],
|
28
|
+
instance_attributes: Array[AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader],
|
29
|
+
module_functions: Array[AST::Members::MethodDefinition],
|
30
|
+
singleton_new_methods: Array[AST::Members::MethodDefinition],
|
31
|
+
public_singleton_methods: Array[AST::Members::MethodDefinition | AST::Members::Alias],
|
32
|
+
private_singleton_methods: Array[AST::Members::MethodDefinition],
|
33
|
+
instance_initialize_methods: Array[AST::Members::MethodDefinition],
|
34
|
+
public_instance_methods: Array[AST::Members::MethodDefinition | AST::Members::Alias],
|
35
|
+
private_instance_methods: Array[AST::Members::MethodDefinition],
|
36
|
+
other_decls: Array[member]
|
37
|
+
}
|
38
|
+
|
39
|
+
def sort_decl: (member decl) -> member
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module RBS
|
2
|
+
# Substitution from type variables to types.
|
3
|
+
#
|
4
|
+
# The substitution construction is in _destructive_ manner.
|
5
|
+
#
|
6
|
+
# sub = Substitution.new
|
7
|
+
# sub.add(from: :A, to: type1)
|
8
|
+
# sub.add(from: :B, to: type2)
|
9
|
+
# sub.instance_type = type3
|
10
|
+
#
|
11
|
+
class Substitution
|
12
|
+
# A hash containing mapping from type variable name to type.
|
13
|
+
attr_reader mapping: Hash[Symbol, Types::t]
|
14
|
+
|
15
|
+
# The result of applying this substitution to `instance` type.
|
16
|
+
# `nil` maps to `instance` type itself.
|
17
|
+
attr_accessor instance_type: Types::t?
|
18
|
+
|
19
|
+
def initialize: () -> void
|
20
|
+
|
21
|
+
# Add mapping to this substitution.
|
22
|
+
# Overwrites the previous mapping if same `from` is given.
|
23
|
+
def add: (from: Symbol, to: Types::t) -> void
|
24
|
+
|
25
|
+
# Utility method to construct a substitution.
|
26
|
+
# Raises an error when `variables.size != types.size`.
|
27
|
+
# `instance_type` defaults to `nil`.
|
28
|
+
#
|
29
|
+
# Yields types in `types` and the block value is used if block is given.
|
30
|
+
#
|
31
|
+
def self.build: (Array[Symbol] variables, Array[Types::t] types, ?instance_type: Types::t?) ?{ (Types::t) -> Types::t } -> instance
|
32
|
+
|
33
|
+
# Applies the substitution to given type.
|
34
|
+
def apply: (Types::t) -> Types::t
|
35
|
+
|
36
|
+
# Returns a substitution without variables given in `vars`.
|
37
|
+
def without: (*Symbol vars) -> Substitution
|
38
|
+
|
39
|
+
# Returns true if given substitution is identity.
|
40
|
+
def empty?: () -> bool
|
41
|
+
|
42
|
+
alias [] apply
|
43
|
+
|
44
|
+
# (s1 + s2)[t] == s2[s1[t]]
|
45
|
+
#
|
46
|
+
def +: (Substitution) -> Substitution
|
47
|
+
end
|
48
|
+
end
|
data/sig/subtractor.rbs
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module RBS
|
2
|
+
class Subtractor
|
3
|
+
type decl_with_members = AST::Declarations::Class | AST::Declarations::Module
|
4
|
+
|
5
|
+
@minuend: Array[AST::Declarations::t]
|
6
|
+
@subtrahend: Environment
|
7
|
+
|
8
|
+
def initialize: (Array[AST::Declarations::t] minuend, Environment subtrahend) -> void
|
9
|
+
|
10
|
+
def call: (?Array[AST::Declarations::t], ?context: Resolver::context) -> Array[AST::Declarations::t]
|
11
|
+
|
12
|
+
private def filter_members: (decl_with_members, context: Resolver::context) -> decl_with_members?
|
13
|
+
|
14
|
+
private def member_exist?: (TypeName owner, AST::Members::t, context: Resolver::context) -> boolish
|
15
|
+
|
16
|
+
private def method_exist?: (TypeName owner, Symbol method_name, AST::Members::MethodDefinition::kind) -> boolish
|
17
|
+
|
18
|
+
private def ivar_exist?: (TypeName owner, Symbol ivar_name, AST::Members::Attribute::kind) -> boolish
|
19
|
+
|
20
|
+
private def cvar_exist?: (TypeName owner, Symbol cvar_name) -> boolish
|
21
|
+
|
22
|
+
private def each_member: (TypeName owner) { (AST::Members::t | AST::Declarations::t) -> void } -> void
|
23
|
+
| (TypeName owner) -> Enumerator[(AST::Members::t | AST::Declarations::t), void]
|
24
|
+
|
25
|
+
private def mixin_exist?: (TypeName owner, AST::Members::Include | AST::Members::Extend | AST::Members::Prepend, context: Resolver::context) -> boolish
|
26
|
+
|
27
|
+
private def filter_redundant_access_modifiers: (Array[AST::Declarations::t | AST::Members::t]) -> Array[AST::Declarations::t | AST::Members::t]
|
28
|
+
|
29
|
+
private def access_modifier?: (AST::Declarations::t | AST::Members::t?) -> bool
|
30
|
+
|
31
|
+
private def update_decl: (decl_with_members, members: Array[AST::Declarations::t | AST::Members::t]) -> decl_with_members
|
32
|
+
|
33
|
+
private def absolute_typename: (TypeName, context: Resolver::context) -> TypeName
|
34
|
+
|
35
|
+
private def typename_candidates: (TypeName, context: Resolver::context) -> Array[TypeName]
|
36
|
+
end
|
37
|
+
end
|
data/sig/test/errors.rbs
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
module RBS
|
2
|
+
module Test
|
3
|
+
module Errors
|
4
|
+
type t = ArgumentTypeError | BlockArgumentError | ArgumentError | BlockArgumentError | ReturnTypeError | BlockReturnTypeError
|
5
|
+
| UnexpectedBlockError | MissingBlockError | UnresolvedOverloadingError
|
6
|
+
|
7
|
+
# Type of a argument value given to a method call is not compatible with the type from method type
|
8
|
+
class ArgumentTypeError
|
9
|
+
end
|
10
|
+
|
11
|
+
# Type of a argument value given to a block yield is not compatible with the type from method type
|
12
|
+
class BlockArgumentTypeError
|
13
|
+
end
|
14
|
+
|
15
|
+
# Incompatible number of args/keyword args is given to a method call
|
16
|
+
class ArgumentError
|
17
|
+
end
|
18
|
+
|
19
|
+
# Incompatible number of args is given to a block yield
|
20
|
+
class BlockArgumentError
|
21
|
+
end
|
22
|
+
|
23
|
+
# Type of return value from a method call is incompatible
|
24
|
+
class ReturnTypeError
|
25
|
+
end
|
26
|
+
|
27
|
+
# Type of return value from a block yield is incompatible
|
28
|
+
class BlockReturnTypeError
|
29
|
+
end
|
30
|
+
|
31
|
+
# Unexpected block is given
|
32
|
+
class UnexpectedBlockError
|
33
|
+
end
|
34
|
+
|
35
|
+
# Required block is missing
|
36
|
+
class MissingBlockError
|
37
|
+
end
|
38
|
+
|
39
|
+
# Any other error
|
40
|
+
class UnresolvedOverloadingError
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.format_param: (Types::Function::Param) -> String
|
44
|
+
|
45
|
+
RESPOND_TO: UnboundMethod
|
46
|
+
|
47
|
+
def self.inspect_: (untyped) -> String
|
48
|
+
|
49
|
+
def self.to_string: (t) -> String
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RBS
|
2
|
+
module Test
|
3
|
+
class TypeCheck
|
4
|
+
def initialize: (self_class: Module, builder: DefinitionBuilder, sample_size: Integer, unchecked_classes: Array[Module], instance_class: Module, class_class: Module) -> void
|
5
|
+
|
6
|
+
# Confirm if given `CallTrace` is compatible with `MethodType`
|
7
|
+
#
|
8
|
+
# Returns an array with detected errors.
|
9
|
+
#
|
10
|
+
def method_call: (Symbol, MethodType, CallTrace, errors: Array[Errors::t], ?annotations: Array[AST::Annotation]) -> Array[Errors::t]
|
11
|
+
|
12
|
+
# Test if given `value` is compatible to type
|
13
|
+
#
|
14
|
+
# Returns `true` if the value has the type.
|
15
|
+
#
|
16
|
+
def value: (untyped value, Types::t) -> bool
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/sig/test.rbs
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
module RBS
|
2
|
+
module Test
|
3
|
+
# Object#class
|
4
|
+
CLASS: UnboundMethod
|
5
|
+
|
6
|
+
# Module#define_method
|
7
|
+
DEFINE_METHOD: UnboundMethod
|
8
|
+
|
9
|
+
# Kernel#inspect
|
10
|
+
INSPECT: UnboundMethod
|
11
|
+
|
12
|
+
# BasicObject#instance_eval
|
13
|
+
INSTANCE_EVAL: UnboundMethod
|
14
|
+
|
15
|
+
# BasicObject#instance_exec
|
16
|
+
INSTANCE_EXEC: UnboundMethod
|
17
|
+
|
18
|
+
# Kernel#is_a?
|
19
|
+
IS_AP: UnboundMethod
|
20
|
+
|
21
|
+
# Kernel#method
|
22
|
+
METHOD: UnboundMethod
|
23
|
+
|
24
|
+
# Kernel#methods
|
25
|
+
METHODS: UnboundMethod
|
26
|
+
|
27
|
+
# Kernel#pp
|
28
|
+
PP: UnboundMethod
|
29
|
+
|
30
|
+
# Kernel#singleton_class
|
31
|
+
SINGLETON_CLASS: UnboundMethod
|
32
|
+
|
33
|
+
# Kernel#respond_to?
|
34
|
+
RESPOND_TOP: UnboundMethod
|
35
|
+
|
36
|
+
class ArgumentsReturn
|
37
|
+
type exit_type = :return | :exception | :break
|
38
|
+
|
39
|
+
attr_reader arguments: Array[untyped]
|
40
|
+
|
41
|
+
attr_reader exit_value: untyped
|
42
|
+
|
43
|
+
attr_reader exit_type: exit_type
|
44
|
+
|
45
|
+
def initialize: (arguments: Array[untyped], exit_value: untyped, exit_type: exit_type) -> void
|
46
|
+
|
47
|
+
def self.return: (arguments: Array[untyped], value: untyped) -> ArgumentsReturn
|
48
|
+
|
49
|
+
def self.exception: (arguments: Array[untyped], exception: untyped) -> ArgumentsReturn
|
50
|
+
|
51
|
+
def self.break: (arguments: Array[untyped]) -> ArgumentsReturn
|
52
|
+
|
53
|
+
def return_value: () -> untyped
|
54
|
+
|
55
|
+
def exception: () -> untyped
|
56
|
+
|
57
|
+
def return?: () -> bool
|
58
|
+
|
59
|
+
def exception?: () -> bool
|
60
|
+
|
61
|
+
def break?: () -> bool
|
62
|
+
end
|
63
|
+
|
64
|
+
class CallTrace
|
65
|
+
attr_reader method_name: Symbol
|
66
|
+
|
67
|
+
attr_reader method_call: ArgumentsReturn
|
68
|
+
|
69
|
+
attr_reader block_calls: Array[ArgumentsReturn]
|
70
|
+
|
71
|
+
attr_reader block_given: bool
|
72
|
+
|
73
|
+
def initialize: (method_name: Symbol, method_call: ArgumentsReturn, block_calls: Array[ArgumentsReturn], block_given: bool) -> void
|
74
|
+
end
|
75
|
+
|
76
|
+
attr_accessor self.suffix: String
|
77
|
+
|
78
|
+
def self.reset_suffix: () -> String
|
79
|
+
|
80
|
+
def self.call: (untyped receiver, UnboundMethod, *untyped) ?{ () -> void } -> void
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module RBS
|
2
|
+
# TypeAliasDependency calculates the dependencies between type aliases
|
3
|
+
#
|
4
|
+
# The dependencies are normalized automatically.
|
5
|
+
#
|
6
|
+
class TypeAliasDependency
|
7
|
+
attr_reader env: Environment
|
8
|
+
|
9
|
+
# A hash table from type alias name to it's direct dependencies
|
10
|
+
#
|
11
|
+
# The source type name and dependencies are normalized.
|
12
|
+
#
|
13
|
+
attr_reader direct_dependencies: Hash[TypeName, Set[TypeName]]
|
14
|
+
|
15
|
+
# A hash table from type alias name to a hash name with keys of transitive dependencies
|
16
|
+
#
|
17
|
+
# The source type name and dependencies are normalized.
|
18
|
+
#
|
19
|
+
attr_reader dependencies: Hash[TypeName, Hash[TypeName, bool]]
|
20
|
+
|
21
|
+
def initialize: (env: Environment) -> void
|
22
|
+
|
23
|
+
# Returns `true` if given type alias is circular
|
24
|
+
#
|
25
|
+
# Normalized given type name automatically.
|
26
|
+
#
|
27
|
+
def circular_definition?: (TypeName alias_name) -> bool
|
28
|
+
|
29
|
+
# Returns the set of direct dependencies from the given type name
|
30
|
+
#
|
31
|
+
# Given type name will be normalized automatically.
|
32
|
+
# Returns normalized type names.
|
33
|
+
#
|
34
|
+
def direct_dependencies_of: (TypeName) -> Set[TypeName]
|
35
|
+
|
36
|
+
# Returns the set of dependencies from the given type name
|
37
|
+
#
|
38
|
+
# Given type name will be normalized automatically.
|
39
|
+
# Returns normalized type names.
|
40
|
+
#
|
41
|
+
def dependencies_of: (TypeName) -> Set[TypeName]
|
42
|
+
|
43
|
+
def build_dependencies: () -> void
|
44
|
+
|
45
|
+
def transitive_closure: () -> void
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def direct_dependency: (Types::t `type`, ?Set[TypeName] result) -> Set[TypeName]
|
50
|
+
|
51
|
+
def dependency: (TypeName start, TypeName vertex, ?boolish nested) -> void
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module RBS
|
2
|
+
# `TypeAliasRegularity` validates if a type alias is regular or not.
|
3
|
+
#
|
4
|
+
# Generic and recursive type alias cannot be polymorphic in their definitions.
|
5
|
+
#
|
6
|
+
# ```rbs
|
7
|
+
# type foo[T] = Integer
|
8
|
+
# | foo[T]? # Allowed. The type argument of `foo` doesn't change.
|
9
|
+
#
|
10
|
+
# type bar[T] = Integer
|
11
|
+
# | foo[T]
|
12
|
+
# | foo[Array[T]] # Allowed. There are two type arguments `T` and `Array[T]` of `foo`, but it's not definition of `foo`.
|
13
|
+
#
|
14
|
+
# type baz[T] = Integer
|
15
|
+
# | baz[Array[T]] # Error. Recursive definition of `baz` has different type argument from the definition.
|
16
|
+
# ```
|
17
|
+
#
|
18
|
+
# The `#nonregular?` method can be used to test if given type name is regular or not.
|
19
|
+
#
|
20
|
+
# ```rb
|
21
|
+
# validator = RBS::TypeAliasRegularity.validate(env: env)
|
22
|
+
#
|
23
|
+
# validator.nonregular?(TypeName.parse("::foo")) # => nil
|
24
|
+
# validator.nonregular?(TypeName.parse("::bar")) # => nil
|
25
|
+
# validator.nonregular?(TypeName.parse("::baz")) # => TypeAliasRegularity::Diagnostic
|
26
|
+
# ```
|
27
|
+
#
|
28
|
+
# A special case is when the type argument is `untyped`.
|
29
|
+
#
|
30
|
+
# ```rbs
|
31
|
+
# type foo[T] = Integer | foo[untyped] # This is allowed.
|
32
|
+
# ```
|
33
|
+
#
|
34
|
+
class TypeAliasRegularity
|
35
|
+
attr_reader env: Environment
|
36
|
+
|
37
|
+
attr_reader builder: DefinitionBuilder
|
38
|
+
|
39
|
+
# Diagnostics of each type aliases.
|
40
|
+
# The type names are normalized.
|
41
|
+
#
|
42
|
+
attr_reader diagnostics: Hash[TypeName, Diagnostic]
|
43
|
+
|
44
|
+
# `Diagnostic` represents an non-regular type alias declaration error.
|
45
|
+
# It consists of the name of the alias type and a type on which the nonregularity is detected.
|
46
|
+
#
|
47
|
+
# ```rbs
|
48
|
+
# type t[T] = Integer | t[T?]
|
49
|
+
# ```
|
50
|
+
#
|
51
|
+
# The type `t` is nonregular because it contains `t[T?]` on it's right hand side.
|
52
|
+
#
|
53
|
+
# ```
|
54
|
+
# diagnostic = validator.nonregular?(TypeName.parse("::t"))
|
55
|
+
# diagnostic.type_name # => TypeName.parse("::t")
|
56
|
+
# diagnostic.nonregular_type # => t[T?]
|
57
|
+
# ```
|
58
|
+
#
|
59
|
+
class Diagnostic
|
60
|
+
attr_reader type_name: TypeName
|
61
|
+
|
62
|
+
attr_reader nonregular_type: Types::Alias
|
63
|
+
|
64
|
+
def initialize: (type_name: TypeName, nonregular_type: Types::Alias) -> void
|
65
|
+
end
|
66
|
+
|
67
|
+
# Returns new instance which already run `#validate`.
|
68
|
+
#
|
69
|
+
def self.validate: (env: Environment) -> TypeAliasRegularity
|
70
|
+
|
71
|
+
def initialize: (env: Environment) -> void
|
72
|
+
|
73
|
+
# Returns `Diagnostic` instance if the alias type is nonregular.
|
74
|
+
# Returns `nil` if the alias type is regular.
|
75
|
+
#
|
76
|
+
# Normalizes the given type name automatically.
|
77
|
+
#
|
78
|
+
def nonregular?: (TypeName) -> Diagnostic?
|
79
|
+
|
80
|
+
def validate: () -> void
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
def validate_alias_type: (Types::Alias, Set[TypeName], Hash[TypeName, Types::Alias]) -> void
|
85
|
+
|
86
|
+
# Returns alias type for given type name, if the alias is generic.
|
87
|
+
# Returns nil if the type alias is not generic.
|
88
|
+
#
|
89
|
+
def build_alias_type: (TypeName) -> Types::Alias?
|
90
|
+
|
91
|
+
def compatible_args?: (Array[Types::t], Array[Types::t]) -> boolish
|
92
|
+
|
93
|
+
def each_alias_type: (Types::t) { (Types::Alias) -> void } -> void
|
94
|
+
|
95
|
+
# Yields set of normalized type names
|
96
|
+
def each_mutual_alias_defs: () { (Set[TypeName]) -> void } -> void
|
97
|
+
end
|
98
|
+
end
|
data/sig/type_param.rbs
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
class TypeParam
|
4
|
+
# Key
|
5
|
+
# ^^^ name
|
6
|
+
#
|
7
|
+
# unchecked out Elem < _ToJson = untyped
|
8
|
+
# ^^^^^^^^^ unchecked
|
9
|
+
# ^^^ variance
|
10
|
+
# ^^^^ name
|
11
|
+
# ^^^^^^^^^ upper_bound
|
12
|
+
# ^^^^^^^^^ default
|
13
|
+
type loc = Location[:name, :variance | :unchecked | :upper_bound | :default]
|
14
|
+
|
15
|
+
type variance = :invariant | :covariant | :contravariant
|
16
|
+
|
17
|
+
type bound = Types::ClassInstance | Types::ClassSingleton | Types::Interface
|
18
|
+
|
19
|
+
attr_reader name: Symbol
|
20
|
+
attr_reader variance: variance
|
21
|
+
attr_reader location: loc?
|
22
|
+
|
23
|
+
%a{pure} def upper_bound: () -> bound?
|
24
|
+
|
25
|
+
attr_reader upper_bound_type: Types::t?
|
26
|
+
|
27
|
+
attr_reader default_type: Types::t?
|
28
|
+
|
29
|
+
def initialize: (name: Symbol, variance: variance, upper_bound: Types::t?, location: loc?, ?default_type: Types::t?, ?unchecked: bool) -> void
|
30
|
+
|
31
|
+
include _ToJson
|
32
|
+
|
33
|
+
def ==: (untyped) -> bool
|
34
|
+
|
35
|
+
def eql?: (untyped) -> bool
|
36
|
+
|
37
|
+
def hash: () -> Integer
|
38
|
+
|
39
|
+
@unchecked: bool
|
40
|
+
|
41
|
+
def unchecked!: (?boolish) -> self
|
42
|
+
|
43
|
+
def unchecked?: () -> bool
|
44
|
+
|
45
|
+
def map_type: () { (Types::t) -> Types::t } -> TypeParam
|
46
|
+
|
47
|
+
# Helper function to resolve _class instance types_ to _type variables_.
|
48
|
+
#
|
49
|
+
# We need this step because RBS language has an identical syntax for both unqualified class instance types and type variables.
|
50
|
+
# `String` may be an instance of `::String` class or type variable depending on the list of bound type variables.
|
51
|
+
#
|
52
|
+
# So, we need second pass to parse the following generics parameter declaration.
|
53
|
+
#
|
54
|
+
# ```rbs
|
55
|
+
# class Foo[X < _Each[Y], Y]
|
56
|
+
# # ^ We want this `Y` to be a type variable.
|
57
|
+
# end
|
58
|
+
# ```
|
59
|
+
#
|
60
|
+
def self.resolve_variables: (Array[TypeParam]) -> void
|
61
|
+
|
62
|
+
def self.subst_var: (Set[Symbol], Types::t) -> Types::t
|
63
|
+
|
64
|
+
# Rename type parameter name.
|
65
|
+
#
|
66
|
+
# The renaming cannot be done separately because a set of `TypeParam` decls may be mutual recursive.
|
67
|
+
#
|
68
|
+
# Example:
|
69
|
+
#
|
70
|
+
# * Renaming `A -> X, B -> Y`
|
71
|
+
# * Input `[A, B < _Pushable[A]]`
|
72
|
+
# * Result `[X, Y < _Pushable[X]]`
|
73
|
+
#
|
74
|
+
def self.rename: (Array[TypeParam], new_names: Array[Symbol]) -> Array[TypeParam]
|
75
|
+
|
76
|
+
def to_s: () -> String
|
77
|
+
|
78
|
+
# Validates TypeParams if it refers another optional type params
|
79
|
+
#
|
80
|
+
# * Returns array of TypeParam objects that refers other optional type params
|
81
|
+
# * Returns `nil` if all type params are valid
|
82
|
+
#
|
83
|
+
def self.validate: (Array[TypeParam]) -> Array[TypeParam]?
|
84
|
+
|
85
|
+
# Returns an application with respect to type params' default
|
86
|
+
#
|
87
|
+
def self.application: (Array[TypeParam], Array[Types::t]) -> Substitution?
|
88
|
+
|
89
|
+
# Returns an array of type args, that fills omitted types with the defaults
|
90
|
+
#
|
91
|
+
# ```rbs
|
92
|
+
# interface _Foo[T, S = untyped]
|
93
|
+
# end
|
94
|
+
# ```
|
95
|
+
#
|
96
|
+
# Normalizing type args with `_Foo` works as following:
|
97
|
+
#
|
98
|
+
# ```rbs
|
99
|
+
# _Foo[String] # => _Foo[String, untyped]
|
100
|
+
# _Foo[String, Integer] # => _Foo[String, Integer]
|
101
|
+
# _Foo # => _Foo (Omitting missing args)
|
102
|
+
# _Foo[String, Integer, untyped] # => _Foo[String, Integer, untyped] (Keeping extra args)
|
103
|
+
# ```
|
104
|
+
#
|
105
|
+
# Note that it allows invalid arities, returning the `args` immediately.
|
106
|
+
#
|
107
|
+
def self.normalize_args: (Array[TypeParam], Array[Types::t]) -> Array[Types::t]
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|