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/lib/rbs/validator.rb
CHANGED
@@ -6,15 +6,17 @@ module RBS
|
|
6
6
|
attr_reader :resolver
|
7
7
|
attr_reader :definition_builder
|
8
8
|
|
9
|
-
def initialize(env:, resolver:)
|
9
|
+
def initialize(env:, resolver: nil)
|
10
10
|
@env = env
|
11
11
|
@resolver = resolver
|
12
12
|
@definition_builder = DefinitionBuilder.new(env: env)
|
13
13
|
end
|
14
14
|
|
15
|
-
def absolute_type(type, context
|
15
|
+
def absolute_type(type, context:, &block)
|
16
|
+
return type unless resolver
|
17
|
+
|
16
18
|
type.map_type_name do |type_name, _, type|
|
17
|
-
resolver.resolve(type_name, context: context) || yield(type)
|
19
|
+
resolver.resolve(type_name, context: context) || (block ? yield(type) : type_name)
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -22,32 +24,34 @@ module RBS
|
|
22
24
|
def validate_type(type, context:)
|
23
25
|
case type
|
24
26
|
when Types::ClassInstance, Types::Interface, Types::Alias
|
25
|
-
|
26
|
-
if type.name.namespace.relative?
|
27
|
-
type = _ = absolute_type(type, context: context) do |_|
|
28
|
-
NoTypeFoundError.check!(type.name.absolute!, env: env, location: type.location)
|
29
|
-
end
|
30
|
-
end
|
27
|
+
type = absolute_type(type, context: context) #: Types::ClassInstance | Types::Interface | Types::Alias
|
31
28
|
|
32
29
|
definition_builder.validate_type_name(type.name, type.location)
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
31
|
+
normalized_type_name = env.normalize_type_name?(type.name)
|
32
|
+
|
33
|
+
if normalized_type_name
|
34
|
+
type_params =
|
35
|
+
case type
|
36
|
+
when Types::ClassInstance
|
37
|
+
entry = env.class_decls[normalized_type_name] or raise
|
38
|
+
entry.type_params
|
39
|
+
when Types::Interface
|
40
|
+
env.interface_decls[normalized_type_name].decl.type_params
|
41
|
+
when Types::Alias
|
42
|
+
env.type_alias_decls[normalized_type_name].decl.type_params
|
43
|
+
end
|
44
|
+
|
45
|
+
InvalidTypeApplicationError.check!(
|
46
|
+
type_name: type.name,
|
47
|
+
args: type.args,
|
48
|
+
params: type_params,
|
49
|
+
location: type.location
|
50
|
+
)
|
51
|
+
end
|
49
52
|
|
50
53
|
when Types::ClassSingleton
|
54
|
+
type = absolute_type(type, context: context) #: Types::ClassSingleton
|
51
55
|
definition_builder.validate_type_presence(type)
|
52
56
|
end
|
53
57
|
|
@@ -98,7 +102,8 @@ module RBS
|
|
98
102
|
end
|
99
103
|
|
100
104
|
def validate_method_definition(method_def, type_name:)
|
101
|
-
method_def.
|
105
|
+
method_def.overloads.each do |overload|
|
106
|
+
method_type = overload.method_type
|
102
107
|
unless method_type.type_params.empty?
|
103
108
|
loc = method_type.location&.aref(:type_params)
|
104
109
|
|
@@ -113,16 +118,16 @@ module RBS
|
|
113
118
|
end
|
114
119
|
|
115
120
|
def validate_type_params(params, type_name: , method_name: nil, location:)
|
116
|
-
# @type var each_node:
|
117
|
-
each_node =
|
121
|
+
# @type var each_node: ^() { (Symbol) -> void } -> void
|
122
|
+
each_node = -> (&block) do
|
118
123
|
params.each do |param|
|
119
124
|
block[param.name]
|
120
125
|
end
|
121
126
|
end
|
122
|
-
# @type var each_child:
|
123
|
-
each_child =
|
127
|
+
# @type var each_child: ^(Symbol) { (Symbol) -> void } -> void
|
128
|
+
each_child = -> (name, &block) do
|
124
129
|
if param = params.find {|p| p.name == name }
|
125
|
-
if b = param.
|
130
|
+
if b = param.upper_bound_type
|
126
131
|
b.free_variables.each do |tv|
|
127
132
|
block[tv]
|
128
133
|
end
|
@@ -146,6 +151,26 @@ module RBS
|
|
146
151
|
end
|
147
152
|
end
|
148
153
|
|
154
|
+
def validate_class_alias(entry:)
|
155
|
+
case env.normalize_module_name?(entry.decl.new_name)
|
156
|
+
when nil
|
157
|
+
raise NoTypeFoundError.new(type_name: entry.decl.old_name, location: entry.decl.location&.[](:old_name))
|
158
|
+
when false
|
159
|
+
raise CyclicClassAliasDefinitionError.new(entry)
|
160
|
+
end
|
161
|
+
|
162
|
+
case entry
|
163
|
+
when Environment::ClassAliasEntry
|
164
|
+
unless env.class_entry(entry.decl.old_name)
|
165
|
+
raise InconsistentClassModuleAliasError.new(entry)
|
166
|
+
end
|
167
|
+
when Environment::ModuleAliasEntry
|
168
|
+
unless env.module_entry(entry.decl.old_name)
|
169
|
+
raise InconsistentClassModuleAliasError.new(entry)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
149
174
|
def type_alias_dependency
|
150
175
|
@type_alias_dependency ||= TypeAliasDependency.new(env: env)
|
151
176
|
end
|
@@ -108,8 +108,11 @@ module RBS
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def in_type_alias(name:)
|
111
|
-
|
111
|
+
env.normalized_type_name!(name)
|
112
|
+
|
113
|
+
decl = env.type_alias_decls[name].decl or raise
|
112
114
|
variables = decl.type_params.each.map(&:name)
|
115
|
+
|
113
116
|
Result.new(variables: variables).tap do |result|
|
114
117
|
type(decl.type, result: result, context: :covariant)
|
115
118
|
end
|
@@ -129,30 +132,30 @@ module RBS
|
|
129
132
|
end
|
130
133
|
end
|
131
134
|
when Types::ClassInstance, Types::Interface, Types::Alias
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
when :contravariant
|
153
|
-
type(ty, result: result, context: negate(context))
|
135
|
+
if type_name = env.normalize_type_name?(type.name)
|
136
|
+
type_params = case type
|
137
|
+
when Types::ClassInstance
|
138
|
+
env.class_decls[type_name].type_params
|
139
|
+
when Types::Interface
|
140
|
+
env.interface_decls[type_name].decl.type_params
|
141
|
+
when Types::Alias
|
142
|
+
env.type_alias_decls[type_name].decl.type_params
|
143
|
+
end
|
144
|
+
|
145
|
+
type.args.each.with_index do |ty, i|
|
146
|
+
if var = type_params[i]
|
147
|
+
case var.variance
|
148
|
+
when :invariant
|
149
|
+
type(ty, result: result, context: :invariant)
|
150
|
+
when :covariant
|
151
|
+
type(ty, result: result, context: context)
|
152
|
+
when :contravariant
|
153
|
+
type(ty, result: result, context: negate(context))
|
154
|
+
end
|
154
155
|
end
|
155
156
|
end
|
157
|
+
else
|
158
|
+
raise NoTypeFoundError.new(type_name: type.name, location: type.location)
|
156
159
|
end
|
157
160
|
when Types::Proc
|
158
161
|
function(type.type, result: result, context: context)
|
data/lib/rbs/vendorer.rb
CHANGED
@@ -31,7 +31,7 @@ module RBS
|
|
31
31
|
|
32
32
|
if core_root = loader.core_root
|
33
33
|
RBS.logger.info "Vendoring core RBSs in #{vendor_dir + "core"}..."
|
34
|
-
|
34
|
+
FileFinder.each_file(core_root, skip_hidden: true) do |file_path|
|
35
35
|
paths << [file_path, Pathname("core") + file_path.relative_path_from(core_root)]
|
36
36
|
end
|
37
37
|
end
|
@@ -43,7 +43,7 @@ module RBS
|
|
43
43
|
|
44
44
|
RBS.logger.info "Vendoring #{lib.name}(#{spec.version}) RBSs in #{vendor_dir + dest_dir}..."
|
45
45
|
|
46
|
-
|
46
|
+
FileFinder.each_file(path, skip_hidden: true) do |file_path|
|
47
47
|
paths << [file_path, dest_dir + file_path.relative_path_from(path)]
|
48
48
|
end
|
49
49
|
|
@@ -52,7 +52,7 @@ module RBS
|
|
52
52
|
|
53
53
|
RBS.logger.info "Vendoring #{lib.name}(#{path.version}) RBSs in #{vendor_dir + dest_dir}..."
|
54
54
|
|
55
|
-
|
55
|
+
FileFinder.each_file(path.path, skip_hidden: true) do |file_path|
|
56
56
|
paths << [file_path, dest_dir + file_path.relative_path_from(path.path)]
|
57
57
|
end
|
58
58
|
else
|
data/lib/rbs/version.rb
CHANGED
data/lib/rbs/writer.rb
CHANGED
@@ -39,21 +39,27 @@ module RBS
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def format_annotation(annotation)
|
43
|
+
string = annotation.string
|
44
|
+
case
|
45
|
+
when string !~ /\}/
|
46
|
+
"%a{#{string}}"
|
47
|
+
when string !~ /\)/
|
48
|
+
"%a(#{string})"
|
49
|
+
when string !~ /\]/
|
50
|
+
"%a[#{string}]"
|
51
|
+
when string !~ /\>/
|
52
|
+
"%a<#{string}>"
|
53
|
+
when string !~ /\|/
|
54
|
+
"%a|#{string}|"
|
55
|
+
else
|
56
|
+
raise
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
42
60
|
def write_annotation(annotations)
|
43
61
|
annotations.each do |annotation|
|
44
|
-
|
45
|
-
case
|
46
|
-
when string !~ /\}/
|
47
|
-
puts "%a{#{string}}"
|
48
|
-
when string !~ /\)/
|
49
|
-
puts "%a(#{string})"
|
50
|
-
when string !~ /\]/
|
51
|
-
puts "%a[#{string}]"
|
52
|
-
when string !~ /\>/
|
53
|
-
puts "%a<#{string}>"
|
54
|
-
when string !~ /\|/
|
55
|
-
puts "%a|#{string}|"
|
56
|
-
end
|
62
|
+
puts format_annotation(annotation)
|
57
63
|
end
|
58
64
|
end
|
59
65
|
|
@@ -70,7 +76,16 @@ module RBS
|
|
70
76
|
end
|
71
77
|
end
|
72
78
|
|
73
|
-
def write(
|
79
|
+
def write(contents)
|
80
|
+
dirs = contents.select {|c| c.is_a?(AST::Directives::Base) } #: Array[AST::Directives::t]
|
81
|
+
decls = contents.select {|c| c.is_a?(AST::Declarations::Base) } #: Array[AST::Declarations::t]
|
82
|
+
|
83
|
+
dirs.each do |dir|
|
84
|
+
write_directive(dir)
|
85
|
+
end
|
86
|
+
|
87
|
+
puts unless dirs.empty?
|
88
|
+
|
74
89
|
[nil, *decls].each_cons(2) do |prev, decl|
|
75
90
|
raise unless decl
|
76
91
|
|
@@ -79,6 +94,23 @@ module RBS
|
|
79
94
|
end
|
80
95
|
end
|
81
96
|
|
97
|
+
def write_directive(dir)
|
98
|
+
clauses = dir.clauses.map do |clause|
|
99
|
+
case clause
|
100
|
+
when AST::Directives::Use::SingleClause
|
101
|
+
if clause.new_name
|
102
|
+
"#{clause.type_name} as #{clause.new_name}"
|
103
|
+
else
|
104
|
+
"#{clause.type_name}"
|
105
|
+
end
|
106
|
+
when AST::Directives::Use::WildcardClause
|
107
|
+
"#{clause.namespace}*"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
puts "use #{clauses.join(", ")}"
|
112
|
+
end
|
113
|
+
|
82
114
|
def write_decl(decl)
|
83
115
|
case decl
|
84
116
|
when AST::Declarations::Class
|
@@ -128,13 +160,25 @@ module RBS
|
|
128
160
|
write_comment decl.comment
|
129
161
|
puts "#{decl.name}: #{decl.type}"
|
130
162
|
|
131
|
-
when AST::Declarations::
|
163
|
+
when AST::Declarations::TypeAlias
|
132
164
|
write_comment decl.comment
|
133
165
|
write_annotation decl.annotations
|
134
166
|
write_loc_source(decl) {
|
135
167
|
puts "type #{name_and_params(decl.name, decl.type_params)} = #{decl.type}"
|
136
168
|
}
|
137
169
|
|
170
|
+
when AST::Declarations::ClassAlias
|
171
|
+
write_comment decl.comment
|
172
|
+
write_loc_source(decl) {
|
173
|
+
puts "class #{decl.new_name} = #{decl.old_name}"
|
174
|
+
}
|
175
|
+
|
176
|
+
when AST::Declarations::ModuleAlias
|
177
|
+
write_comment decl.comment
|
178
|
+
write_loc_source(decl) {
|
179
|
+
puts "module #{decl.new_name} = #{decl.old_name}"
|
180
|
+
}
|
181
|
+
|
138
182
|
when AST::Declarations::Interface
|
139
183
|
write_comment decl.comment
|
140
184
|
write_annotation decl.annotations
|
@@ -220,8 +264,8 @@ module RBS
|
|
220
264
|
when AST::Members::Alias
|
221
265
|
write_comment member.comment
|
222
266
|
write_annotation member.annotations
|
223
|
-
new_name = member.singleton? ? "self.#{member.new_name}" : member.new_name
|
224
|
-
old_name = member.singleton? ? "self.#{member.old_name}" : member.old_name
|
267
|
+
new_name = member.singleton? ? "self.#{method_name(member.new_name)}" : method_name(member.new_name)
|
268
|
+
old_name = member.singleton? ? "self.#{method_name(member.old_name)}" : method_name(member.old_name)
|
225
269
|
puts "alias #{new_name} #{old_name}"
|
226
270
|
when AST::Members::InstanceVariable
|
227
271
|
write_comment member.comment
|
@@ -289,17 +333,20 @@ module RBS
|
|
289
333
|
|
290
334
|
string << prefix
|
291
335
|
|
292
|
-
member.
|
336
|
+
member.overloads.each.with_index do |overload, index|
|
293
337
|
if index > 0
|
294
338
|
string << padding
|
295
339
|
string << "|"
|
296
340
|
end
|
297
341
|
|
298
|
-
|
342
|
+
overload.annotations.each do |annotation|
|
343
|
+
string << " #{format_annotation(annotation)}"
|
344
|
+
end
|
345
|
+
string << " #{overload.method_type}\n"
|
299
346
|
end
|
300
347
|
|
301
|
-
if member.
|
302
|
-
if member.
|
348
|
+
if member.overloading?
|
349
|
+
if member.overloads.size > 0
|
303
350
|
string << padding
|
304
351
|
string << "|"
|
305
352
|
end
|
@@ -338,7 +385,7 @@ module RBS
|
|
338
385
|
""
|
339
386
|
end
|
340
387
|
|
341
|
-
"#{visibility}attr_#{kind} #{receiver}#{attr.name}#{var}: #{attr.type}"
|
388
|
+
"#{visibility}attr_#{kind} #{receiver}#{method_name(attr.name)}#{var}: #{attr.type}"
|
342
389
|
end
|
343
390
|
|
344
391
|
def preserve_empty_line(prev, decl)
|
data/lib/rbs.rb
CHANGED
@@ -16,35 +16,40 @@ require "rbs/namespace"
|
|
16
16
|
require "rbs/type_name"
|
17
17
|
require "rbs/types"
|
18
18
|
require "rbs/method_type"
|
19
|
+
require "rbs/file_finder"
|
19
20
|
require "rbs/ast/type_param"
|
21
|
+
require "rbs/ast/directives"
|
20
22
|
require "rbs/ast/declarations"
|
21
23
|
require "rbs/ast/members"
|
22
24
|
require "rbs/ast/annotation"
|
25
|
+
require "rbs/ast/visitor"
|
23
26
|
require "rbs/environment"
|
27
|
+
require "rbs/environment/use_map"
|
24
28
|
require "rbs/environment_loader"
|
25
29
|
require "rbs/builtin_names"
|
26
30
|
require "rbs/definition"
|
27
31
|
require "rbs/definition_builder"
|
28
32
|
require "rbs/definition_builder/ancestor_builder"
|
29
33
|
require "rbs/definition_builder/method_builder"
|
34
|
+
require "rbs/diff"
|
30
35
|
require "rbs/variance_calculator"
|
31
36
|
require "rbs/substitution"
|
32
37
|
require "rbs/constant"
|
33
38
|
require "rbs/resolver/constant_resolver"
|
34
39
|
require "rbs/resolver/type_name_resolver"
|
35
|
-
require "rbs/constant_table"
|
36
40
|
require "rbs/ast/comment"
|
37
41
|
require "rbs/writer"
|
38
42
|
require "rbs/prototype/helpers"
|
39
43
|
require "rbs/prototype/rbi"
|
40
44
|
require "rbs/prototype/rb"
|
41
45
|
require "rbs/prototype/runtime"
|
42
|
-
require "rbs/
|
46
|
+
require "rbs/prototype/node_usage"
|
43
47
|
require "rbs/environment_walker"
|
44
48
|
require "rbs/vendorer"
|
45
49
|
require "rbs/validator"
|
46
50
|
require "rbs/factory"
|
47
51
|
require "rbs/repository"
|
52
|
+
require "rbs/subtractor"
|
48
53
|
require "rbs/ancestor_graph"
|
49
54
|
require "rbs/locator"
|
50
55
|
require "rbs/type_alias_dependency"
|
data/lib/rdoc/discover.rb
CHANGED
data/lib/rdoc_plugin/parser.rb
CHANGED
@@ -14,8 +14,8 @@ module RBS
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def scan
|
17
|
-
|
18
|
-
|
17
|
+
_, _, decls = ::RBS::Parser.parse_signature(@content)
|
18
|
+
decls.each do |decl|
|
19
19
|
parse_member(decl: decl, context: @top_level)
|
20
20
|
end
|
21
21
|
@top_level
|
@@ -74,7 +74,7 @@ module RBS
|
|
74
74
|
method = RDoc::AnyMethod.new(nil, decl.name.to_s)
|
75
75
|
method.singleton = decl.singleton?
|
76
76
|
method.visibility = decl.visibility
|
77
|
-
method.call_seq = decl.
|
77
|
+
method.call_seq = decl.overloads.map {|overload| "#{decl.name.to_s}#{overload.method_type.to_s}" }.join("\n")
|
78
78
|
if loc = decl.location
|
79
79
|
method.start_collecting_tokens
|
80
80
|
method.add_token({ line_no: 1, char_no: 1, kind: :on_comment, text: "# File #{@top_level.relative_name}, line(s) #{loc.start_line}:#{loc.end_line}\n" })
|
@@ -108,7 +108,7 @@ module RBS
|
|
108
108
|
|
109
109
|
def parse_include_decl(decl:, context:, outer_name: nil)
|
110
110
|
name = decl.name.to_s
|
111
|
-
outer_names = outer_name ? outer_name.to_s.split("::") : []
|
111
|
+
outer_names = outer_name ? outer_name.to_s.split("::") : [] #: Array[String]
|
112
112
|
qualified_name = ''
|
113
113
|
outer_names.each do |namespace|
|
114
114
|
qualified_name += namespace
|
@@ -124,7 +124,7 @@ module RBS
|
|
124
124
|
|
125
125
|
def parse_extend_decl(decl:, context:, outer_name: nil)
|
126
126
|
name = decl.name.to_s
|
127
|
-
outer_names = outer_name ? outer_name.to_s.split("::") : []
|
127
|
+
outer_names = outer_name ? outer_name.to_s.split("::") : [] #: Array[String]
|
128
128
|
qualified_name = ''
|
129
129
|
outer_names.each do |namespace|
|
130
130
|
qualified_name += namespace
|
data/rbs.gemspec
CHANGED
@@ -28,12 +28,22 @@ Gem::Specification.new do |spec|
|
|
28
28
|
# Specify which files should be added to the gem when it is released.
|
29
29
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
30
30
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
31
|
-
`git ls-files -z`.split("\x0").reject
|
31
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
32
|
+
[
|
33
|
+
%r{^(test|spec|features|bin|steep|benchmark)/},
|
34
|
+
/Gemfile/
|
35
|
+
].any? {|r| f.match(r) }
|
36
|
+
end
|
32
37
|
end
|
33
38
|
spec.extensions = %w{ext/rbs_extension/extconf.rb}
|
34
39
|
|
40
|
+
if false
|
41
|
+
spec.required_ruby_version = ">= 3.3"
|
42
|
+
end
|
43
|
+
|
35
44
|
spec.bindir = "exe"
|
36
45
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
37
46
|
spec.require_paths = ["lib"]
|
38
|
-
spec.required_ruby_version = ">=
|
47
|
+
spec.required_ruby_version = ">= 3.1"
|
48
|
+
spec.add_dependency "logger"
|
39
49
|
end
|
data/schema/decls.json
CHANGED
@@ -60,7 +60,7 @@
|
|
60
60
|
"required": ["declaration", "name", "type", "comment", "location"]
|
61
61
|
},
|
62
62
|
"global": {
|
63
|
-
"title": "Global declaration: `$DEBUG:
|
63
|
+
"title": "Global declaration: `$DEBUG: boolish`, ...",
|
64
64
|
"type": "object",
|
65
65
|
"properties": {
|
66
66
|
"declaration": {
|
data/schema/members.json
CHANGED
@@ -14,10 +14,21 @@
|
|
14
14
|
"kind": {
|
15
15
|
"enum": ["instance", "singleton", "singleton_instance"]
|
16
16
|
},
|
17
|
-
"
|
17
|
+
"overloads": {
|
18
18
|
"type": "array",
|
19
19
|
"items": {
|
20
|
-
"
|
20
|
+
"type": "object",
|
21
|
+
"properties": {
|
22
|
+
"annotations": {
|
23
|
+
"type": "array",
|
24
|
+
"items": {
|
25
|
+
"$ref": "annotation.json"
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"method_type": {
|
29
|
+
"$ref": "methodType.json"
|
30
|
+
}
|
31
|
+
}
|
21
32
|
}
|
22
33
|
},
|
23
34
|
"comment": {
|
@@ -29,23 +40,17 @@
|
|
29
40
|
"$ref": "annotation.json"
|
30
41
|
}
|
31
42
|
},
|
32
|
-
"attributes": {
|
33
|
-
"type": "array",
|
34
|
-
"items": {
|
35
|
-
"enum": ["incompatible"]
|
36
|
-
}
|
37
|
-
},
|
38
43
|
"location": {
|
39
44
|
"$ref": "location.json"
|
40
45
|
},
|
41
|
-
"
|
46
|
+
"overloading": {
|
42
47
|
"type": "boolean"
|
43
48
|
},
|
44
49
|
"visibility": {
|
45
50
|
"enum": ["public", "private", null]
|
46
51
|
}
|
47
52
|
},
|
48
|
-
"required": ["member", "name", "kind", "
|
53
|
+
"required": ["member", "name", "kind", "overloads", "comment", "annotations", "location", "visibility", "overloading"]
|
49
54
|
},
|
50
55
|
"variable": {
|
51
56
|
"title": "Declaration for instance variables and class variables",
|
data/sig/ancestor_builder.rbs
CHANGED
@@ -154,6 +154,10 @@ module RBS
|
|
154
154
|
prepended_modules: Array[Definition::Ancestor::Instance]?,
|
155
155
|
extended_modules: Array[Definition::Ancestor::Instance]?,
|
156
156
|
extended_interfaces: Array[Definition::Ancestor::Instance]?) -> void
|
157
|
+
|
158
|
+
# Fill `#source` of instance ancestor if `ancestor.name == name` and its `source` is `nil`
|
159
|
+
#
|
160
|
+
def fill_ancestor_source: (Definition::Ancestor::t, name: TypeName, source: Definition::Ancestor::Instance::source) -> Definition::Ancestor::t
|
157
161
|
end
|
158
162
|
end
|
159
163
|
end
|
data/sig/ancestor_graph.rbs
CHANGED
@@ -1,4 +1,22 @@
|
|
1
1
|
module RBS
|
2
|
+
# AncestorGraph is a utility class that helps iterating through ancestors and descendants of a class/module
|
3
|
+
#
|
4
|
+
# ```ruby
|
5
|
+
# graph = AncestorGraph.new(env: env, ancestor_builder: ancestor_builder)
|
6
|
+
#
|
7
|
+
# graph.each_parent(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
|
8
|
+
# graph.each_ancestor(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
|
9
|
+
#
|
10
|
+
# graph.each_child(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
|
11
|
+
# graph.each_descendant(AncestorGraph::InstanceNode.new(type_name: TypeName.parse("::Object")))
|
12
|
+
# ```
|
13
|
+
#
|
14
|
+
# Note that the class works for class/module declarations.
|
15
|
+
# All of the *alias* classes/modules are ignored.
|
16
|
+
#
|
17
|
+
# * Alias classes/modules doesn't count as a parent nor child
|
18
|
+
# * Passing alias classes/modules to the method doesn't yield anything
|
19
|
+
#
|
2
20
|
class AncestorGraph
|
3
21
|
class InstanceNode
|
4
22
|
attr_reader type_name: TypeName
|
@@ -19,8 +37,6 @@ module RBS
|
|
19
37
|
|
20
38
|
def initialize: (env: Environment, ?ancestor_builder: DefinitionBuilder::AncestorBuilder) -> void
|
21
39
|
|
22
|
-
def build: () -> void
|
23
|
-
|
24
40
|
def each_parent: (node) { (node) -> void } -> void
|
25
41
|
| (node) -> Enumerator[node, void]
|
26
42
|
|
@@ -33,6 +49,10 @@ module RBS
|
|
33
49
|
def each_descendant: (node, ?yielded: Set[node]) { (node) -> void } -> void
|
34
50
|
| (node) -> Enumerator[node, void]
|
35
51
|
|
52
|
+
private
|
53
|
+
|
54
|
+
def build: () -> void
|
55
|
+
|
36
56
|
def build_ancestors: (node, DefinitionBuilder::AncestorBuilder::OneAncestors) -> void
|
37
57
|
|
38
58
|
def register: (parent: node, child: node) -> void
|
data/sig/annotate/formatter.rbs
CHANGED
@@ -17,8 +17,8 @@ module RBS
|
|
17
17
|
|
18
18
|
def self.translate: (RDoc::Markup::Document) -> String?
|
19
19
|
|
20
|
-
def self.each_part: (RDoc::Markup::Document) { (RDoc::Markup::Document) -> void } -> void
|
21
|
-
| (RDoc::Markup::Document) -> Enumerator[RDoc::Markup::Document, void]
|
20
|
+
def self.each_part: (RDoc::Markup::Document | RDoc::Comment | String) { (RDoc::Markup::Document) -> void } -> void
|
21
|
+
| (RDoc::Markup::Document | RDoc::Comment | String) -> Enumerator[RDoc::Markup::Document, void]
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -17,7 +17,7 @@ module RBS
|
|
17
17
|
end
|
18
18
|
|
19
19
|
interface _WithRDocComment
|
20
|
-
def comment: () -> RDoc::Markup::Document
|
20
|
+
def comment: () -> (RDoc::Markup::Document | RDoc::Comment | String)
|
21
21
|
end
|
22
22
|
|
23
23
|
def each_part: (Array[Object & _WithRDocComment], tester: _PathTester) { ([RDoc::Markup::Document, Object & _WithRDocComment]) -> void } -> void
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module RBS
|
2
|
+
class CLI
|
3
|
+
class ColoredIO
|
4
|
+
attr_reader stdout: CLI::_IO
|
5
|
+
def initialize: (stdout: CLI::_IO) -> void
|
6
|
+
def puts_green: (String) -> void
|
7
|
+
def puts_red: (String) -> void
|
8
|
+
def puts: (?String) -> void
|
9
|
+
|
10
|
+
private def can_display_colors?: () -> bool
|
11
|
+
private def are_colors_supported?: () -> bool
|
12
|
+
private def are_colors_disabled?: () -> bool
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|