rbs-relaxed 3.9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +176 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1171 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +218 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +258 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +667 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +435 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +36 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +35 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5552 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +487 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +79 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +210 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +166 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +200 -0
- metadata +532 -0
data/sig/members.rbs
ADDED
@@ -0,0 +1,258 @@
|
|
1
|
+
module RBS
|
2
|
+
module AST
|
3
|
+
module Members
|
4
|
+
type t = MethodDefinition
|
5
|
+
| InstanceVariable | ClassInstanceVariable | ClassVariable
|
6
|
+
| Include | Extend | Prepend
|
7
|
+
| AttrReader | AttrWriter | AttrAccessor
|
8
|
+
| Public | Private
|
9
|
+
| Alias
|
10
|
+
|
11
|
+
# Base class for members.
|
12
|
+
class Base
|
13
|
+
end
|
14
|
+
|
15
|
+
type visibility = :public | :private
|
16
|
+
|
17
|
+
class MethodDefinition < Base
|
18
|
+
class Overload
|
19
|
+
attr_reader method_type: MethodType
|
20
|
+
|
21
|
+
attr_reader annotations: Array[Annotation]
|
22
|
+
|
23
|
+
def initialize: (method_type: MethodType, annotations: Array[Annotation]) -> void
|
24
|
+
|
25
|
+
def ==: (untyped) -> bool
|
26
|
+
|
27
|
+
def hash: () -> Integer
|
28
|
+
|
29
|
+
alias eql? ==
|
30
|
+
|
31
|
+
def update: (?annotations: Array[Annotation], ?method_type: MethodType) -> Overload
|
32
|
+
|
33
|
+
def sub: (Substitution) -> Overload
|
34
|
+
|
35
|
+
include _ToJson
|
36
|
+
end
|
37
|
+
|
38
|
+
type kind = :instance | :singleton | :singleton_instance
|
39
|
+
|
40
|
+
# def foo: () -> void
|
41
|
+
# ^^^ keyword
|
42
|
+
# ^^^ name
|
43
|
+
#
|
44
|
+
# private def self.bar: () -> void | ...
|
45
|
+
# ^^^^^^^ visibility
|
46
|
+
# ^^^ keyword
|
47
|
+
# ^^^^^ kind
|
48
|
+
# ^^^ name
|
49
|
+
# ^^^ overloading
|
50
|
+
#
|
51
|
+
type loc = Location[:keyword | :name, :kind | :overloading | :visibility]
|
52
|
+
|
53
|
+
attr_reader name: Symbol
|
54
|
+
attr_reader kind: kind
|
55
|
+
attr_reader overloads: Array[Overload]
|
56
|
+
attr_reader annotations: Array[Annotation]
|
57
|
+
attr_reader location: loc?
|
58
|
+
attr_reader comment: Comment?
|
59
|
+
attr_reader overloading: bool
|
60
|
+
attr_reader visibility: visibility?
|
61
|
+
|
62
|
+
def initialize: (name: Symbol, kind: kind, overloads: Array[Overload], annotations: Array[Annotation], location: loc?, comment: Comment?, overloading: bool, visibility: visibility?) -> void
|
63
|
+
|
64
|
+
include _HashEqual
|
65
|
+
include _ToJson
|
66
|
+
|
67
|
+
# Returns true if the `def` is to define instance method
|
68
|
+
def instance?: () -> bool
|
69
|
+
|
70
|
+
# Returns true if the `def` is to define singleton method
|
71
|
+
def singleton?: () -> bool
|
72
|
+
|
73
|
+
# Returns true if the `def` is overloading (== with `...`)
|
74
|
+
#
|
75
|
+
def overloading?: () -> bool
|
76
|
+
|
77
|
+
def update: (?name: Symbol, ?kind: kind, ?overloads: Array[Overload], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?overloading: bool, ?visibility: visibility?) -> MethodDefinition
|
78
|
+
end
|
79
|
+
|
80
|
+
module Var
|
81
|
+
# @foo: String
|
82
|
+
# ^^^^ name
|
83
|
+
# ^ colon
|
84
|
+
#
|
85
|
+
# self.@all: Array[String]
|
86
|
+
# ^^^^^ kind
|
87
|
+
# ^^^^ name
|
88
|
+
# ^ colon
|
89
|
+
#
|
90
|
+
type loc = Location[:name | :colon, :kind]
|
91
|
+
|
92
|
+
attr_reader name: Symbol
|
93
|
+
attr_reader type: Types::t
|
94
|
+
attr_reader location: loc?
|
95
|
+
attr_reader comment: Comment?
|
96
|
+
|
97
|
+
def initialize: (name: Symbol, type: Types::t, location: loc?, comment: Comment?) -> void
|
98
|
+
|
99
|
+
include _HashEqual
|
100
|
+
end
|
101
|
+
|
102
|
+
class InstanceVariable < Base
|
103
|
+
include Var
|
104
|
+
include _ToJson
|
105
|
+
end
|
106
|
+
|
107
|
+
class ClassInstanceVariable < Base
|
108
|
+
include Var
|
109
|
+
include _ToJson
|
110
|
+
end
|
111
|
+
|
112
|
+
class ClassVariable < Base
|
113
|
+
include Var
|
114
|
+
include _ToJson
|
115
|
+
end
|
116
|
+
|
117
|
+
module Mixin
|
118
|
+
# include Foo
|
119
|
+
# ^^^^^^^ keyword
|
120
|
+
# ^^^ name
|
121
|
+
#
|
122
|
+
# include Array[String]
|
123
|
+
# ^^^^^^^ keyword
|
124
|
+
# ^^^^^ name
|
125
|
+
# ^^^^^^^^ args
|
126
|
+
#
|
127
|
+
type loc = Location[:name | :keyword, :args]
|
128
|
+
|
129
|
+
attr_reader name: TypeName
|
130
|
+
attr_reader args: Array[Types::t]
|
131
|
+
attr_reader annotations: Array[Annotation]
|
132
|
+
attr_reader location: loc?
|
133
|
+
attr_reader comment: Comment?
|
134
|
+
|
135
|
+
def initialize: (name: TypeName, args: Array[Types::t], annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
|
136
|
+
|
137
|
+
include _HashEqual
|
138
|
+
end
|
139
|
+
|
140
|
+
class Include < Base
|
141
|
+
include Mixin
|
142
|
+
include _ToJson
|
143
|
+
end
|
144
|
+
|
145
|
+
class Extend < Base
|
146
|
+
include Mixin
|
147
|
+
include _ToJson
|
148
|
+
end
|
149
|
+
|
150
|
+
class Prepend < Base
|
151
|
+
include Mixin
|
152
|
+
include _ToJson
|
153
|
+
end
|
154
|
+
|
155
|
+
module Attribute
|
156
|
+
type kind = :instance | :singleton
|
157
|
+
|
158
|
+
# attr_reader name: String
|
159
|
+
# ^^^^^^^^^^^ keyword
|
160
|
+
# ^^^^ name
|
161
|
+
# ^ colon
|
162
|
+
#
|
163
|
+
# public attr_accessor self.name (@foo) : String
|
164
|
+
# ^^^^^^ visibility
|
165
|
+
# ^^^^^^^^^^^^^ keyword
|
166
|
+
# ^^^^^ kind
|
167
|
+
# ^^^^ name
|
168
|
+
# ^^^^^^ ivar
|
169
|
+
# ^^^^ ivar_name
|
170
|
+
# ^ colon
|
171
|
+
#
|
172
|
+
type loc = Location[:keyword | :name | :colon, :kind | :ivar | :ivar_name | :visibility]
|
173
|
+
|
174
|
+
attr_reader name: Symbol
|
175
|
+
attr_reader type: Types::t
|
176
|
+
attr_reader kind: kind
|
177
|
+
attr_reader ivar_name: Symbol | false | nil
|
178
|
+
attr_reader annotations: Array[Annotation]
|
179
|
+
attr_reader location: loc?
|
180
|
+
attr_reader comment: Comment?
|
181
|
+
attr_reader visibility: visibility?
|
182
|
+
|
183
|
+
def initialize: (name: Symbol, type: Types::t, ivar_name: Symbol | false | nil, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?, ?visibility: visibility?) -> void
|
184
|
+
|
185
|
+
include _HashEqual
|
186
|
+
|
187
|
+
def update: (?name: Symbol, ?type: Types::t, ?ivar_name: Symbol | false | nil, ?kind: kind, ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?visibility: visibility?) -> instance
|
188
|
+
end
|
189
|
+
|
190
|
+
class AttrReader < Base
|
191
|
+
include Attribute
|
192
|
+
include _ToJson
|
193
|
+
end
|
194
|
+
|
195
|
+
class AttrAccessor < Base
|
196
|
+
include Attribute
|
197
|
+
include _ToJson
|
198
|
+
end
|
199
|
+
|
200
|
+
class AttrWriter < Base
|
201
|
+
include Attribute
|
202
|
+
include _ToJson
|
203
|
+
end
|
204
|
+
|
205
|
+
module LocationOnly
|
206
|
+
attr_reader location: Location[bot, bot]?
|
207
|
+
|
208
|
+
def initialize: (location: Location[bot, bot]?) -> void
|
209
|
+
|
210
|
+
include _HashEqual
|
211
|
+
end
|
212
|
+
|
213
|
+
class Public < Base
|
214
|
+
include LocationOnly
|
215
|
+
include _ToJson
|
216
|
+
end
|
217
|
+
|
218
|
+
class Private < Base
|
219
|
+
include LocationOnly
|
220
|
+
include _ToJson
|
221
|
+
end
|
222
|
+
|
223
|
+
class Alias < Base
|
224
|
+
type kind = :instance | :singleton
|
225
|
+
|
226
|
+
# alias foo bar
|
227
|
+
# ^^^^^ keyword
|
228
|
+
# ^^^ new_name
|
229
|
+
# ^^^ old_name
|
230
|
+
#
|
231
|
+
# alias self.foo self.bar
|
232
|
+
# ^^^^^ keyword
|
233
|
+
# ^^^^^ new_kind
|
234
|
+
# ^^^ new_name
|
235
|
+
# ^^^^^ old_kind
|
236
|
+
# ^^^ old_name
|
237
|
+
#
|
238
|
+
type loc = Location[:keyword | :new_name | :old_name, :new_kind | :old_kind]
|
239
|
+
|
240
|
+
attr_reader new_name: Symbol
|
241
|
+
attr_reader old_name: Symbol
|
242
|
+
attr_reader kind: kind
|
243
|
+
attr_reader annotations: Array[Annotation]
|
244
|
+
attr_reader location: loc?
|
245
|
+
attr_reader comment: Comment?
|
246
|
+
|
247
|
+
def initialize: (new_name: Symbol, old_name: Symbol, kind: kind, annotations: Array[Annotation], location: loc?, comment: Comment?) -> void
|
248
|
+
|
249
|
+
include _HashEqual
|
250
|
+
include _ToJson
|
251
|
+
|
252
|
+
def instance?: () -> bool
|
253
|
+
|
254
|
+
def singleton?: () -> bool
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module RBS
|
2
|
+
class DefinitionBuilder
|
3
|
+
# MethodBuilder calculates the sequence of methods available on given type
|
4
|
+
#
|
5
|
+
# The sequence are sorted topologically.
|
6
|
+
#
|
7
|
+
class MethodBuilder
|
8
|
+
# Set of methods defined in a type.
|
9
|
+
#
|
10
|
+
class Methods
|
11
|
+
type instance_type = Types::ClassInstance | Types::ClassSingleton | Types::Interface
|
12
|
+
|
13
|
+
# Definition of a method in the type
|
14
|
+
#
|
15
|
+
# The Definition object allows invalid method definition so that more than one _original_ definitions may exist.
|
16
|
+
#
|
17
|
+
class Definition
|
18
|
+
type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
|
19
|
+
|
20
|
+
type accessibility = RBS::Definition::accessibility
|
21
|
+
|
22
|
+
attr_reader name: Symbol
|
23
|
+
attr_reader type: instance_type
|
24
|
+
attr_reader originals: Array[original]
|
25
|
+
attr_reader overloads: Array[AST::Members::MethodDefinition]
|
26
|
+
attr_reader accessibilities: Array[accessibility]
|
27
|
+
|
28
|
+
def initialize: (name: Symbol, type: instance_type, originals: Array[original], overloads: Array[AST::Members::MethodDefinition], accessibilities: Array[accessibility]) -> void
|
29
|
+
|
30
|
+
def original: () -> original?
|
31
|
+
|
32
|
+
def accessibility: () -> accessibility
|
33
|
+
|
34
|
+
def self.empty: (name: Symbol, type: instance_type) -> Definition
|
35
|
+
end
|
36
|
+
|
37
|
+
attr_reader type: instance_type
|
38
|
+
attr_reader methods: Hash[Symbol, Definition]
|
39
|
+
|
40
|
+
def initialize: (type: instance_type) -> void
|
41
|
+
|
42
|
+
def validate!: () -> self
|
43
|
+
|
44
|
+
def each: () { (Definition) -> void } -> void
|
45
|
+
| () -> Enumerator[Definition, void]
|
46
|
+
|
47
|
+
class Sorter
|
48
|
+
include TSort[Definition]
|
49
|
+
|
50
|
+
attr_reader methods: Hash[Symbol, Definition]
|
51
|
+
|
52
|
+
def initialize: (Hash[Symbol, Definition]) -> void
|
53
|
+
|
54
|
+
def tsort_each_node: { (Definition) -> void } -> void
|
55
|
+
|
56
|
+
def tsort_each_child: (Definition) { (Definition) -> void } -> void
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
attr_reader env: Environment
|
61
|
+
attr_reader instance_methods: Hash[TypeName, Methods]
|
62
|
+
attr_reader singleton_methods: Hash[TypeName, Methods]
|
63
|
+
attr_reader interface_methods: Hash[TypeName, Methods]
|
64
|
+
|
65
|
+
def initialize: (env: Environment) -> void
|
66
|
+
|
67
|
+
def build_instance: (TypeName) -> Methods
|
68
|
+
|
69
|
+
def build_singleton: (TypeName) -> Methods
|
70
|
+
|
71
|
+
def build_interface: (TypeName) -> Methods
|
72
|
+
|
73
|
+
def build_alias: (Methods, Methods::instance_type, member: AST::Members::Alias) -> void
|
74
|
+
|
75
|
+
def build_attribute: (Methods, Methods::instance_type, member: AST::Members::AttrAccessor | AST::Members::AttrReader | AST::Members::AttrWriter, accessibility: Definition::accessibility) -> void
|
76
|
+
|
77
|
+
def build_method: (Methods, Methods::instance_type, member: AST::Members::MethodDefinition, accessibility: Definition::accessibility) -> void
|
78
|
+
|
79
|
+
def each_member_with_accessibility: (Array[AST::Members::t | AST::Declarations::t], ?accessibility: Definition::accessibility) { (AST::Members::t | AST::Declarations::t, Definition::accessibility) -> void } -> void
|
80
|
+
|
81
|
+
def update: (env: Environment, except: _Each[TypeName]) -> MethodBuilder
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module RBS
|
2
|
+
class MethodType
|
3
|
+
# () -> void
|
4
|
+
# ^^^^^^^^^^ type
|
5
|
+
#
|
6
|
+
# [A] () { () -> A } -> A
|
7
|
+
# ^^^ type_params
|
8
|
+
# ^^^^^^^^^^^^^^^^^^^ type
|
9
|
+
#
|
10
|
+
type def_loc = Location[:type, :type_params]
|
11
|
+
|
12
|
+
type attr_loc = AST::Members::Attribute::loc
|
13
|
+
|
14
|
+
type loc = def_loc | attr_loc
|
15
|
+
|
16
|
+
attr_reader type_params: Array[AST::TypeParam]
|
17
|
+
attr_reader type: Types::function
|
18
|
+
attr_reader block: Types::Block?
|
19
|
+
attr_reader location: loc?
|
20
|
+
|
21
|
+
def initialize: (type_params: Array[AST::TypeParam], type: Types::function, block: Types::Block?, location: loc?) -> void
|
22
|
+
|
23
|
+
def ==: (untyped other) -> bool
|
24
|
+
|
25
|
+
include _ToJson
|
26
|
+
|
27
|
+
# Substitute type variables to some types.
|
28
|
+
# Takes care of type parameter bounds.
|
29
|
+
#
|
30
|
+
def sub: (Substitution) -> MethodType
|
31
|
+
|
32
|
+
def update: (?type_params: Array[AST::TypeParam], ?type: Types::function, ?block: Types::Block?, ?location: loc?) -> MethodType
|
33
|
+
|
34
|
+
def free_variables: (?Set[Symbol] set) -> Set[Symbol]
|
35
|
+
|
36
|
+
# Apply the mapping included in the MethodType.
|
37
|
+
#
|
38
|
+
# Note that type bound in generics parameter is not handled by this method.
|
39
|
+
# You may want to use `#map_type_bound` explicitly, or `#sub` for simple substitution.
|
40
|
+
#
|
41
|
+
def map_type: () { (Types::t) -> Types::t } -> MethodType
|
42
|
+
|
43
|
+
def map_type_bound: () { (Types::t) -> Types::t } -> MethodType
|
44
|
+
|
45
|
+
def each_type: () { (Types::t) -> void } -> void
|
46
|
+
| () -> Enumerator[Types::t, void]
|
47
|
+
|
48
|
+
def to_s: () -> String
|
49
|
+
|
50
|
+
def type_param_names: () -> Array[Symbol]
|
51
|
+
|
52
|
+
def has_self_type?: () -> bool
|
53
|
+
|
54
|
+
def has_classish_type?: () -> bool
|
55
|
+
|
56
|
+
def with_nonreturn_void?: () -> bool
|
57
|
+
end
|
58
|
+
end
|
data/sig/namespace.rbs
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
module RBS
|
2
|
+
# Namespace instance represents a _prefix of module names_.
|
3
|
+
#
|
4
|
+
# ```
|
5
|
+
# vvvvvvvvvvvvvv TypeName
|
6
|
+
# RBS::Namespace
|
7
|
+
# ^^^^^ Namespace
|
8
|
+
#
|
9
|
+
# vvvvvvvvvv TypeName
|
10
|
+
# RBS::Types
|
11
|
+
# ^^^^^ Namespace
|
12
|
+
#
|
13
|
+
# vvvvvvvvvvvvvvvvv TypeName
|
14
|
+
# RBS::Types::Union
|
15
|
+
# ^^^^^^^^^^^^ Namespace
|
16
|
+
# ```
|
17
|
+
#
|
18
|
+
# Note that `Namespace` is an RBS specific concept and there is no corresponding concept in Ruby.
|
19
|
+
#
|
20
|
+
# There are _absolute_ and _relative_ namespaces.
|
21
|
+
#
|
22
|
+
# ```
|
23
|
+
# Namespace(::RBS::) # Absolute namespace
|
24
|
+
# Namespace( RBS::) # Relative namespace
|
25
|
+
# ```
|
26
|
+
#
|
27
|
+
# It also defines two special namespaces.
|
28
|
+
#
|
29
|
+
# ```
|
30
|
+
# :: # _Root_ namespace
|
31
|
+
# # _Empty_ namespace
|
32
|
+
# ```
|
33
|
+
#
|
34
|
+
class Namespace
|
35
|
+
attr_reader path: Array[Symbol]
|
36
|
+
|
37
|
+
def initialize: (path: Array[Symbol], absolute: boolish) -> void
|
38
|
+
|
39
|
+
@absolute: bool
|
40
|
+
|
41
|
+
@parent: Namespace?
|
42
|
+
|
43
|
+
self.@root: Namespace?
|
44
|
+
|
45
|
+
self.@empty: Namespace?
|
46
|
+
|
47
|
+
# Returns new _empty_ namespace.
|
48
|
+
def self.empty: () -> Namespace
|
49
|
+
|
50
|
+
# Returns new _root_ namespace.
|
51
|
+
def self.root: () -> Namespace
|
52
|
+
|
53
|
+
# Concat two namespaces.
|
54
|
+
#
|
55
|
+
# ```rb
|
56
|
+
# Namespace("Foo::") + Namespace("Bar::") # => Foo::Bar::
|
57
|
+
# Namespace("::Foo::") + Namespace("Bar::") # => ::Foo::Bar::
|
58
|
+
# ```
|
59
|
+
#
|
60
|
+
# If `other` is an absolute namespace, it returns `other`.
|
61
|
+
#
|
62
|
+
# ```rb
|
63
|
+
# Namespace("Foo::") + Namespace("::Bar::") # => ::Bar::
|
64
|
+
# ```
|
65
|
+
def +: (Namespace other) -> Namespace
|
66
|
+
|
67
|
+
# Add one path component to self.
|
68
|
+
#
|
69
|
+
# ```rb
|
70
|
+
# Namespace("Foo::").append(:Bar) # => Namespace("Foo::Bar::")
|
71
|
+
# ```
|
72
|
+
def append: (Symbol component) -> Namespace
|
73
|
+
|
74
|
+
# Returns parent namespace.
|
75
|
+
# Raises error there is no parent namespace.
|
76
|
+
#
|
77
|
+
# ```rb
|
78
|
+
# Namespace("::A").parent # => Namespace("::")
|
79
|
+
# Namespace("::").parent # raises error
|
80
|
+
# Namespace("A::B").parent # => Namespace("A")
|
81
|
+
# ```
|
82
|
+
def parent: () -> Namespace
|
83
|
+
|
84
|
+
# Returns true if self is absolute namespace.
|
85
|
+
def absolute?: () -> bool
|
86
|
+
|
87
|
+
# Returns true if self is relative namespace.
|
88
|
+
def relative?: () -> bool
|
89
|
+
|
90
|
+
# Returns absolute namespace.
|
91
|
+
#
|
92
|
+
# ```rb
|
93
|
+
# Namespace("A").absolute! # => Namespace("::A")
|
94
|
+
# Namespace("::A").absolute! # => Namespace("::A")
|
95
|
+
# ```
|
96
|
+
def absolute!: () -> Namespace
|
97
|
+
|
98
|
+
# Returns _relative_ namespace.
|
99
|
+
#
|
100
|
+
def relative!: () -> Namespace
|
101
|
+
|
102
|
+
def empty?: () -> bool
|
103
|
+
|
104
|
+
# Equality is defined by its structure.
|
105
|
+
#
|
106
|
+
def ==: (untyped other) -> bool
|
107
|
+
|
108
|
+
alias eql? ==
|
109
|
+
|
110
|
+
# Hash is defined based on its structure.
|
111
|
+
#
|
112
|
+
def hash: () -> Integer
|
113
|
+
|
114
|
+
# Returns a pair of parent namespace and a symbol of last component.
|
115
|
+
#
|
116
|
+
# ```rb
|
117
|
+
# Namespace("::A::B::C").split # => [Namespace("::A::B::"), :C]
|
118
|
+
# ```
|
119
|
+
def split: () -> [Namespace, Symbol]?
|
120
|
+
|
121
|
+
def to_s: () -> String
|
122
|
+
|
123
|
+
# Construct a type name which points to the same name type.
|
124
|
+
#
|
125
|
+
def to_type_name: () -> TypeName
|
126
|
+
|
127
|
+
def self.parse: (String string) -> Namespace
|
128
|
+
|
129
|
+
# Iterate over Namespace for each element in ascending order.
|
130
|
+
#
|
131
|
+
# ```rb
|
132
|
+
# Namespace.parse("::A::B::C").ascend {|ns| p ns }
|
133
|
+
# # => ::A::B::C
|
134
|
+
# # => ::A::B
|
135
|
+
# # => ::A
|
136
|
+
# # => ::(root)
|
137
|
+
# ```
|
138
|
+
def ascend: () { (Namespace) -> void } -> void
|
139
|
+
| () -> Enumerator[Namespace, void]
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
module Kernel
|
144
|
+
# Deprecated: Use `RBS::Namespace.parse` instead
|
145
|
+
%a{steep:deprecated} def Namespace: (String) -> RBS::Namespace
|
146
|
+
end
|
data/sig/parser.rbs
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
module RBS
|
2
|
+
class Parser
|
3
|
+
# Result of `Parser.lex`
|
4
|
+
class LexResult
|
5
|
+
attr_reader buffer: Buffer
|
6
|
+
attr_reader value: Array[Token]
|
7
|
+
|
8
|
+
def initialize: (buffer: Buffer, value: Array[Token]) -> void
|
9
|
+
end
|
10
|
+
|
11
|
+
# Represents a token per result of `Parser.lex`.
|
12
|
+
class Token
|
13
|
+
attr_reader type: Symbol
|
14
|
+
attr_reader location: Location[untyped, untyped]
|
15
|
+
|
16
|
+
def initialize: (type: Symbol, location: Location[untyped, untyped]) -> void
|
17
|
+
def value: () -> String
|
18
|
+
def comment?: () -> bool
|
19
|
+
end
|
20
|
+
|
21
|
+
# Parse a method type and return it
|
22
|
+
#
|
23
|
+
# When `range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
24
|
+
#
|
25
|
+
# ```ruby
|
26
|
+
# RBS::Parser.parse_method_type("() -> void") # => `() -> void`
|
27
|
+
# RBS::Parser.parse_method_type("() -> void", range: 0...) # => `() -> void`
|
28
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", range: 11...) # => `() -> String`
|
29
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", range: 23...) # => nil
|
30
|
+
# ```
|
31
|
+
#
|
32
|
+
# When `require_eof` is `true`, an error is raised if more tokens are left in the input.
|
33
|
+
# (Defaults to `false`.)
|
34
|
+
#
|
35
|
+
# ```ruby
|
36
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", require_eof: false) # => `() -> void`
|
37
|
+
# RBS::Parser.parse_method_type("() -> void () -> String", require_eof: true) # => Raises an error
|
38
|
+
#
|
39
|
+
# RBS::Parser.parse_method_type("", require_eof: true) # => nil
|
40
|
+
# ```
|
41
|
+
#
|
42
|
+
def self.parse_method_type: (Buffer | String, ?range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> MethodType?
|
43
|
+
|
44
|
+
# Parse a type and return it
|
45
|
+
#
|
46
|
+
# When `range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
47
|
+
#
|
48
|
+
# ```ruby
|
49
|
+
# RBS::Parser.parse_type("String") # => `String`
|
50
|
+
# RBS::Parser.parse_type("String", range: 0...) # => `String`
|
51
|
+
# RBS::Parser.parse_type("String Integer", pos: 7...) # => `Integer`
|
52
|
+
# RBS::Parser.parse_type("String Integer", pos: 14...) # => nil
|
53
|
+
# ```
|
54
|
+
#
|
55
|
+
# When `require_eof` is `true`, an error is raised if more tokens are left in the input.
|
56
|
+
# (Defaults to `false`.)
|
57
|
+
#
|
58
|
+
# ```ruby
|
59
|
+
# RBS::Parser.parse_type("String untyped", require_eof: false) # => `String`
|
60
|
+
# RBS::Parser.parse_type("String untyped", require_eof: true) # => Raises an error
|
61
|
+
#
|
62
|
+
# RBS::Parser.parse_type("", require_eof: true) # => nil
|
63
|
+
# ```
|
64
|
+
#
|
65
|
+
def self.parse_type: (Buffer | String, ?range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> Types::t?
|
66
|
+
|
67
|
+
# Parse whole RBS file and return an array of declarations
|
68
|
+
#
|
69
|
+
def self.parse_signature: (Buffer | String) -> [Buffer, Array[AST::Directives::t], Array[AST::Declarations::t]]
|
70
|
+
|
71
|
+
# Returns the magic comment from the buffer
|
72
|
+
#
|
73
|
+
def self.magic_comment: (Buffer) -> AST::Directives::ResolveTypeNames?
|
74
|
+
|
75
|
+
# Parse whole RBS file and return result.
|
76
|
+
#
|
77
|
+
# ```ruby
|
78
|
+
# RBS::Parser.lex("# Comment\nmodule A\nend\n").value.map(&:type)
|
79
|
+
# # => [:tLINECOMMENT, :kMODULE, :tUIDENT, :kEND, :pEOF]
|
80
|
+
# ```
|
81
|
+
def self.lex: (Buffer | String) -> LexResult
|
82
|
+
|
83
|
+
KEYWORDS: Hash[String, bot]
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def self.buffer: (String | Buffer source) -> Buffer
|
88
|
+
|
89
|
+
def self._parse_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> Types::t?
|
90
|
+
|
91
|
+
def self._parse_method_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> MethodType?
|
92
|
+
|
93
|
+
def self._parse_signature: (Buffer, Integer start_pos, Integer end_pos) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
|
94
|
+
|
95
|
+
def self._lex: (Buffer, Integer end_pos) -> Array[[Symbol, Location[untyped, untyped]]]
|
96
|
+
|
97
|
+
class LocatedValue
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RBS
|
2
|
+
module Prototype
|
3
|
+
module Helpers
|
4
|
+
type node = RubyVM::AbstractSyntaxTree::Node
|
5
|
+
|
6
|
+
def block_from_body: (node) -> Types::Block?
|
7
|
+
|
8
|
+
def each_node: (Array[untyped] nodes) { (node) -> void } -> void
|
9
|
+
|
10
|
+
def each_child: (node) { (node child) -> void } -> void
|
11
|
+
|
12
|
+
def any_node?: (node, ?nodes: Array[node]) { (node) -> bool } -> Array[node]?
|
13
|
+
|
14
|
+
def keyword_hash?: (node) -> bool
|
15
|
+
|
16
|
+
# Returns a symbol if the node is a symbol literal node
|
17
|
+
#
|
18
|
+
def symbol_literal_node?: (node) -> Symbol?
|
19
|
+
|
20
|
+
def args_from_node: (node?) -> Array[untyped]
|
21
|
+
|
22
|
+
def untyped: () -> Types::Bases::Any
|
23
|
+
|
24
|
+
@untyped: Types::Bases::Any
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RBS
|
2
|
+
module Prototype
|
3
|
+
class NodeUsage
|
4
|
+
include Helpers
|
5
|
+
|
6
|
+
type node = RubyVM::AbstractSyntaxTree::Node
|
7
|
+
|
8
|
+
attr_reader node: node
|
9
|
+
|
10
|
+
attr_reader conditional_nodes: Set[node]
|
11
|
+
|
12
|
+
def initialize: (node) -> void
|
13
|
+
|
14
|
+
def calculate: (node, conditional: bool) -> void
|
15
|
+
|
16
|
+
def each_conditional_node: () { (node) -> void } -> void
|
17
|
+
| () -> Enumerator[node, void]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|