rbs 2.8.4 → 3.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +12 -4
- data/.github/workflows/comments.yml +11 -11
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +40 -49
- data/.github/workflows/typecheck.yml +36 -0
- data/.github/workflows/windows.yml +28 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +42 -2
- data/CHANGELOG.md +845 -1
- data/README.md +64 -4
- data/Rakefile +198 -18
- data/Steepfile +11 -11
- data/config.yml +311 -0
- data/core/array.rbs +2189 -1914
- data/core/basic_object.rbs +59 -84
- data/core/binding.rbs +7 -69
- data/core/builtin.rbs +210 -11
- data/core/class.rbs +37 -0
- data/core/comparable.rbs +23 -25
- data/core/complex.rbs +449 -227
- data/core/constants.rbs +29 -21
- data/core/data.rbs +415 -0
- data/core/dir.rbs +698 -415
- data/core/encoding.rbs +468 -843
- data/core/enumerable.rbs +495 -455
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +106 -9
- data/core/env.rbs +1 -1
- data/core/errno.rbs +506 -605
- data/core/errors.rbs +15 -17
- data/core/exception.rbs +361 -145
- data/core/false_class.rbs +39 -26
- data/core/fiber.rbs +121 -14
- data/core/file.rbs +1262 -320
- data/core/file_test.rbs +62 -45
- data/core/float.rbs +187 -208
- data/core/gc.rbs +446 -196
- data/core/global_variables.rbs +29 -29
- data/core/hash.rbs +242 -349
- data/core/integer.rbs +246 -308
- data/core/io/buffer.rbs +373 -122
- data/core/io/wait.rbs +29 -17
- data/core/io.rbs +1881 -1518
- data/core/kernel.rbs +2116 -1538
- data/core/marshal.rbs +24 -14
- data/core/match_data.rbs +413 -166
- data/core/math.rbs +531 -291
- data/core/method.rbs +101 -32
- data/core/module.rbs +228 -64
- data/core/nil_class.rbs +106 -47
- data/core/numeric.rbs +206 -292
- data/core/object.rbs +73 -1168
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +5 -3
- data/core/proc.rbs +280 -39
- data/core/process.rbs +1318 -658
- data/core/ractor.rbs +200 -134
- data/core/random.rbs +21 -4
- data/core/range.rbs +309 -153
- data/core/rational.rbs +4 -12
- data/core/rb_config.rbs +64 -43
- data/core/rbs/unnamed/argf.rbs +411 -147
- data/core/rbs/unnamed/env_class.rbs +137 -253
- data/core/rbs/unnamed/random.rbs +49 -26
- data/core/refinement.rbs +16 -1
- data/core/regexp.rbs +1568 -862
- data/core/ruby_vm.rbs +719 -7
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +69 -6
- data/core/rubygems/rubygems.rbs +71 -17
- data/core/rubygems/version.rbs +11 -7
- data/{stdlib/set/0 → core}/set.rbs +80 -91
- data/core/signal.rbs +14 -8
- data/core/string.rbs +1732 -1607
- data/core/struct.rbs +467 -95
- data/core/symbol.rbs +215 -245
- data/core/thread.rbs +133 -89
- data/core/thread_group.rbs +9 -9
- data/core/time.rbs +1141 -841
- data/core/trace_point.rbs +181 -121
- data/core/true_class.rbs +58 -32
- data/core/unbound_method.rbs +103 -30
- data/core/warning.rbs +50 -5
- data/docs/CONTRIBUTING.md +1 -1
- data/docs/architecture.md +110 -0
- data/docs/collection.md +59 -5
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +16 -35
- data/docs/repo.md +1 -1
- data/docs/sigs.md +7 -7
- data/docs/stdlib.md +63 -5
- data/docs/syntax.md +255 -61
- data/docs/tools.md +1 -0
- data/ext/rbs_extension/extconf.rb +10 -0
- data/ext/rbs_extension/lexer.c +1741 -1548
- data/ext/rbs_extension/lexer.h +11 -1
- data/ext/rbs_extension/lexer.re +12 -6
- data/ext/rbs_extension/lexstate.c +26 -3
- data/ext/rbs_extension/location.c +119 -111
- data/ext/rbs_extension/location.h +32 -7
- data/ext/rbs_extension/main.c +3 -0
- data/ext/rbs_extension/parser.c +883 -481
- data/ext/rbs_extension/parserstate.c +65 -25
- data/ext/rbs_extension/parserstate.h +13 -3
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/ext/rbs_extension/unescape.c +7 -47
- data/goodcheck.yml +2 -2
- data/{ext/rbs_extension → include/rbs}/constants.h +26 -15
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/formatter.rb +13 -3
- data/lib/rbs/annotate/rdoc_annotator.rb +1 -1
- data/lib/rbs/annotate/rdoc_source.rb +12 -3
- data/lib/rbs/ast/declarations.rb +85 -2
- data/lib/rbs/ast/directives.rb +39 -0
- data/lib/rbs/ast/members.rb +49 -15
- data/lib/rbs/ast/type_param.rb +104 -15
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +5 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +356 -0
- data/lib/rbs/cli.rb +253 -143
- data/lib/rbs/collection/cleaner.rb +8 -1
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +154 -65
- data/lib/rbs/collection/config.rb +19 -46
- data/lib/rbs/collection/installer.rb +12 -13
- data/lib/rbs/collection/sources/base.rb +2 -2
- data/lib/rbs/collection/sources/git.rb +146 -69
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +10 -12
- data/lib/rbs/collection/sources/stdlib.rb +14 -13
- data/lib/rbs/collection/sources.rb +15 -2
- data/lib/rbs/collection.rb +2 -1
- data/lib/rbs/definition.rb +13 -16
- data/lib/rbs/definition_builder/ancestor_builder.rb +100 -24
- data/lib/rbs/definition_builder/method_builder.rb +4 -4
- data/lib/rbs/definition_builder.rb +489 -584
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +406 -105
- data/lib/rbs/environment_loader.rb +48 -44
- data/lib/rbs/environment_walker.rb +1 -1
- data/lib/rbs/errors.rb +175 -56
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +8 -7
- data/lib/rbs/locator.rb +37 -15
- data/lib/rbs/method_type.rb +23 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +22 -13
- data/lib/rbs/prototype/helpers.rb +48 -22
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +125 -31
- data/lib/rbs/prototype/rbi.rb +49 -36
- 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 +273 -159
- data/lib/rbs/resolver/constant_resolver.rb +24 -8
- data/lib/rbs/resolver/type_name_resolver.rb +41 -7
- data/lib/rbs/sorter.rb +153 -123
- data/lib/rbs/substitution.rb +19 -0
- data/lib/rbs/subtractor.rb +201 -0
- data/lib/rbs/test/errors.rb +24 -11
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +45 -40
- data/lib/rbs/test/setup.rb +1 -1
- data/lib/rbs/test/tester.rb +1 -1
- data/lib/rbs/test/type_check.rb +120 -23
- data/lib/rbs/test.rb +6 -3
- data/lib/rbs/type_alias_dependency.rb +13 -3
- data/lib/rbs/type_alias_regularity.rb +21 -14
- data/lib/rbs/type_name.rb +18 -13
- data/lib/rbs/types.rb +352 -18
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +136 -0
- data/lib/rbs/unit_test/type_assertions.rb +341 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +55 -30
- data/lib/rbs/variance_calculator.rb +26 -23
- data/lib/rbs/vendorer.rb +3 -3
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +69 -22
- data/lib/rbs.rb +7 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +5 -5
- data/rbs.gemspec +12 -2
- data/schema/decls.json +1 -1
- data/schema/members.json +15 -10
- data/sig/ancestor_builder.rbs +4 -0
- data/sig/ancestor_graph.rbs +22 -2
- data/sig/annotate/formatter.rbs +2 -2
- data/sig/annotate/rdoc_annotater.rbs +1 -1
- 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 +4 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -0
- data/sig/collection/config.rbs +5 -48
- data/sig/collection/installer.rbs +1 -1
- data/sig/collection/sources.rbs +105 -33
- data/sig/constant.rbs +1 -1
- data/sig/declarations.rbs +42 -3
- data/sig/definition.rbs +26 -10
- data/sig/definition_builder.rbs +103 -81
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +61 -0
- data/sig/environment.rbs +175 -29
- data/sig/environment_loader.rbs +20 -18
- data/sig/errors.rbs +123 -2
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +0 -3
- data/sig/locator.rbs +14 -2
- data/sig/manifest.yaml +0 -1
- data/sig/members.rbs +32 -9
- data/sig/method_types.rbs +10 -4
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +55 -16
- data/sig/prototype/helpers.rbs +4 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +10 -2
- data/sig/prototype/rbi.rbs +2 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +1 -1
- data/sig/rdoc/rbs.rbs +4 -0
- data/sig/repository.rbs +7 -5
- data/sig/resolver/constant_resolver.rbs +3 -4
- data/sig/resolver/context.rbs +1 -1
- data/sig/resolver/type_name_resolver.rbs +5 -1
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +23 -5
- data/sig/substitution.rbs +6 -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 +31 -0
- data/sig/type_alias_regularity.rbs +12 -6
- data/sig/type_param.rbs +45 -9
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +119 -12
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +28 -0
- data/sig/unit_test/type_assertions.rbs +194 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/validator.rbs +12 -5
- data/sig/variance_calculator.rbs +3 -1
- data/sig/vendorer.rbs +1 -1
- data/sig/visitor.rbs +47 -0
- data/sig/writer.rbs +6 -2
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +793 -0
- data/stdlib/base64/0/base64.rbs +298 -45
- data/stdlib/benchmark/0/benchmark.rbs +12 -3
- data/stdlib/bigdecimal/0/big_decimal.rbs +62 -198
- data/stdlib/cgi/0/core.rbs +68 -15
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +50 -11
- data/stdlib/csv/0/csv.rbs +90 -119
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +806 -735
- data/stdlib/date/0/date_time.rbs +70 -211
- data/stdlib/dbm/0/dbm.rbs +0 -2
- 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 +3 -8
- data/stdlib/digest/0/digest.rbs +48 -35
- data/stdlib/erb/0/erb.rbs +15 -39
- data/stdlib/etc/0/etc.rbs +174 -54
- data/stdlib/fileutils/0/fileutils.rbs +1234 -385
- data/stdlib/forwardable/0/forwardable.rbs +4 -4
- data/stdlib/io-console/0/io-console.rbs +82 -17
- data/stdlib/ipaddr/0/ipaddr.rbs +11 -6
- data/stdlib/json/0/json.rbs +434 -151
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +0 -2
- data/stdlib/logger/0/log_device.rbs +1 -3
- data/stdlib/logger/0/logger.rbs +465 -328
- data/stdlib/minitest/0/kernel.rbs +2 -2
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
- data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
- data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
- 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/mock.rbs +9 -5
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
- data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
- data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
- data/stdlib/minitest/0/minitest/spec.rbs +1 -1
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +7 -7
- data/stdlib/minitest/0/minitest/test.rbs +7 -14
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit.rbs +1 -2
- data/stdlib/minitest/0/minitest.rbs +41 -892
- data/stdlib/monitor/0/monitor.rbs +91 -10
- data/stdlib/mutex_m/0/mutex_m.rbs +0 -2
- data/stdlib/net-http/0/manifest.yaml +1 -1
- data/stdlib/net-http/0/net-http.rbs +3858 -964
- 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 +35 -5
- data/stdlib/objspace/0/objspace.rbs +40 -18
- 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 +1 -0
- data/stdlib/openssl/0/openssl.rbs +681 -316
- data/stdlib/optparse/0/optparse.rbs +100 -65
- data/stdlib/pathname/0/pathname.rbs +24 -15
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +2 -6
- data/stdlib/pstore/0/pstore.rbs +370 -156
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/{yaml → psych}/0/dbm.rbs +3 -3
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +402 -0
- data/stdlib/{yaml → psych}/0/store.rbs +2 -2
- data/stdlib/pty/0/pty.rbs +63 -11
- 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 +13 -380
- 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/resolv.rbs +16 -79
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -3
- data/stdlib/socket/0/addrinfo.rbs +13 -18
- data/stdlib/socket/0/basic_socket.rbs +5 -10
- data/stdlib/socket/0/ip_socket.rbs +0 -2
- data/stdlib/socket/0/socket.rbs +77 -46
- data/stdlib/socket/0/tcp_server.rbs +0 -5
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +4 -5
- data/stdlib/socket/0/unix_server.rbs +0 -5
- data/stdlib/socket/0/unix_socket.rbs +2 -4
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +188 -107
- data/stdlib/strscan/0/string_scanner.rbs +1269 -425
- data/stdlib/tempfile/0/tempfile.rbs +224 -61
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +17 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +271 -144
- data/stdlib/uri/0/file.rbs +5 -0
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +26 -22
- data/stdlib/uri/0/http.rbs +4 -4
- data/stdlib/uri/0/ldap.rbs +1 -1
- data/stdlib/uri/0/mailto.rbs +84 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/yaml/0/manifest.yaml +1 -2
- data/stdlib/yaml/0/yaml.rbs +1 -199
- 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 +1 -3
- data/stdlib/zlib/0/zstream.rbs +200 -0
- data/templates/include/rbs/constants.h.erb +20 -0
- data/templates/include/rbs/ruby_objs.h.erb +10 -0
- data/templates/src/constants.c.erb +36 -0
- data/templates/src/ruby_objs.c.erb +27 -0
- data/templates/template.rb +122 -0
- metadata +136 -36
- data/Gemfile +0 -33
- data/Gemfile.lock +0 -118
- data/core/deprecated.rbs +0 -9
- data/ext/rbs_extension/constants.c +0 -135
- data/ext/rbs_extension/ruby_objs.c +0 -525
- data/ext/rbs_extension/ruby_objs.h +0 -43
- data/lib/rbs/constant_table.rb +0 -167
- data/lib/rbs/parser_compat/lexer_error.rb +0 -6
- data/lib/rbs/parser_compat/located_value.rb +0 -7
- data/lib/rbs/parser_compat/semantics_error.rb +0 -6
- data/lib/rbs/parser_compat/syntax_error.rb +0 -6
- data/lib/rbs/test/spy.rb +0 -6
- data/lib/rbs/type_name_resolver.rb +0 -67
- data/sig/constant_table.rbs +0 -30
- data/sig/shims/abstract_syntax_tree.rbs +0 -25
- data/sig/shims/pp.rbs +0 -3
- data/sig/shims/ripper.rbs +0 -8
- data/sig/shims.rbs +0 -69
- data/sig/type_name_resolver.rbs +0 -26
- data/stdlib/minitest/0/manifest.yaml +0 -2
- data/stdlib/prime/0/integer-extension.rbs +0 -41
- data/stdlib/prime/0/manifest.yaml +0 -2
- data/stdlib/prime/0/prime.rbs +0 -372
data/sig/members.rbs
CHANGED
@@ -15,6 +15,26 @@ module RBS
|
|
15
15
|
type visibility = :public | :private
|
16
16
|
|
17
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
|
+
|
18
38
|
type kind = :instance | :singleton | :singleton_instance
|
19
39
|
|
20
40
|
# def foo: () -> void
|
@@ -26,31 +46,35 @@ module RBS
|
|
26
46
|
# ^^^ keyword
|
27
47
|
# ^^^^^ kind
|
28
48
|
# ^^^ name
|
29
|
-
# ^^^
|
49
|
+
# ^^^ overloading
|
30
50
|
#
|
31
|
-
type loc = Location[:keyword | :name, :kind | :
|
51
|
+
type loc = Location[:keyword | :name, :kind | :overloading | :visibility]
|
32
52
|
|
33
53
|
attr_reader name: Symbol
|
34
54
|
attr_reader kind: kind
|
35
|
-
attr_reader
|
55
|
+
attr_reader overloads: Array[Overload]
|
36
56
|
attr_reader annotations: Array[Annotation]
|
37
57
|
attr_reader location: loc?
|
38
58
|
attr_reader comment: Comment?
|
39
|
-
attr_reader
|
59
|
+
attr_reader overloading: bool
|
40
60
|
attr_reader visibility: visibility?
|
41
61
|
|
42
|
-
def initialize: (name: Symbol, kind: kind,
|
62
|
+
def initialize: (name: Symbol, kind: kind, overloads: Array[Overload], annotations: Array[Annotation], location: loc?, comment: Comment?, overloading: bool, visibility: visibility?) -> void
|
43
63
|
|
44
64
|
include _HashEqual
|
45
65
|
include _ToJson
|
46
66
|
|
67
|
+
# Returns true if the `def` is to define instance method
|
47
68
|
def instance?: () -> bool
|
48
69
|
|
70
|
+
# Returns true if the `def` is to define singleton method
|
49
71
|
def singleton?: () -> bool
|
50
72
|
|
51
|
-
def
|
73
|
+
# Returns true if the `def` is overloading (== with `...`)
|
74
|
+
#
|
75
|
+
def overloading?: () -> bool
|
52
76
|
|
53
|
-
def update: (?name: Symbol, ?kind: kind, ?
|
77
|
+
def update: (?name: Symbol, ?kind: kind, ?overloads: Array[Overload], ?annotations: Array[Annotation], ?location: loc?, ?comment: Comment?, ?overloading: bool, ?visibility: visibility?) -> MethodDefinition
|
54
78
|
end
|
55
79
|
|
56
80
|
module Var
|
@@ -98,8 +122,7 @@ module RBS
|
|
98
122
|
# include Array[String]
|
99
123
|
# ^^^^^^^ keyword
|
100
124
|
# ^^^^^ name
|
101
|
-
#
|
102
|
-
# ^ arg_close
|
125
|
+
# ^^^^^^^^ args
|
103
126
|
#
|
104
127
|
type loc = Location[:name | :keyword, :args]
|
105
128
|
|
data/sig/method_types.rbs
CHANGED
@@ -14,11 +14,11 @@ module RBS
|
|
14
14
|
type loc = def_loc | attr_loc
|
15
15
|
|
16
16
|
attr_reader type_params: Array[AST::TypeParam]
|
17
|
-
attr_reader type: Types::
|
17
|
+
attr_reader type: Types::function
|
18
18
|
attr_reader block: Types::Block?
|
19
19
|
attr_reader location: loc?
|
20
20
|
|
21
|
-
def initialize: (type_params: Array[AST::TypeParam], type: Types::
|
21
|
+
def initialize: (type_params: Array[AST::TypeParam], type: Types::function, block: Types::Block?, location: loc?) -> void
|
22
22
|
|
23
23
|
def ==: (untyped other) -> bool
|
24
24
|
|
@@ -29,7 +29,7 @@ module RBS
|
|
29
29
|
#
|
30
30
|
def sub: (Substitution) -> MethodType
|
31
31
|
|
32
|
-
def update: (?type_params: Array[AST::TypeParam], ?type: Types::
|
32
|
+
def update: (?type_params: Array[AST::TypeParam], ?type: Types::function, ?block: Types::Block?, ?location: loc?) -> MethodType
|
33
33
|
|
34
34
|
def free_variables: (?Set[Symbol] set) -> Set[Symbol]
|
35
35
|
|
@@ -40,7 +40,7 @@ module RBS
|
|
40
40
|
#
|
41
41
|
def map_type: () { (Types::t) -> Types::t } -> MethodType
|
42
42
|
|
43
|
-
def map_type_bound: () { (
|
43
|
+
def map_type_bound: () { (Types::t) -> Types::t } -> MethodType
|
44
44
|
|
45
45
|
def each_type: () { (Types::t) -> void } -> void
|
46
46
|
| () -> Enumerator[Types::t, void]
|
@@ -48,5 +48,11 @@ module RBS
|
|
48
48
|
def to_s: () -> String
|
49
49
|
|
50
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
|
51
57
|
end
|
52
58
|
end
|
data/sig/namespace.rbs
CHANGED
@@ -141,7 +141,6 @@ module RBS
|
|
141
141
|
end
|
142
142
|
|
143
143
|
module Kernel
|
144
|
-
#
|
145
|
-
|
146
|
-
def Namespace: (String) -> RBS::Namespace
|
144
|
+
# Deprecated: Use `RBS::Namespace.parse` instead
|
145
|
+
%a{steep:deprecated} def Namespace: (String) -> RBS::Namespace
|
147
146
|
end
|
data/sig/parser.rbs
CHANGED
@@ -1,43 +1,80 @@
|
|
1
1
|
module RBS
|
2
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
|
+
|
3
21
|
# Parse a method type and return it
|
4
22
|
#
|
5
|
-
# When `
|
6
|
-
# If no token is left in the input, it returns `nil`.
|
23
|
+
# When `range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
7
24
|
#
|
8
25
|
# ```ruby
|
26
|
+
# RBS::Parser.parse_method_type("() -> void") # => `() -> void`
|
9
27
|
# RBS::Parser.parse_method_type("() -> void", range: 0...) # => `() -> void`
|
10
28
|
# RBS::Parser.parse_method_type("() -> void () -> String", range: 11...) # => `() -> String`
|
11
29
|
# RBS::Parser.parse_method_type("() -> void () -> String", range: 23...) # => nil
|
12
30
|
# ```
|
13
31
|
#
|
14
|
-
# `
|
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
|
+
# ```
|
15
41
|
#
|
16
|
-
def self.parse_method_type: (Buffer | String, range: Range[Integer?], ?variables: Array[Symbol]) -> MethodType?
|
17
|
-
| (Buffer | String, ?line: top, ?column: top, ?variables: Array[Symbol]) -> MethodType
|
42
|
+
def self.parse_method_type: (Buffer | String, ?range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> MethodType?
|
18
43
|
|
19
44
|
# Parse a type and return it
|
20
45
|
#
|
21
|
-
# When `
|
22
|
-
# If no token is left in the input, it returns `nil`.
|
46
|
+
# When `range` keyword is specified, it starts parsing from the `begin` to the `end` of the range.
|
23
47
|
#
|
24
48
|
# ```ruby
|
49
|
+
# RBS::Parser.parse_type("String") # => `String`
|
25
50
|
# RBS::Parser.parse_type("String", range: 0...) # => `String`
|
26
51
|
# RBS::Parser.parse_type("String Integer", pos: 7...) # => `Integer`
|
27
52
|
# RBS::Parser.parse_type("String Integer", pos: 14...) # => nil
|
28
53
|
# ```
|
29
54
|
#
|
30
|
-
# `
|
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
|
+
# ```
|
31
64
|
#
|
32
|
-
def self.parse_type: (Buffer | String, range: Range[Integer?], ?variables: Array[Symbol]) -> Types::t?
|
33
|
-
| (Buffer | String, ?line: top, ?column: top, ?variables: Array[Symbol]) -> Types::t
|
65
|
+
def self.parse_type: (Buffer | String, ?range: Range[Integer?], ?variables: Array[Symbol], ?require_eof: bool) -> Types::t?
|
34
66
|
|
35
67
|
# Parse whole RBS file and return an array of declarations
|
36
68
|
#
|
37
|
-
|
69
|
+
def self.parse_signature: (Buffer | String) -> [Buffer, Array[AST::Directives::t], Array[AST::Declarations::t]]
|
70
|
+
|
71
|
+
# Parse whole RBS file and return result.
|
38
72
|
#
|
39
|
-
|
40
|
-
|
73
|
+
# ```ruby
|
74
|
+
# RBS::Parser.lex("# Comment\nmodule A\nend\n").value.map(&:type)
|
75
|
+
# # => [:tLINECOMMENT, :kMODULE, :tUIDENT, :kEND, :pEOF]
|
76
|
+
# ```
|
77
|
+
def self.lex: (Buffer | String) -> LexResult
|
41
78
|
|
42
79
|
KEYWORDS: Hash[String, bot]
|
43
80
|
|
@@ -45,11 +82,13 @@ module RBS
|
|
45
82
|
|
46
83
|
def self.buffer: (String | Buffer source) -> Buffer
|
47
84
|
|
48
|
-
def self._parse_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables,
|
85
|
+
def self._parse_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> Types::t?
|
86
|
+
|
87
|
+
def self._parse_method_type: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables, bool require_eof) -> MethodType?
|
49
88
|
|
50
|
-
def self.
|
89
|
+
def self._parse_signature: (Buffer, Integer end_pos) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
|
51
90
|
|
52
|
-
def self.
|
91
|
+
def self._lex: (Buffer, Integer end_pos) -> Array[[Symbol, Location[untyped, untyped]]]
|
53
92
|
|
54
93
|
class LocatedValue
|
55
94
|
end
|
data/sig/prototype/helpers.rbs
CHANGED
@@ -13,6 +13,10 @@ module RBS
|
|
13
13
|
|
14
14
|
def keyword_hash?: (node) -> bool
|
15
15
|
|
16
|
+
# Returns a symbol if the node is a symbol literal node
|
17
|
+
#
|
18
|
+
def symbol_literal_node?: (node) -> Symbol?
|
19
|
+
|
16
20
|
def args_from_node: (node?) -> Array[untyped]
|
17
21
|
|
18
22
|
def untyped: () -> Types::Bases::Any
|
@@ -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
|
data/sig/prototype/rb.rbs
CHANGED
@@ -12,12 +12,18 @@ module RBS
|
|
12
12
|
|
13
13
|
attr_accessor namespace: Namespace
|
14
14
|
|
15
|
-
|
15
|
+
attr_accessor in_def: bool
|
16
|
+
|
17
|
+
def initialize: (module_function: bool, singleton: bool, namespace: Namespace, in_def: bool) -> void
|
16
18
|
|
17
19
|
def method_kind: () -> method_kind
|
18
20
|
|
19
21
|
def attribute_kind: () -> (:singleton | :instance)
|
20
22
|
|
23
|
+
def enter_namespace: (Namespace) -> Context
|
24
|
+
|
25
|
+
def update: (?module_function: bool, ?singleton: bool, ?in_def: bool) -> Context
|
26
|
+
|
21
27
|
def self.initial: (?namespace: Namespace) -> Context
|
22
28
|
end
|
23
29
|
|
@@ -38,7 +44,7 @@ module RBS
|
|
38
44
|
# Returns a type name that represents the name of the constant.
|
39
45
|
# `node` must be _constant_ node, `CONST`, `COLON2`, or `COLON3` node.
|
40
46
|
#
|
41
|
-
def const_to_name!: (RubyVM::AbstractSyntaxTree::Node node) -> TypeName
|
47
|
+
def const_to_name!: (RubyVM::AbstractSyntaxTree::Node node, ?context: Context?) -> TypeName
|
42
48
|
|
43
49
|
# Returns a type name that represents the name of the constant.
|
44
50
|
# `node` can be `SELF` for `extend self` pattern.
|
@@ -83,6 +89,8 @@ module RBS
|
|
83
89
|
def is_accessibility?: (decl) -> bool
|
84
90
|
|
85
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
|
86
94
|
end
|
87
95
|
end
|
88
96
|
end
|
data/sig/prototype/rbi.rbs
CHANGED
@@ -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
CHANGED
data/sig/rdoc/rbs.rbs
CHANGED
data/sig/repository.rbs
CHANGED
@@ -3,12 +3,14 @@ module RBS
|
|
3
3
|
#
|
4
4
|
# A repository object can handle multiple repository roots.
|
5
5
|
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
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"))
|
10
11
|
#
|
11
|
-
#
|
12
|
+
# repo.lookup("minitest", "2.1.3") # => Pathname or nil
|
13
|
+
# ```
|
12
14
|
#
|
13
15
|
# If one gem version can resolve to several directories, the last added dir wins.
|
14
16
|
#
|
@@ -6,8 +6,8 @@ module RBS
|
|
6
6
|
# ```rb
|
7
7
|
# table = RBS::ConstantResolver::Table.new(env)
|
8
8
|
#
|
9
|
-
# table.children(TypeName("::Object")) # -> { ... } Returns a hash of name and constants.
|
10
|
-
# table.children(TypeName("::File::PATH_SEPARATOR")) # -> nil Returns nil because the constant is not a module.
|
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
11
|
#
|
12
12
|
# table.toplevel # -> { ... } Returns a hash of top level constants.
|
13
13
|
# ```
|
@@ -37,7 +37,7 @@ module RBS
|
|
37
37
|
|
38
38
|
def constant_of_module: (TypeName name, Environment::ClassEntry | Environment::ModuleEntry) -> Constant
|
39
39
|
|
40
|
-
def constant_of_constant: (TypeName name, Environment::
|
40
|
+
def constant_of_constant: (TypeName name, Environment::ConstantEntry) -> Constant
|
41
41
|
end
|
42
42
|
|
43
43
|
attr_reader builder: DefinitionBuilder
|
@@ -65,7 +65,6 @@ module RBS
|
|
65
65
|
# ^ <- constant_name
|
66
66
|
# ```
|
67
67
|
#
|
68
|
-
# Find the
|
69
68
|
def resolve_child: (TypeName module_name, Symbol constant_name) -> Constant?
|
70
69
|
|
71
70
|
# Returns the table of all constants accessible with `::` (colon2) operator.
|
data/sig/resolver/context.rbs
CHANGED
@@ -9,7 +9,7 @@ module RBS
|
|
9
9
|
#
|
10
10
|
# Note that the `TypeName` must be an absolute type name.
|
11
11
|
#
|
12
|
-
# The following Ruby code has context of `[[nil, TypeName("::Foo")], false]` where
|
12
|
+
# The following Ruby code has context of `[[nil, TypeName.parse("::Foo")], false]` where
|
13
13
|
#
|
14
14
|
# * `Foo` is a class defined in RBS file
|
15
15
|
# * `Bar` is not defined in RBS files
|
@@ -17,6 +17,8 @@ module RBS
|
|
17
17
|
|
18
18
|
private
|
19
19
|
|
20
|
+
attr_reader env: Environment
|
21
|
+
|
20
22
|
attr_reader all_names: Set[TypeName]
|
21
23
|
|
22
24
|
attr_reader cache: Hash[query, TypeName?]
|
@@ -25,7 +27,9 @@ module RBS
|
|
25
27
|
|
26
28
|
def try_cache: (query) { () -> TypeName? } -> TypeName?
|
27
29
|
|
28
|
-
def resolve_in: (
|
30
|
+
def resolve_in: (Symbol, context) -> TypeName?
|
31
|
+
|
32
|
+
def partition: (TypeName) -> [Symbol, TypeName?]
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
@@ -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
|