From 2c43c001d1979136c6eab77347f59836fbde46a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 13:52:45 +0000 Subject: [PATCH] build(deps-dev): bump tapioca from 0.19.1 to 0.19.2 Bumps [tapioca](https://github.com/Shopify/tapioca) from 0.19.1 to 0.19.2. - [Release notes](https://github.com/Shopify/tapioca/releases) - [Commits](https://github.com/Shopify/tapioca/compare/v0.19.1...v0.19.2) --- updated-dependencies: - dependency-name: tapioca dependency-version: 0.19.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 16 +- .../gems/{rbi@0.3.11.rbi => rbi@0.3.16.rbi} | 320 +++--- .../rbi/gems/{rbs@4.0.2.rbi => rbs@4.0.3.rbi} | 0 .../{rubydex@0.2.0.rbi => rubydex@0.2.9.rbi} | 373 +++++-- .../{spoom@1.7.13.rbi => spoom@1.8.4.rbi} | 966 ++++++++++++++---- ...{tapioca@0.19.1.rbi => tapioca@0.19.2.rbi} | 175 ++-- 6 files changed, 1391 insertions(+), 459 deletions(-) rename sorbet/rbi/gems/{rbi@0.3.11.rbi => rbi@0.3.16.rbi} (94%) rename sorbet/rbi/gems/{rbs@4.0.2.rbi => rbs@4.0.3.rbi} (100%) rename sorbet/rbi/gems/{rubydex@0.2.0.rbi => rubydex@0.2.9.rbi} (56%) rename sorbet/rbi/gems/{spoom@1.7.13.rbi => spoom@1.8.4.rbi} (85%) rename sorbet/rbi/gems/{tapioca@0.19.1.rbi => tapioca@0.19.2.rbi} (96%) diff --git a/Gemfile.lock b/Gemfile.lock index 7668dc90..57eb5bd9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -129,10 +129,10 @@ GEM racc (1.8.1) rack (3.1.21) rainbow (3.1.1) - rbi (0.3.11) + rbi (0.3.16) prism (~> 1.0) rbs (>= 4.0.1) - rbs (4.0.2) + rbs (4.0.3) logger prism (>= 1.6.0) tsort @@ -171,8 +171,8 @@ GEM parser (>= 3.3.7.2) prism (~> 1.7) ruby-progressbar (1.13.0) - rubydex (0.2.0-arm64-darwin) - rubydex (0.2.0-x86_64-linux) + rubydex (0.2.9-arm64-darwin) + rubydex (0.2.9-x86_64-linux) rubyntlm (0.6.5) base64 rubyzip (2.4.1) @@ -192,16 +192,16 @@ GEM sorbet-static-and-runtime (0.6.13341) sorbet (= 0.6.13341) sorbet-runtime (= 0.6.13341) - spoom (1.7.13) + spoom (1.8.4) erubi (>= 1.10.0) prism (>= 0.28.0) - rbi (>= 0.3.3) + rbi (>= 0.3.15) rbs (>= 4.0.0.dev.5) rexml (>= 3.2.6) sorbet-static-and-runtime (>= 0.5.10187) thor (>= 0.19.2) stringio (3.2.0) - tapioca (0.19.1) + tapioca (0.19.2) benchmark bundler (>= 2.2.25) netrc (>= 0.11.0) @@ -210,7 +210,7 @@ GEM require-hooks (>= 0.2.2) rubydex (>= 0.1.0.beta10) sorbet-static-and-runtime (>= 0.6.12698) - spoom (>= 1.7.9) + spoom (>= 1.7.16) thor (>= 1.2.0) tsort thor (1.5.0) diff --git a/sorbet/rbi/gems/rbi@0.3.11.rbi b/sorbet/rbi/gems/rbi@0.3.16.rbi similarity index 94% rename from sorbet/rbi/gems/rbi@0.3.11.rbi rename to sorbet/rbi/gems/rbi@0.3.16.rbi index 722aaf0d..8aa5f391 100644 --- a/sorbet/rbi/gems/rbi@0.3.11.rbi +++ b/sorbet/rbi/gems/rbi@0.3.16.rbi @@ -517,11 +517,11 @@ class RBI::File end def print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1236 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1245 sig { params(out: T.any(::IO, ::StringIO), indent: ::Integer, print_locs: T::Boolean).void } def rbs_print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1242 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1251 sig { params(indent: ::Integer, print_locs: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end @@ -892,11 +892,15 @@ class RBI::Loc sig { params(other: ::RBI::Loc).returns(::RBI::Loc) } def join(other); end - # pkg:gem/rbi#lib/rbi/loc.rb:61 + # pkg:gem/rbi#lib/rbi/loc.rb:52 + sig { returns(T::Boolean) } + def multiline?; end + + # pkg:gem/rbi#lib/rbi/loc.rb:68 sig { returns(T.nilable(::String)) } def source; end - # pkg:gem/rbi#lib/rbi/loc.rb:52 + # pkg:gem/rbi#lib/rbi/loc.rb:59 sig { returns(::String) } def to_s; end @@ -1216,7 +1220,7 @@ class RBI::Node end def print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1251 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1260 sig do params( out: T.any(::IO, ::StringIO), @@ -1227,7 +1231,7 @@ class RBI::Node end def rbs_print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1257 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1266 sig { params(indent: ::Integer, print_locs: T::Boolean, positional_names: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end @@ -2086,33 +2090,33 @@ module RBI::RBS; end # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:6 class RBI::RBS::MethodTypeTranslator - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:22 - sig { params(method: ::RBI::Method).void } - def initialize(method); end + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:38 + sig { params(method: ::RBI::Method, options: ::RBI::RBS::MethodTypeTranslator::Options).void } + def initialize(method, options: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:19 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:35 sig { returns(::RBI::Sig) } def result; end - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:28 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:47 sig { params(type: ::RBS::MethodType).void } def visit(type); end private - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:100 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:121 sig { params(param: ::RBS::Types::Function::Param, index: ::Integer).returns(::RBI::SigParam) } def translate_function_param(param, index); end - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:115 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:136 sig { params(type: T.untyped).returns(::RBI::Type) } def translate_type(type); end - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:42 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:63 sig { params(type: ::RBS::Types::Block).void } def visit_block_type(type); end - # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:57 + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:78 sig { params(type: ::RBS::Types::Function).void } def visit_function_type(type); end @@ -2126,8 +2130,59 @@ end # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:7 class RBI::RBS::MethodTypeTranslator::Error < ::RBI::Error; end +# pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:18 +class RBI::RBS::MethodTypeTranslator::Options + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:23 + sig { params(erase_generic_types: T::Boolean).void } + def initialize(erase_generic_types: T.unsafe(nil)); end + + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:20 + sig { returns(T::Boolean) } + def erase_generic_types; end + + class << self + # pkg:gem/rbi#lib/rbi/rbs/method_type_translator.rb:30 + sig { returns(::RBI::RBS::MethodTypeTranslator::Options) } + def default; end + end +end + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:6 class RBI::RBS::TypeTranslator + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:41 + sig { params(options: ::RBI::RBS::MethodTypeTranslator::Options).void } + def initialize(options: T.unsafe(nil)); end + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:46 + sig do + params( + type: T.any(::RBS::Types::Alias, ::RBS::Types::Bases::Any, ::RBS::Types::Bases::Bool, ::RBS::Types::Bases::Bottom, ::RBS::Types::Bases::Class, ::RBS::Types::Bases::Instance, ::RBS::Types::Bases::Nil, ::RBS::Types::Bases::Self, ::RBS::Types::Bases::Top, ::RBS::Types::Bases::Void, ::RBS::Types::ClassInstance, ::RBS::Types::ClassSingleton, ::RBS::Types::Function, ::RBS::Types::Interface, ::RBS::Types::Intersection, ::RBS::Types::Literal, ::RBS::Types::Optional, ::RBS::Types::Proc, ::RBS::Types::Record, ::RBS::Types::Tuple, ::RBS::Types::Union, ::RBS::Types::UntypedFunction, ::RBS::Types::Variable) + ).returns(::RBI::Type) + end + def translate(type); end + + private + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:220 + sig { params(type_name: ::String).returns(::String) } + def erase_t_generic_type(type_name); end + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:135 + sig { params(type: ::RBS::Types::ClassInstance).returns(::RBI::Type) } + def translate_class_instance(type); end + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:147 + sig { params(type: ::RBS::Types::Function).returns(::RBI::Type) } + def translate_function(type); end + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:215 + sig { params(type_name: ::String).returns(::String) } + def translate_t_generic_type(type_name); end + + # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:123 + sig { params(type: ::RBS::Types::Alias).returns(::RBI::Type) } + def translate_type_alias(type); end + class << self # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:33 sig do @@ -2136,26 +2191,22 @@ class RBI::RBS::TypeTranslator ).returns(::RBI::Type) end def translate(type); end + end +end - private +# pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:206 +RBI::RBS::TypeTranslator::GENERIC_TYPE_TO_SORBET_GENERIC_TYPE = T.let(T.unsafe(nil), Hash) - # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:114 - sig { params(type: ::RBS::Types::ClassInstance).returns(::RBI::Type) } - def translate_class_instance(type); end +# pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:38 +RBI::RBS::TypeTranslator::Options = RBI::RBS::MethodTypeTranslator::Options - # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:122 - sig { params(type: ::RBS::Types::Function).returns(::RBI::Type) } - def translate_function(type); end +# pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:193 +RBI::RBS::TypeTranslator::RUNTIME_GENERIC_TYPES = T.let(T.unsafe(nil), Array) - # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:169 - sig { params(type_name: ::String).returns(::String) } - def translate_t_generic_type(type_name); end +RBI::RBS::TypeTranslator::RbsType = T.type_alias { T.any(::RBS::Types::Alias, ::RBS::Types::Bases::Any, ::RBS::Types::Bases::Bool, ::RBS::Types::Bases::Bottom, ::RBS::Types::Bases::Class, ::RBS::Types::Bases::Instance, ::RBS::Types::Bases::Nil, ::RBS::Types::Bases::Self, ::RBS::Types::Bases::Top, ::RBS::Types::Bases::Void, ::RBS::Types::ClassInstance, ::RBS::Types::ClassSingleton, ::RBS::Types::Function, ::RBS::Types::Interface, ::RBS::Types::Intersection, ::RBS::Types::Literal, ::RBS::Types::Optional, ::RBS::Types::Proc, ::RBS::Types::Record, ::RBS::Types::Tuple, ::RBS::Types::Union, ::RBS::Types::UntypedFunction, ::RBS::Types::Variable) } - # pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:102 - sig { params(type: ::RBS::Types::Alias).returns(::RBI::Type) } - def translate_type_alias(type); end - end -end +# pkg:gem/rbi#lib/rbi/rbs/type_translator.rb:210 +RBI::RBS::TypeTranslator::SORBET_GENERIC_TYPE_TO_GENERIC_TYPE = T.let(T.unsafe(nil), Hash) # A comment representing a RBS type prefixed with `#:` # @@ -2168,23 +2219,24 @@ end # pkg:gem/rbi#lib/rbi/rbs_printer.rb:5 class RBI::RBSPrinter < ::RBI::Visitor - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:30 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:31 sig do params( out: T.any(::IO, ::StringIO), indent: ::Integer, print_locs: T::Boolean, positional_names: T::Boolean, - max_line_length: T.nilable(::Integer) + max_line_length: T.nilable(::Integer), + force_multiline_signatures: T::Boolean ).void end - def initialize(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil)); end + def initialize(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil), force_multiline_signatures: T.unsafe(nil)); end # pkg:gem/rbi#lib/rbi/rbs_printer.rb:15 sig { returns(::Integer) } def current_indent; end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:49 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:58 sig { void } def dedent; end @@ -2194,7 +2246,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # pkg:gem/rbi#lib/rbi/rbs_printer.rb:9 def in_visibility_group=(_arg0); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:44 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:53 sig { void } def indent; end @@ -2215,11 +2267,11 @@ class RBI::RBSPrinter < ::RBI::Visitor # Print a string without indentation nor `\n` at the end. # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:55 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:64 sig { params(string: ::String).void } def print(string); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:302 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:311 sig { params(node: ::RBI::Attr, sig: ::RBI::Sig).void } def print_attr_sig(node, sig); end @@ -2230,329 +2282,329 @@ class RBI::RBSPrinter < ::RBI::Visitor # pkg:gem/rbi#lib/rbi/rbs_printer.rb:9 def print_locs=(_arg0); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:400 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:409 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig(node, sig); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:417 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:426 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_inline(node, sig); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:479 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:488 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_multiline(node, sig); end # Print a string with indentation and `\n` at the end. # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:75 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:84 sig { params(string: ::String).void } def printl(string); end # Print a string without indentation but with a `\n` at the end. # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:61 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:70 sig { params(string: T.nilable(::String)).void } def printn(string = T.unsafe(nil)); end # Print a string with indentation but without a `\n` at the end. # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:68 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:77 sig { params(string: T.nilable(::String)).void } def printt(string = T.unsafe(nil)); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:82 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:91 sig { override.params(nodes: T::Array[::RBI::Node]).void } def visit_all(nodes); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:680 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:689 sig { override.params(node: ::RBI::Arg).void } def visit_arg(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:270 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:279 sig { params(node: ::RBI::Attr).void } def visit_attr(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:253 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:262 sig { override.params(node: ::RBI::AttrAccessor).void } def visit_attr_accessor(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:259 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:268 sig { override.params(node: ::RBI::AttrReader).void } def visit_attr_reader(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:265 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:274 sig { override.params(node: ::RBI::AttrWriter).void } def visit_attr_writer(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:124 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:133 sig { override.params(node: ::RBI::BlankLine).void } def visit_blank_line(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:612 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:621 sig { override.params(node: ::RBI::BlockParam).void } def visit_block_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:144 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:153 sig { override.params(node: ::RBI::Class).void } def visit_class(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:107 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:116 sig { override.params(node: ::RBI::Comment).void } def visit_comment(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:816 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:825 sig { override.params(node: ::RBI::ConflictTree).void } def visit_conflict_tree(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:237 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:246 sig { override.params(node: ::RBI::Const).void } def visit_const(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:624 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:633 sig { override.params(node: ::RBI::Extend).void } def visit_extend(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:94 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:103 sig { override.params(file: ::RBI::File).void } def visit_file(file); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:789 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:798 sig { override.params(node: ::RBI::Group).void } def visit_group(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:777 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:786 sig { override.params(node: ::RBI::Helper).void } def visit_helper(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:618 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:627 sig { override.params(node: ::RBI::Include).void } def visit_include(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:686 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:695 sig { override.params(node: ::RBI::KwArg).void } def visit_kw_arg(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:600 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:609 sig { override.params(node: ::RBI::KwOptParam).void } def visit_kw_opt_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:594 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:603 sig { override.params(node: ::RBI::KwParam).void } def visit_kw_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:606 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:615 sig { override.params(node: ::RBI::KwRestParam).void } def visit_kw_rest_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:325 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:334 sig { override.params(node: ::RBI::Method).void } def visit_method(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:783 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:792 sig { override.params(node: ::RBI::MixesInClassMethods).void } def visit_mixes_in_class_methods(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:629 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:638 sig { params(node: ::RBI::Mixin).void } def visit_mixin(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:138 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:147 sig { override.params(node: ::RBI::Module).void } def visit_module(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:574 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:583 sig { override.params(node: ::RBI::OptParam).void } def visit_opt_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:659 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:668 sig { override.params(node: ::RBI::Private).void } def visit_private(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:653 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:662 sig { override.params(node: ::RBI::Protected).void } def visit_protected(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:647 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:656 sig { override.params(node: ::RBI::Public).void } def visit_public(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:564 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:573 sig { override.params(node: ::RBI::ReqParam).void } def visit_req_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:810 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:819 sig { override.params(node: ::RBI::RequiresAncestor).void } def visit_requires_ancestor(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:584 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:593 sig { override.params(node: ::RBI::RestParam).void } def visit_rest_param(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:161 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:170 sig { params(node: ::RBI::Scope).void } def visit_scope(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:224 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:233 sig { params(node: ::RBI::Scope).void } def visit_scope_body(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:826 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:835 sig { override.params(node: ::RBI::ScopeConflict).void } def visit_scope_conflict(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:171 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:180 sig { params(node: ::RBI::Scope).void } def visit_scope_header(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:674 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:683 sig { override.params(node: ::RBI::Send).void } def visit_send(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:545 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:554 sig { params(node: ::RBI::Sig).void } def visit_sig(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:558 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:567 sig { params(node: ::RBI::SigParam).void } def visit_sig_param(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:156 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:165 sig { override.params(node: ::RBI::SingletonClass).void } def visit_singleton_class(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:150 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:159 sig { override.params(node: ::RBI::Struct).void } def visit_struct(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:743 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:752 sig { override.params(node: ::RBI::TEnum).void } def visit_tenum(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:749 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:758 sig { override.params(node: ::RBI::TEnumBlock).void } def visit_tenum_block(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:755 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:764 sig { override.params(node: ::RBI::TEnumValue).void } def visit_tenum_value(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:130 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:139 sig { override.params(node: ::RBI::Tree).void } def visit_tree(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:692 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:701 sig { override.params(node: ::RBI::TStruct).void } def visit_tstruct(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:727 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:736 sig { override.params(node: ::RBI::TStructConst).void } def visit_tstruct_const(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:735 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:744 sig { override.params(node: ::RBI::TStructProp).void } def visit_tstruct_prop(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:771 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:780 sig { override.params(node: ::RBI::TypeMember).void } def visit_type_member(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:664 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:673 sig { params(node: ::RBI::Visibility).void } def visit_visibility(node); end # @override # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:796 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:805 sig { override.params(node: ::RBI::VisibilityGroup).void } def visit_visibility_group(node); end private - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:929 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:938 sig { params(node: ::RBI::Node).returns(T::Boolean) } def oneline?(node); end @@ -2560,31 +2612,31 @@ class RBI::RBSPrinter < ::RBI::Visitor # # Returns `nil` is the string is not a `T.let`. # - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:963 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:972 sig { params(code: T.nilable(::String)).returns(T.nilable(::String)) } def parse_t_let(code); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:951 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:960 sig { params(type: T.any(::RBI::Type, ::String)).returns(::RBI::Type) } def parse_type(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:842 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:851 sig { params(node: ::RBI::Node).void } def print_blank_line_before(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:861 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:870 sig { params(node: ::RBI::Node).void } def print_loc(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:903 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:912 sig { params(node: ::RBI::Param, last: T::Boolean).void } def print_param_comment_leading_space(node, last:); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:867 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:876 sig { params(node: ::RBI::Method, param: ::RBI::SigParam).void } def print_sig_param(node, param); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:921 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:930 sig { params(node: ::RBI::SigParam, last: T::Boolean).void } def print_sig_param_comment_leading_space(node, last:); end end @@ -3292,23 +3344,27 @@ end # # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:7 class RBI::Rewriters::TranslateRBSSigs < ::RBI::Visitor + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:11 + sig { void } + def initialize; end + # @override # - # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:12 + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:18 sig { override.params(node: T.nilable(::RBI::Node)).void } def visit(node); end private - # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:34 + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:40 sig { params(node: T.any(::RBI::Attr, ::RBI::Method)).returns(T::Array[::RBI::RBSComment]) } def extract_rbs_comments(node); end - # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:61 + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:67 sig { params(node: ::RBI::Attr, comment: ::RBI::RBSComment).returns(::RBI::Sig) } def translate_rbs_attr_type(node, comment); end - # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:53 + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:59 sig { params(node: ::RBI::Method, comment: ::RBI::RBSComment).returns(::RBI::Sig) } def translate_rbs_method_type(node, comment); end end @@ -3962,7 +4018,7 @@ class RBI::Tree < ::RBI::NodeWithComments sig { void } def sort_nodes!; end - # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:82 + # pkg:gem/rbi#lib/rbi/rewriters/translate_rbs_sigs.rb:88 sig { void } def translate_rbs_sigs!; end end @@ -4043,7 +4099,7 @@ class RBI::Type sig { abstract.returns(::RBI::Type) } def normalize; end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1266 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1275 sig { returns(::String) } def rbs_string; end @@ -5136,99 +5192,99 @@ class RBI::TypeMember < ::RBI::NodeWithComments def value; end end -# pkg:gem/rbi#lib/rbi/rbs_printer.rb:984 +# pkg:gem/rbi#lib/rbi/rbs_printer.rb:993 class RBI::TypePrinter - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:989 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:998 sig { params(max_line_length: T.nilable(::Integer)).void } def initialize(max_line_length: T.unsafe(nil)); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:986 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:995 sig { returns(::String) } def string; end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:995 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1004 sig { params(node: ::RBI::Type).void } def visit(node); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1117 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1126 sig { params(type: ::RBI::Type::All).void } def visit_all(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1127 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1136 sig { params(type: ::RBI::Type::Any).void } def visit_any(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1062 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1071 sig { params(type: ::RBI::Type::Anything).void } def visit_anything(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1087 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1096 sig { params(type: ::RBI::Type::AttachedClass).void } def visit_attached_class(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1046 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1055 sig { params(type: ::RBI::Type::Boolean).void } def visit_boolean(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1194 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1203 sig { params(type: ::RBI::Type::Class).void } def visit_class(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1105 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1114 sig { params(type: ::RBI::Type::ClassOf).void } def visit_class_of(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1051 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1060 sig { params(type: ::RBI::Type::Generic).void } def visit_generic(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1201 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1210 sig { params(type: ::RBI::Type::Module).void } def visit_module(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1092 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1101 sig { params(type: ::RBI::Type::Nilable).void } def visit_nilable(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1072 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1081 sig { params(type: ::RBI::Type::NoReturn).void } def visit_no_return(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1167 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1176 sig { params(type: ::RBI::Type::Proc).void } def visit_proc(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1082 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1091 sig { params(type: ::RBI::Type::SelfType).void } def visit_self_type(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1147 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1156 sig { params(type: ::RBI::Type::Shape).void } def visit_shape(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1041 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1050 sig { params(type: ::RBI::Type::Simple).void } def visit_simple(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1137 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1146 sig { params(type: ::RBI::Type::Tuple).void } def visit_tuple(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1189 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1198 sig { params(type: ::RBI::Type::TypeParameter).void } def visit_type_parameter(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1077 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1086 sig { params(type: ::RBI::Type::Untyped).void } def visit_untyped(type); end - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1067 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1076 sig { params(type: ::RBI::Type::Void).void } def visit_void(type); end private - # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1210 + # pkg:gem/rbi#lib/rbi/rbs_printer.rb:1219 sig { params(type_name: ::String).returns(::String) } def translate_t_type(type_name); end end diff --git a/sorbet/rbi/gems/rbs@4.0.2.rbi b/sorbet/rbi/gems/rbs@4.0.3.rbi similarity index 100% rename from sorbet/rbi/gems/rbs@4.0.2.rbi rename to sorbet/rbi/gems/rbs@4.0.3.rbi diff --git a/sorbet/rbi/gems/rubydex@0.2.0.rbi b/sorbet/rbi/gems/rubydex@0.2.9.rbi similarity index 56% rename from sorbet/rbi/gems/rubydex@0.2.0.rbi rename to sorbet/rbi/gems/rubydex@0.2.9.rbi index cc5f3937..23f30594 100644 --- a/sorbet/rbi/gems/rubydex@0.2.0.rbi +++ b/sorbet/rbi/gems/rubydex@0.2.9.rbi @@ -11,20 +11,35 @@ # pkg:gem/rubydex#lib/rubydex/version.rb:3 module Rubydex; end +# Raised when `MethodAliasDefinition#target` walks an alias chain that loops back on itself. +# +# pkg:gem/rubydex#lib/rubydex/errors.rb:7 +class Rubydex::AliasCycleError < ::Rubydex::Error; end + class Rubydex::AttrAccessorDefinition < ::Rubydex::Definition; end class Rubydex::AttrReaderDefinition < ::Rubydex::Definition; end class Rubydex::AttrWriterDefinition < ::Rubydex::Definition; end -class Rubydex::Class < ::Rubydex::Namespace; end + +# pkg:gem/rubydex#lib/rubydex/declaration.rb:30 +class Rubydex::Class < ::Rubydex::Namespace + include ::Rubydex::Visibility + + # pkg:gem/rubydex#lib/rubydex.rb:11 + def visibility; end +end class Rubydex::ClassDefinition < ::Rubydex::Definition + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Mixin]) } def mixins; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.nilable(Rubydex::ConstantReference)) } def superclass; end end class Rubydex::ClassVariable < ::Rubydex::Declaration + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[T.untyped]) } def references; end end @@ -46,25 +61,49 @@ class Rubydex::Comment def string; end end +# Raised by `Graph#load_config` when the requested config file does not exist, cannot be read, or is malformed +# +# pkg:gem/rubydex#lib/rubydex/errors.rb:10 +class Rubydex::ConfigError < ::Rubydex::Error; end + +# pkg:gem/rubydex#lib/rubydex/declaration.rb:43 class Rubydex::Constant < ::Rubydex::Declaration + include ::Rubydex::Visibility + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::ConstantReference]) } def references; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 + def visibility; end end +# pkg:gem/rubydex#lib/rubydex/declaration.rb:47 class Rubydex::ConstantAlias < ::Rubydex::Declaration + include ::Rubydex::Visibility + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::ConstantReference]) } def references; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.nilable(Rubydex::Declaration)) } def target; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 + def visibility; end end class Rubydex::ConstantAliasDefinition < ::Rubydex::Definition; end class Rubydex::ConstantDefinition < ::Rubydex::Definition; end class Rubydex::ConstantReference < ::Rubydex::Reference + abstract! + + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(Rubydex::Location) } def location; end @@ -75,25 +114,32 @@ end class Rubydex::ConstantVisibilityDefinition < ::Rubydex::Definition; end -# pkg:gem/rubydex#lib/rubydex/declaration.rb:4 +# pkg:gem/rubydex#lib/rubydex/declaration.rb:15 class Rubydex::Declaration + abstract! + + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Definition]) } def definitions; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def name; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(Rubydex::Declaration) } def owner; end # @abstract # - # pkg:gem/rubydex#lib/rubydex/declaration.rb:7 + # pkg:gem/rubydex#lib/rubydex/declaration.rb:18 sig { returns(T::Enumerable[Rubydex::Reference]) } def references; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def unqualified_name; end @@ -106,20 +152,40 @@ class Rubydex::Declaration end class Rubydex::Definition + abstract! + + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Comment]) } def comments; end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { returns(T.nilable(Rubydex::Declaration)) } + def declaration; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Boolean) } def deprecated?; end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { returns(T::Array[Rubydex::Definition]) } + def lexical_nesting; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { returns(T.nilable(Rubydex::Definition)) } + def lexical_owner; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(Rubydex::Location) } def location; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def name; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.nilable(Rubydex::Location)) } def name_location; end @@ -153,31 +219,44 @@ end # A one based location intended for display purposes. This is what should be used when displaying a location to users, # like in CLIs # -# pkg:gem/rubydex#lib/rubydex/location.rb:70 +# pkg:gem/rubydex#lib/rubydex/location.rb:83 class Rubydex::DisplayLocation < ::Rubydex::Location # Normalize to zero-based for comparison with Location # - # pkg:gem/rubydex#lib/rubydex/location.rb:81 + # pkg:gem/rubydex#lib/rubydex/location.rb:105 sig { returns([String, Integer, Integer, Integer, Integer]) } def comparable_values; end # Returns itself # - # pkg:gem/rubydex#lib/rubydex/location.rb:74 + # pkg:gem/rubydex#lib/rubydex/location.rb:98 sig { returns(Rubydex::DisplayLocation) } def to_display; end - # pkg:gem/rubydex#lib/rubydex/location.rb:86 + # pkg:gem/rubydex#lib/rubydex/location.rb:110 sig { returns(String) } def to_s; end + + class << self + # pkg:gem/rubydex#lib/rubydex/location.rb:86 + sig { params(prism_location: Prism::Location, uri: String).returns(T.noreturn) } + def from_prism(prism_location, uri:); end + end end class Rubydex::Document + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Definition]) } def definitions; end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { returns(T::Enumerable[Rubydex::MethodReference]) } + def method_references; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def uri; end @@ -189,7 +268,8 @@ class Rubydex::Document end end -class Rubydex::Error < StandardError; end +# pkg:gem/rubydex#lib/rubydex/errors.rb:4 +class Rubydex::Error < ::StandardError; end # Represents `extend SomeModule` # @@ -208,6 +288,7 @@ class Rubydex::Failure end class Rubydex::GlobalVariable < ::Rubydex::Declaration + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[T.untyped]) } def references; end end @@ -221,120 +302,125 @@ class Rubydex::GlobalVariableDefinition < ::Rubydex::Definition; end # # pkg:gem/rubydex#lib/rubydex/graph.rb:7 class Rubydex::Graph - # pkg:gem/rubydex#lib/rubydex/graph.rb:24 + # pkg:gem/rubydex#lib/rubydex/graph.rb:11 sig { params(workspace_path: T.nilable(String)).void } def initialize(workspace_path: nil); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(fully_qualified_name: String).returns(T.nilable(Rubydex::Declaration)) } def [](fully_qualified_name); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Failure]) } def check_integrity; end - # Returns completion candidates for an expression context. This includes all keywords, constants, methods, instance - # variables, class variables and global variables reachable from the current lexical scope and self type. - # - # The nesting array represents the lexical scope stack, where the last element is the self type. An empty array - # defaults to `Object` as the self type (top-level context). - sig { params(nesting: T::Array[String]).returns(T::Array[T.any(Rubydex::Declaration, Rubydex::Keyword)]) } - def complete_expression(nesting); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + def complete_expression(*_arg0); end - # Returns completion candidates inside a method call's argument list (e.g., `foo.bar(|)`). This includes everything - # that expression completion provides plus keyword argument names of the method being called. - # - # The nesting array represents the lexical scope stack, where the last element is the self type. - sig do - params( - name: String, - nesting: T::Array[String] - ).returns(T::Array[T.any(Rubydex::Declaration, Rubydex::Keyword, Rubydex::KeywordParameter)]) - end - def complete_method_argument(name, nesting); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + def complete_method_argument(*_arg0); end - # Returns completion candidates after a method call operator (e.g., `foo.`). This includes all methods that exist on - # the type of the receiver and its ancestors. - sig { params(name: String).returns(T::Array[Rubydex::Method]) } - def complete_method_call(name); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + def complete_method_call(*_arg0); end - # Returns completion candidates after a namespace access operator (e.g., `Foo::`). This includes all constants and - # singleton methods for the namespace and its ancestors. - sig { params(name: String).returns(T::Array[Rubydex::Declaration]) } - def complete_namespace_access(name); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + def complete_namespace_access(*_arg0); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::ConstantReference]) } def constant_references; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Declaration]) } def declarations; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(uri: String).returns(T.nilable(Rubydex::Document)) } def delete_document(uri); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Diagnostic]) } def diagnostics; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(uri: String).returns(T.nilable(Rubydex::Document)) } def document(uri); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Document]) } def documents; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(encoding: String).void } def encoding=(encoding); end - sig { params(paths: T::Array[String]).void } - def exclude_paths(paths); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { params(patterns: T::Array[String]).void } + def exclude_patterns(patterns); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[String]) } - def excluded_paths; end + def excluded_patterns; end - sig { params(query: String).returns(T::Enumerable[Rubydex::Declaration]) } - def fuzzy_search(query); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { params(queries: String).returns(T::Enumerable[Rubydex::Declaration]) } + def fuzzy_search(*queries); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(file_paths: T::Array[String]).returns(T::Array[String]) } def index_all(file_paths); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(uri: String, source: String, language_id: String).void } def index_source(uri, source, language_id); end - # Index all files and dependencies of the workspace that exists in `@workspace_path` + # Index all files and dependencies of the workspace that exists in `workspace_path` # - # pkg:gem/rubydex#lib/rubydex/graph.rb:32 + # pkg:gem/rubydex#lib/rubydex/graph.rb:17 sig { returns(T::Array[String]) } def index_workspace; end + # pkg:gem/rubydex#lib/rubydex.rb:11 def keyword(_arg0); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + def load_config(*_arg0); end + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::MethodReference]) } def method_references; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(load_paths: T::Array[String]).returns(T::Array[String]) } def require_paths(load_paths); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.self_type) } def resolve; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(name: String, nesting: T::Array[String]).returns(T.nilable(Rubydex::Declaration)) } def resolve_constant(name, nesting); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(require_path: String, load_paths: T::Array[String]).returns(T.nilable(Rubydex::Document)) } def resolve_require_path(require_path, load_paths); end - sig { params(query: String).returns(T::Enumerable[Rubydex::Declaration]) } - def search(query); end + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { params(queries: String).returns(T::Enumerable[Rubydex::Declaration]) } + def search(*queries); end - # pkg:gem/rubydex#lib/rubydex/graph.rb:21 + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def workspace_path; end - # pkg:gem/rubydex#lib/rubydex/graph.rb:21 + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(workspace_path: String).returns(String) } def workspace_path=(workspace_path); end - # Returns all workspace paths that should be indexed, excluding directories that we don't need to descend into such - # as `.git`, `node_modules`. Also includes any top level Ruby files + # Returns all workspace paths that should be indexed # - # pkg:gem/rubydex#lib/rubydex/graph.rb:40 + # pkg:gem/rubydex#lib/rubydex/graph.rb:24 sig { returns(T::Array[String]) } def workspace_paths; end @@ -344,19 +430,19 @@ class Rubydex::Graph # to the list of paths. This method does not require `rbs` to be a part of the bundle. It searches for whatever # latest installation of `rbs` exists in the system and fails silently if we can't find one # - # pkg:gem/rubydex#lib/rubydex/graph.rb:87 + # pkg:gem/rubydex#lib/rubydex/graph.rb:70 sig { params(paths: T::Array[String]).void } def add_core_rbs_definition_paths(paths); end # Gathers the paths we have to index for all workspace dependencies # - # pkg:gem/rubydex#lib/rubydex/graph.rb:63 + # pkg:gem/rubydex#lib/rubydex/graph.rb:46 sig { params(paths: T::Array[String]).void } def add_workspace_dependency_paths(paths); end end # pkg:gem/rubydex#lib/rubydex/graph.rb:8 -Rubydex::Graph::IGNORED_DIRECTORIES = T.let(T.unsafe(nil), Array) +Rubydex::Graph::INDEXABLE_EXTENSIONS = T.let(T.unsafe(nil), Array) # Represents `include SomeModule` # @@ -364,6 +450,7 @@ Rubydex::Graph::IGNORED_DIRECTORIES = T.let(T.unsafe(nil), Array) class Rubydex::Include < ::Rubydex::Mixin; end class Rubydex::InstanceVariable < ::Rubydex::Declaration + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[T.untyped]) } def references; end end @@ -406,15 +493,15 @@ end class Rubydex::Location include ::Comparable - # pkg:gem/rubydex#lib/rubydex/location.rb:18 + # pkg:gem/rubydex#lib/rubydex/location.rb:31 sig { params(uri: String, start_line: Integer, end_line: Integer, start_column: Integer, end_column: Integer).void } def initialize(uri:, start_line:, end_line:, start_column:, end_column:); end - # pkg:gem/rubydex#lib/rubydex/location.rb:38 + # pkg:gem/rubydex#lib/rubydex/location.rb:51 sig { params(other: T.untyped).returns(T.nilable(Integer)) } def <=>(other); end - # pkg:gem/rubydex#lib/rubydex/location.rb:45 + # pkg:gem/rubydex#lib/rubydex/location.rb:58 sig { returns([String, Integer, Integer, Integer, Integer]) } def comparable_values; end @@ -436,43 +523,71 @@ class Rubydex::Location # Turns this zero based location into a one based location for display purposes. # - # pkg:gem/rubydex#lib/rubydex/location.rb:52 + # pkg:gem/rubydex#lib/rubydex/location.rb:65 sig { returns(Rubydex::DisplayLocation) } def to_display; end - # pkg:gem/rubydex#lib/rubydex/location.rb:27 + # pkg:gem/rubydex#lib/rubydex/location.rb:40 sig { returns(String) } def to_file_path; end - # pkg:gem/rubydex#lib/rubydex/location.rb:63 + # pkg:gem/rubydex#lib/rubydex/location.rb:76 sig { returns(String) } def to_s; end # pkg:gem/rubydex#lib/rubydex/location.rb:12 sig { returns(String) } def uri; end + + class << self + # pkg:gem/rubydex#lib/rubydex/location.rb:19 + sig { params(prism_location: Prism::Location, uri: String).returns(Rubydex::Location) } + def from_prism(prism_location, uri:); end + end end # pkg:gem/rubydex#lib/rubydex/location.rb:7 class Rubydex::Location::NotFileUriError < ::StandardError; end +# pkg:gem/rubydex#lib/rubydex/declaration.rb:51 class Rubydex::Method < ::Rubydex::Declaration + include ::Rubydex::Visibility + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::MethodReference]) } def references; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 + def visibility; end end -class Rubydex::MethodAliasDefinition < ::Rubydex::Definition; end -class Rubydex::MethodDefinition < ::Rubydex::Definition; end +class Rubydex::MethodAliasDefinition < ::Rubydex::Definition + # pkg:gem/rubydex#lib/rubydex.rb:11 + def signatures; end + + # pkg:gem/rubydex#lib/rubydex.rb:11 + sig { returns(T.nilable(Rubydex::Method)) } + def target; end +end + +class Rubydex::MethodDefinition < ::Rubydex::Definition + # pkg:gem/rubydex#lib/rubydex.rb:11 + def signatures; end +end class Rubydex::MethodReference < ::Rubydex::Reference + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(Rubydex::Location) } def location; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def name; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.nilable(Rubydex::Declaration)) } def receiver; end end @@ -481,6 +596,8 @@ class Rubydex::MethodVisibilityDefinition < ::Rubydex::Definition; end # pkg:gem/rubydex#lib/rubydex/mixin.rb:4 class Rubydex::Mixin + abstract! + # pkg:gem/rubydex#lib/rubydex/mixin.rb:9 sig { params(constant_reference: Rubydex::ConstantReference).void } def initialize(constant_reference); end @@ -489,31 +606,52 @@ class Rubydex::Mixin def constant_reference; end end -class Rubydex::Module < ::Rubydex::Namespace; end +# pkg:gem/rubydex#lib/rubydex/declaration.rb:34 +class Rubydex::Module < ::Rubydex::Namespace + include ::Rubydex::Visibility + + # pkg:gem/rubydex#lib/rubydex.rb:11 + def visibility; end +end class Rubydex::ModuleDefinition < ::Rubydex::Definition + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Mixin]) } def mixins; end end +# pkg:gem/rubydex#lib/rubydex/declaration.rb:23 class Rubydex::Namespace < ::Rubydex::Declaration + abstract! + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Namespace]) } def ancestors; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Namespace]) } def descendants; end + # pkg:gem/rubydex#lib/rubydex.rb:11 def find_member(*_arg0); end + # pkg:gem/rubydex#lib/rubydex/declaration.rb:25 + sig { params(ancestor_names: String).returns(T::Boolean) } + def has_ancestor?(*ancestor_names); end + + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { params(name: String).returns(T.nilable(Rubydex::Declaration)) } def member(name); end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::Declaration]) } def members; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Enumerable[Rubydex::ConstantReference]) } def references; end + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T.nilable(Rubydex::SingletonClass)) } def singleton_class; end end @@ -523,9 +661,16 @@ end # pkg:gem/rubydex#lib/rubydex/mixin.rb:18 class Rubydex::Prepend < ::Rubydex::Mixin; end +# pkg:gem/rubydex#lib/rubydex/reference.rb:4 class Rubydex::Reference + abstract! + + # pkg:gem/rubydex#lib/rubydex.rb:11 def initialize(_arg0, _arg1); end + # pkg:gem/rubydex#lib/rubydex/reference.rb:6 + def location; end + class << self private @@ -535,13 +680,104 @@ class Rubydex::Reference end class Rubydex::ResolvedConstantReference < ::Rubydex::ConstantReference + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(Rubydex::Declaration) } def declaration; end end -class Rubydex::SingletonClass < ::Rubydex::Namespace; end +# pkg:gem/rubydex#lib/rubydex/signature.rb:4 +class Rubydex::Signature + # pkg:gem/rubydex#lib/rubydex/signature.rb:33 + def initialize(parameters); end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:128 + def block_parameter; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:38 + def deconstruct; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:80 + def deconstruct_keys(keys); end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:125 + def forward_parameter; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:116 + def keyword_parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:119 + def optional_keyword_parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:107 + def optional_positional_parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:30 + def parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:104 + def positional_parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:113 + def post_parameters; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:122 + def rest_keyword_parameter; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:110 + def rest_positional_parameter; end +end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:27 +class Rubydex::Signature::BlockParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:66 +Rubydex::Signature::DECONSTRUCT_KEYS = T.let(T.unsafe(nil), Array) + +# pkg:gem/rubydex#lib/rubydex/signature.rb:26 +class Rubydex::Signature::ForwardParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:23 +class Rubydex::Signature::KeywordParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:24 +class Rubydex::Signature::OptionalKeywordParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:20 +class Rubydex::Signature::OptionalPositionalParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:5 +class Rubydex::Signature::Parameter + # pkg:gem/rubydex#lib/rubydex/signature.rb:13 + def initialize(name, location); end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:10 + def location; end + + # pkg:gem/rubydex#lib/rubydex/signature.rb:7 + def name; end +end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:19 +class Rubydex::Signature::PositionalParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:22 +class Rubydex::Signature::PostParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:25 +class Rubydex::Signature::RestKeywordParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/signature.rb:21 +class Rubydex::Signature::RestPositionalParameter < ::Rubydex::Signature::Parameter; end + +# pkg:gem/rubydex#lib/rubydex/declaration.rb:38 +class Rubydex::SingletonClass < ::Rubydex::Namespace + # pkg:gem/rubydex#lib/rubydex/declaration.rb:40 + sig { returns(Rubydex::Declaration) } + def attached_class; end +end class Rubydex::SingletonClassDefinition < ::Rubydex::Definition + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(T::Array[Rubydex::Mixin]) } def mixins; end end @@ -549,9 +785,22 @@ end class Rubydex::Todo < ::Rubydex::Namespace; end class Rubydex::UnresolvedConstantReference < ::Rubydex::ConstantReference + # pkg:gem/rubydex#lib/rubydex.rb:11 sig { returns(String) } def name; end end # pkg:gem/rubydex#lib/rubydex/version.rb:4 Rubydex::VERSION = T.let(T.unsafe(nil), String) + +# pkg:gem/rubydex#lib/rubydex/declaration.rb:4 +module Rubydex::Visibility + # pkg:gem/rubydex#lib/rubydex/declaration.rb:9 + def private?; end + + # pkg:gem/rubydex#lib/rubydex/declaration.rb:12 + def protected?; end + + # pkg:gem/rubydex#lib/rubydex/declaration.rb:6 + def public?; end +end diff --git a/sorbet/rbi/gems/spoom@1.7.13.rbi b/sorbet/rbi/gems/spoom@1.8.4.rbi similarity index 85% rename from sorbet/rbi/gems/spoom@1.7.13.rbi rename to sorbet/rbi/gems/spoom@1.8.4.rbi index bc416d20..2f63a6c1 100644 --- a/sorbet/rbi/gems/spoom@1.7.13.rbi +++ b/sorbet/rbi/gems/spoom@1.8.4.rbi @@ -233,23 +233,24 @@ class Spoom::Cli::Srb::Assertions < ::Thor def translate(*paths); end end -# pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:10 +# pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:12 class Spoom::Cli::Srb::Bump < ::Thor include ::Spoom::Colorize include ::Spoom::Cli::Helper - # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:49 + # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:51 sig { params(directory: ::String).void } def bump(directory = T.unsafe(nil)); end + # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:205 + sig { params(context: ::Spoom::Context, files: T::Array[::String], strictness: ::String).returns(::Tempfile) } + def create_typed_override_file(context, files, strictness); end + # pkg:gem/spoom#lib/spoom/cli/srb.rb:20 def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:170 + # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:182 def print_changes(files, command:, from: T.unsafe(nil), to: T.unsafe(nil), dry: T.unsafe(nil), path: T.unsafe(nil)); end - - # pkg:gem/spoom#lib/spoom/cli/srb/bump.rb:192 - def undo_changes(files, from_strictness); end end # pkg:gem/spoom#lib/spoom/cli/srb/coverage.rb:10 @@ -390,22 +391,22 @@ class Spoom::Cli::Srb::Sigs < ::Thor include ::Spoom::Colorize include ::Spoom::Cli::Helper - # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:227 + # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:234 def exec(context, command); end - # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:95 + # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:100 def export(output_path = T.unsafe(nil)); end # pkg:gem/spoom#lib/spoom/cli/srb.rb:32 def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:76 + # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:81 def strip(*paths); end - # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:204 + # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:209 def transform_files(files, &block); end - # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:25 + # pkg:gem/spoom#lib/spoom/cli/srb/sigs.rb:29 def translate(*paths); end end @@ -414,10 +415,10 @@ class Spoom::Cli::Srb::Tc < ::Thor include ::Spoom::Colorize include ::Spoom::Cli::Helper - # pkg:gem/spoom#lib/spoom/cli/srb/tc.rb:147 + # pkg:gem/spoom#lib/spoom/cli/srb/tc.rb:151 def colorize_message(message); end - # pkg:gem/spoom#lib/spoom/cli/srb/tc.rb:138 + # pkg:gem/spoom#lib/spoom/cli/srb/tc.rb:142 def format_error(error, format); end # pkg:gem/spoom#lib/spoom/cli/srb.rb:35 @@ -522,19 +523,19 @@ module Spoom::Context::Bundle # Run a command with `bundle` in this context directory # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:29 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:33 sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) } def bundle(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end # Run a command `bundle exec` in this context directory # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:42 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:46 sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) } def bundle_exec(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end # Run `bundle install` in this context directory # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:36 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:40 sig { params(version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) } def bundle_install!(version: T.unsafe(nil), capture_err: T.unsafe(nil)); end @@ -542,11 +543,11 @@ module Spoom::Context::Bundle # # Returns `nil` if `gem` cannot be found in the Gemfile. # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:58 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:63 sig { params(gem: ::String).returns(T.nilable(::Gem::Version)) } def gem_version_from_gemfile_lock(gem); end - # pkg:gem/spoom#lib/spoom/context/bundle.rb:47 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:51 sig { returns(T::Hash[::String, ::Bundler::LazySpecification]) } def gemfile_lock_specs; end @@ -558,13 +559,13 @@ module Spoom::Context::Bundle # Read the contents of the Gemfile.lock in this context directory # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:17 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:19 sig { returns(T.nilable(::String)) } def read_gemfile_lock; end # Set the `contents` of the Gemfile in this context directory # - # pkg:gem/spoom#lib/spoom/context/bundle.rb:23 + # pkg:gem/spoom#lib/spoom/context/bundle.rb:27 sig { params(contents: ::String, append: T::Boolean).void } def write_gemfile!(contents, append: T.unsafe(nil)); end end @@ -757,35 +758,35 @@ module Spoom::Context::Sorbet # Does this context has a `sorbet/config` file? # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:103 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:108 sig { returns(T::Boolean) } def has_sorbet_config?; end # Read the strictness sigil from the file at `relative_path` (returns `nil` if no sigil) # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:126 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:131 sig { params(relative_path: ::String).returns(T.nilable(::String)) } def read_file_strictness(relative_path); end # Read the contents of `sorbet/config` in this context directory # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:114 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:119 sig { returns(::String) } def read_sorbet_config; end - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:108 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:113 sig { returns(::Spoom::Sorbet::Config) } def sorbet_config; end # Get the commit introducing the `sorbet/config` file # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:132 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:137 sig { returns(T.nilable(::Spoom::Git::Commit)) } def sorbet_intro_commit; end # Get the commit removing the `sorbet/config` file # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:144 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:149 sig { returns(T.nilable(::Spoom::Git::Commit)) } def sorbet_removal_commit; end @@ -797,13 +798,13 @@ module Spoom::Context::Sorbet # List all files typechecked by Sorbet from its `config` # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:55 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:60 sig { params(with_config: T.nilable(::Spoom::Sorbet::Config), include_rbis: T::Boolean).returns(T::Array[::String]) } def srb_files(with_config: T.unsafe(nil), include_rbis: T.unsafe(nil)); end # List all files typechecked by Sorbet from its `config` that matches `strictness` # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:88 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:93 sig do params( strictness: ::String, @@ -827,13 +828,13 @@ module Spoom::Context::Sorbet sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) } def srb_tc(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:94 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:99 sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(T.nilable(::String)) } def srb_version(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end # Set the `contents` of `sorbet/config` in this context directory # - # pkg:gem/spoom#lib/spoom/context/sorbet.rb:120 + # pkg:gem/spoom#lib/spoom/context/sorbet.rb:125 sig { params(contents: ::String, append: T::Boolean).void } def write_sorbet_config!(contents, append: T.unsafe(nil)); end end @@ -1878,8 +1879,17 @@ class Spoom::Deadcode::Plugins::ActiveModel < ::Spoom::Deadcode::Plugins::Base # pkg:gem/spoom#lib/spoom/deadcode/plugins/active_model.rb:13 sig { override.params(send: ::Spoom::Deadcode::Send).void } def on_send(send); end + + private + + # pkg:gem/spoom#lib/spoom/deadcode/plugins/active_model.rb:68 + sig { params(hash_node: ::Prism::HashNode, location: ::Spoom::Location).void } + def reference_nested_symbol_options(hash_node, location); end end +# pkg:gem/spoom#lib/spoom/deadcode/plugins/active_model.rb:51 +Spoom::Deadcode::Plugins::ActiveModel::NESTED_METHOD_REFERENCE_KEYS = T.let(T.unsafe(nil), Array) + # pkg:gem/spoom#lib/spoom/deadcode/plugins/active_record.rb:7 class Spoom::Deadcode::Plugins::ActiveRecord < ::Spoom::Deadcode::Plugins::Base # @override @@ -2053,57 +2063,58 @@ class Spoom::Deadcode::Plugins::Base # class MyPlugin < Spoom::Deadcode::Plugins::Base # def on_send(send) # return unless send.name == "dsl_method" - # return if send.args.empty? # - # method_name = send.args.first.slice.delete_prefix(":") - # @index.reference_method(method_name, send.node, send.loc) + # arg = send.args.first + # return unless arg.is_a?(Prism::SymbolNode) + # + # @index.reference_method(arg.unescaped, send.node, send.loc) # end # end # ~~~ # - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:278 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:279 sig { params(send: ::Spoom::Deadcode::Send).void } def on_send(send); end private - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:346 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:347 sig { params(name: ::String).returns(::String) } def camelize(name); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:295 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:296 sig { params(name: T.nilable(::String)).returns(T::Boolean) } def ignored_class_name?(name); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:314 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:315 sig { params(name: ::String).returns(T::Boolean) } def ignored_constant_name?(name); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:319 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:320 sig { params(name: ::String).returns(T::Boolean) } def ignored_method_name?(name); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:324 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:325 sig { params(name: ::String).returns(T::Boolean) } def ignored_module_name?(name); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:329 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:330 sig { params(name: ::String, names_variable: ::Symbol, patterns_variable: ::Symbol).returns(T::Boolean) } def ignored_name?(name, names_variable, patterns_variable); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:302 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:303 sig { params(definition: ::Spoom::Model::Class).returns(T::Boolean) } def ignored_subclass?(definition); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:334 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:335 sig { params(const: ::Symbol).returns(T::Set[::String]) } def names(const); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:339 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:340 sig { params(const: ::Symbol).returns(T::Array[::Regexp]) } def patterns(const); end - # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:287 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/base.rb:288 sig { params(definition: ::Spoom::Model::Namespace, superclass_name: ::String).returns(T::Boolean) } def subclass_of?(definition, superclass_name); end @@ -2216,11 +2227,31 @@ end class Spoom::Deadcode::Plugins::GraphQL < ::Spoom::Deadcode::Plugins::Base # @override # - # pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:27 + # pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:30 sig { override.params(send: ::Spoom::Deadcode::Send).void } def on_send(send); end + + private + + # pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:62 + sig { params(send: ::Spoom::Deadcode::Send).void } + def on_argument(send); end + + # pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:73 + sig { params(send: ::Spoom::Deadcode::Send).void } + def on_builds(send); end + + # pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:46 + sig { params(send: ::Spoom::Deadcode::Send).void } + def on_field(send); end end +# pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:26 +Spoom::Deadcode::Plugins::GraphQL::ARGUMENT_SYMBOL_OPTION_KEYS = T.let(T.unsafe(nil), Array) + +# pkg:gem/spoom#lib/spoom/deadcode/plugins/graphql.rb:25 +Spoom::Deadcode::Plugins::GraphQL::FIELD_SYMBOL_OPTION_KEYS = T.let(T.unsafe(nil), Array) + # pkg:gem/spoom#lib/spoom/deadcode/plugins/minitest.rb:7 class Spoom::Deadcode::Plugins::Minitest < ::Spoom::Deadcode::Plugins::Base # @override @@ -2365,9 +2396,9 @@ end # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:7 class Spoom::Deadcode::Remover::Error < ::Spoom::Error; end -# pkg:gem/spoom#lib/spoom/deadcode/remover.rb:366 +# pkg:gem/spoom#lib/spoom/deadcode/remover.rb:409 class Spoom::Deadcode::Remover::NodeContext - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:377 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:420 sig do params( source: ::String, @@ -2378,96 +2409,96 @@ class Spoom::Deadcode::Remover::NodeContext end def initialize(source, comments, node, nesting); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:491 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:534 sig { params(node: ::Prism::Node).returns(T::Array[::Prism::Comment]) } def attached_comments(node); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:519 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:562 sig { returns(T.nilable(::Prism::CallNode)) } def attached_sig; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:506 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:549 sig { returns(T::Array[::Prism::Node]) } def attached_sigs; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:368 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:411 sig { returns(T::Hash[::Integer, ::Prism::Comment]) } def comments; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:479 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:522 sig { params(start_line: ::Integer, end_line: ::Integer).returns(T::Array[::Prism::Comment]) } def comments_between_lines(start_line, end_line); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:374 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:417 sig { returns(T::Array[::Prism::Node]) } def nesting; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:374 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:417 def nesting=(_arg0); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:429 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:472 sig { returns(T.nilable(::Prism::Node)) } def next_node; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:418 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:461 sig { returns(T::Array[::Prism::Node]) } def next_nodes; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:371 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:414 sig { returns(::Prism::Node) } def node; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:393 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:436 sig { returns(::Spoom::Deadcode::Remover::NodeContext) } def parent_context; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:385 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:428 sig { returns(::Prism::Node) } def parent_node; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:413 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:456 sig { returns(T.nilable(::Prism::Node)) } def previous_node; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:402 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:445 sig { returns(T::Array[::Prism::Node]) } def previous_nodes; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:434 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:477 sig { returns(T.nilable(::Spoom::Deadcode::Remover::NodeContext)) } def sclass_context; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:467 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:510 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def sorbet_extend_sig?(node); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:462 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:505 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def sorbet_signature?(node); end end -# pkg:gem/spoom#lib/spoom/deadcode/remover.rb:534 +# pkg:gem/spoom#lib/spoom/deadcode/remover.rb:577 class Spoom::Deadcode::Remover::NodeFinder < ::Spoom::Visitor - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:599 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:642 sig { params(location: ::Spoom::Location, kind: T.nilable(::Spoom::Deadcode::Definition::Kind)).void } def initialize(location, kind); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:593 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:636 sig { returns(T.nilable(::Prism::Node)) } def node; end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:596 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:639 sig { returns(T::Array[::Prism::Node]) } def nodes_nesting; end # @override # - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:609 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:652 sig { override.params(node: T.nilable(::Prism::Node)).void } def visit(node); end class << self - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:537 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:580 sig do params( source: ::String, @@ -2477,7 +2508,7 @@ class Spoom::Deadcode::Remover::NodeFinder < ::Spoom::Visitor end def find(source, location, kind); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:568 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:611 sig { params(node: ::Prism::Node, kind: ::Spoom::Deadcode::Definition::Kind).returns(T::Boolean) } def node_match_kind?(node, kind); end end @@ -2505,27 +2536,27 @@ class Spoom::Deadcode::Remover::NodeRemover private - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:151 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:194 sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void } def delete_attr_accessor(context); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:325 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:368 sig { params(start_char: ::Integer, end_char: ::Integer).void } def delete_chars(start_char, end_char); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:69 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:112 sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void } def delete_constant_assignment(context); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:318 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:361 sig { params(start_line: ::Integer, end_line: ::Integer).void } def delete_lines(start_line, end_line); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:255 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:298 sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void } def delete_node_and_comments_and_sigs(context); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:212 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:255 sig do params( node: ::Prism::Node, @@ -2535,11 +2566,25 @@ class Spoom::Deadcode::Remover::NodeRemover end def insert_accessor(node, send_context, was_removed:); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:330 + # When a method is defined as the argument of a modifier call (e.g. `private def foo; end` or + # `private_class_method def self.foo; end`), the `def` node's parent is the call rather than the + # enclosing class or module body, so its sigs and comments are siblings of the call. Return a + # context targeting the outermost such call so they are removed together with the method. + # + # Modifiers are matched structurally rather than from a fixed list, so user-defined ones are + # handled too. A call only counts as a modifier when the `def` is its sole argument and it takes + # no block and is a standalone statement, so we never remove a call that does more than wrap + # the method (e.g. `register(:thing, def foo; end)` or `FOO = register(def foo; end)`). + # + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:80 + sig { params(def_node: ::Prism::DefNode).returns(T.nilable(::Spoom::Deadcode::Remover::NodeContext)) } + def modifier_call_context(def_node); end + + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:373 sig { params(start_char: ::Integer, end_char: ::Integer, replacement: ::String).void } def replace_chars(start_char, end_char, replacement); end - # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:335 + # pkg:gem/spoom#lib/spoom/deadcode/remover.rb:378 sig do params( node: ::Prism::CallNode, @@ -2626,27 +2671,27 @@ class Spoom::FileCollector private - # pkg:gem/spoom#lib/spoom/file_collector.rb:48 + # pkg:gem/spoom#lib/spoom/file_collector.rb:54 sig { params(path: ::String).returns(::String) } def clean_path(path); end - # pkg:gem/spoom#lib/spoom/file_collector.rb:65 + # pkg:gem/spoom#lib/spoom/file_collector.rb:71 sig { params(path: ::String).returns(T::Boolean) } def excluded_file?(path); end - # pkg:gem/spoom#lib/spoom/file_collector.rb:80 + # pkg:gem/spoom#lib/spoom/file_collector.rb:86 sig { params(path: ::String).returns(T::Boolean) } def excluded_path?(path); end - # pkg:gem/spoom#lib/spoom/file_collector.rb:89 + # pkg:gem/spoom#lib/spoom/file_collector.rb:95 sig { params(path: ::String).returns(T.nilable(::String)) } def mime_type_for(path); end - # pkg:gem/spoom#lib/spoom/file_collector.rb:60 + # pkg:gem/spoom#lib/spoom/file_collector.rb:66 sig { params(path: ::String).void } def visit_directory(path); end - # pkg:gem/spoom#lib/spoom/file_collector.rb:53 + # pkg:gem/spoom#lib/spoom/file_collector.rb:59 sig { params(path: ::String).void } def visit_file(path); end end @@ -3024,25 +3069,25 @@ class Spoom::LSP::Error::Diagnostics < ::Spoom::LSP::Error end end -# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:16 +# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:74 class Spoom::LSP::Hover < ::T::Struct include ::Spoom::LSP::PrintableSymbol const :contents, ::String - const :range, T.nilable(T::Range[T.untyped]) + const :range, T.nilable(::Spoom::LSP::Range) # @override # - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:34 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:92 sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void } def accept_printer(printer); end - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:40 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:98 sig { returns(::String) } def to_s; end class << self - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:24 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:82 sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) } def from_json(json); end end @@ -3110,7 +3155,7 @@ class Spoom::LSP::Notification < ::Spoom::LSP::Message def params; end end -# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:45 +# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:16 class Spoom::LSP::Position < ::T::Struct include ::Spoom::LSP::PrintableSymbol @@ -3119,16 +3164,16 @@ class Spoom::LSP::Position < ::T::Struct # @override # - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:63 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:34 sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void } def accept_printer(printer); end - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:68 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:39 sig { returns(::String) } def to_s; end class << self - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:53 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:24 sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) } def from_json(json); end end @@ -3147,7 +3192,7 @@ module Spoom::LSP::PrintableSymbol def accept_printer(printer); end end -# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:73 +# pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:44 class Spoom::LSP::Range < ::T::Struct include ::Spoom::LSP::PrintableSymbol @@ -3156,16 +3201,16 @@ class Spoom::LSP::Range < ::T::Struct # @override # - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:91 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:62 sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void } def accept_printer(printer); end - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:98 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:69 sig { returns(::String) } def to_s; end class << self - # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:81 + # pkg:gem/spoom#lib/spoom/sorbet/lsp/structures.rb:52 sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) } def from_json(json); end end @@ -4182,11 +4227,20 @@ class Spoom::Printer def printt; end end +# pkg:gem/spoom#lib/spoom/ext/prism_types.rb:5 +module Spoom::PrismTypes; end + +Spoom::PrismTypes::AnyScopeNode = T.type_alias { T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode) } + # pkg:gem/spoom#lib/spoom/rbs.rb:5 module Spoom::RBS; end # pkg:gem/spoom#lib/spoom/rbs.rb:71 -class Spoom::RBS::Annotation < ::Spoom::RBS::Comment; end +class Spoom::RBS::Annotation < ::Spoom::RBS::Comment + # pkg:gem/spoom#lib/spoom/rbs.rb:73 + sig { returns(T::Boolean) } + def abstract?; end +end # pkg:gem/spoom#lib/spoom/rbs.rb:57 class Spoom::RBS::Comment @@ -4230,17 +4284,34 @@ class Spoom::RBS::Comments def signatures; end end -# pkg:gem/spoom#lib/spoom/rbs.rb:75 +# pkg:gem/spoom#lib/spoom/rbs.rb:93 module Spoom::RBS::ExtractRBSComments - # pkg:gem/spoom#lib/spoom/rbs.rb:77 + # pkg:gem/spoom#lib/spoom/rbs.rb:95 sig { params(node: ::Prism::Node).returns(::Spoom::RBS::Comments) } def node_rbs_comments(node); end end -# pkg:gem/spoom#lib/spoom/rbs.rb:72 -class Spoom::RBS::Signature < ::Spoom::RBS::Comment; end +# pkg:gem/spoom#lib/spoom/rbs.rb:78 +class Spoom::RBS::Signature < ::Spoom::RBS::Comment + # pkg:gem/spoom#lib/spoom/rbs.rb:85 + sig do + params( + string: ::String, + location: ::Prism::Location, + continuation_locations: T::Array[::Prism::Location] + ).void + end + def initialize(string, location, continuation_locations: T.unsafe(nil)); end + + # Locations of the `#|` continuation comment lines that make up a multiline signature, + # in addition to the `#:` line tracked by `location`. + # + # pkg:gem/spoom#lib/spoom/rbs.rb:82 + sig { returns(T::Array[::Prism::Location]) } + def continuation_locations; end +end -# pkg:gem/spoom#lib/spoom/rbs.rb:73 +# pkg:gem/spoom#lib/spoom/rbs.rb:91 class Spoom::RBS::TypeAlias < ::Spoom::RBS::Comment; end # pkg:gem/spoom#lib/spoom.rb:8 @@ -4314,7 +4385,7 @@ class Spoom::Sorbet::Config # puts config.options_string # "/foo /bar --ignore /baz --allowed-extension .rb" # ~~~ # - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:64 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:66 sig { returns(::String) } def options_string; end @@ -4325,28 +4396,34 @@ class Spoom::Sorbet::Config # pkg:gem/spoom#lib/spoom/sorbet/config.rb:30 def paths=(_arg0); end + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:30 + def typed_overrides; end + + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:30 + def typed_overrides=(_arg0); end + private - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:44 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:45 sig { params(source: ::Spoom::Sorbet::Config).void } def initialize_copy(source); end class << self - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:75 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:78 sig { params(sorbet_config_path: ::String).returns(::Spoom::Sorbet::Config) } def parse_file(sorbet_config_path); end - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:80 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:83 sig { params(sorbet_config: ::String).returns(::Spoom::Sorbet::Config) } def parse_string(sorbet_config); end private - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:146 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:157 sig { params(line: ::String).returns(T::Boolean) } def parse_bool_option(line); end - # pkg:gem/spoom#lib/spoom/sorbet/config.rb:141 + # pkg:gem/spoom#lib/spoom/sorbet/config.rb:152 sig { params(line: ::String).returns(::String) } def parse_option(line); end end @@ -4388,11 +4465,11 @@ end # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:9 Spoom::Sorbet::Errors::DEFAULT_ERROR_URL_BASE = T.let(T.unsafe(nil), String) -# pkg:gem/spoom#lib/spoom/sorbet/errors.rb:149 +# pkg:gem/spoom#lib/spoom/sorbet/errors.rb:171 class Spoom::Sorbet::Errors::Error include ::Comparable - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:166 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:188 sig do params( file: T.nilable(::String), @@ -4406,79 +4483,110 @@ class Spoom::Sorbet::Errors::Error # By default errors are sorted by location # - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:177 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:199 sig { params(other: T.untyped).returns(::Integer) } def <=>(other); end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:156 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:178 def code; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:153 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:175 sig { returns(T.nilable(::String)) } def file; end # Other files associated with the error # - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:163 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:185 sig { returns(T::Set[::String]) } def files_from_error_sections; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:156 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:178 sig { returns(T.nilable(::Integer)) } def line; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:153 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:175 def message; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:159 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:181 sig { returns(T::Array[::String]) } def more; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:189 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:211 sig { returns(::REXML::Element) } def to_junit_xml_element; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:184 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:206 sig { returns(::String) } def to_s; end end +# pkg:gem/spoom#lib/spoom/sorbet/errors.rb:240 +class Spoom::Sorbet::Errors::ParseResult + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:248 + sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error], warnings: T::Array[::String]).void } + def initialize(errors, warnings); end + + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:242 + sig { returns(T::Array[::Spoom::Sorbet::Errors::Error]) } + def errors; end + + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:245 + sig { returns(T::Array[::String]) } + def warnings; end +end + # Parse errors from Sorbet output # # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:47 class Spoom::Sorbet::Errors::Parser - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:67 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:74 sig { params(error_url_base: ::String).void } def initialize(error_url_base: T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:74 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:82 sig { params(output: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) } def parse(output); end + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:87 + sig { params(output: ::String).returns(::Spoom::Sorbet::Errors::ParseResult) } + def parse_result(output); end + private - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:138 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:155 sig { params(line: ::String).void } def append_error(line); end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:130 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:166 + sig { params(warning: ::String).void } + def append_warning(warning); end + + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:147 sig { void } def close_error; end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:97 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:114 sig { params(error_url_base: ::String).returns(::Regexp) } def error_line_match_regexp(error_url_base); end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:114 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:131 sig { params(line: ::String).returns(T.nilable(::Spoom::Sorbet::Errors::Error)) } def match_error_line(line); end - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:123 + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:140 sig { params(error: ::Spoom::Sorbet::Errors::Error).void } def open_error(error); end class << self - # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:60 + # Used when callers need both parsed Sorbet errors and leading stderr warnings. + # + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:67 + sig { params(output: ::String, error_url_base: ::String).returns(::Spoom::Sorbet::Errors::ParseResult) } + def parse_result(output, error_url_base: T.unsafe(nil)); end + + # Used when only Sorbet errors are needed and leading stderr warnings can be ignored. + # + # pkg:gem/spoom#lib/spoom/sorbet/errors.rb:61 sig { params(output: ::String, error_url_base: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) } def parse_string(output, error_url_base: T.unsafe(nil)); end end @@ -4597,15 +4705,17 @@ end # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:9 module Spoom::Sorbet::Metrics::MetricsFileParser class << self - # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:14 + # Raises if `path` doesn't point to a valid file that we have access to (see `File.read` for details) + # + # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:15 sig { params(path: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) } def parse_file(path, prefix = T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:24 + # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:25 sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(Spoom::Counters) } def parse_hash(obj, prefix = T.unsafe(nil)); end - # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:19 + # pkg:gem/spoom#lib/spoom/sorbet/metrics/metrics_file_parser.rb:20 sig { params(string: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) } def parse_string(string, prefix = T.unsafe(nil)); end end @@ -4622,20 +4732,26 @@ module Spoom::Sorbet::Sigils class << self # changes the sigil in the file at the passed path to the specified new strictness # - # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:65 + # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:72 sig { params(path: T.any(::Pathname, ::String), new_strictness: ::String).returns(T::Boolean) } def change_sigil_in_file(path, new_strictness); end # changes the sigil to have a new strictness in a list of files # - # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:76 + # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:83 sig { params(path_list: T::Array[::String], new_strictness: ::String).returns(T::Array[::String]) } def change_sigil_in_files(path_list, new_strictness); end + # returns true if the passed content contains a valid sigil + # + # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:49 + sig { params(content: ::String).returns(T::Boolean) } + def contains_valid_sigil?(content); end + # returns a string containing the strictness of a sigil in a file at the passed path # * returns nil if no sigil # - # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:56 + # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:63 sig { params(path: T.any(::Pathname, ::String)).returns(T.nilable(::String)) } def file_strictness(path); end @@ -4653,7 +4769,7 @@ module Spoom::Sorbet::Sigils # returns a string which is the passed content but with the sigil updated to a new strictness # - # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:49 + # pkg:gem/spoom#lib/spoom/sorbet/sigils.rb:56 sig { params(content: ::String, new_strictness: ::String).returns(::String) } def update_sigil(content, new_strictness); end @@ -4695,14 +4811,21 @@ module Spoom::Sorbet::Translate # Converts all the RBS comments in the given Ruby code to `sig` nodes. # It also handles type members and class annotations. # - # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:57 - sig { params(ruby_contents: ::String, file: ::String, max_line_length: T.nilable(::Integer)).returns(::String) } - def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil)); end + # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:63 + sig do + params( + ruby_contents: ::String, + file: ::String, + max_line_length: T.nilable(::Integer), + overloads_strategy: ::Symbol + ).returns(::String) + end + def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil)); end # Converts all `T.let` and `T.cast` nodes to RBS comments in the given Ruby code. # It also handles type members and class annotations. # - # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:72 + # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:83 sig do params( ruby_contents: ::String, @@ -4719,79 +4842,173 @@ module Spoom::Sorbet::Translate # Converts all `sig` nodes to RBS comments in the given Ruby code. # It also handles type members and class annotations. # - # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:37 + # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:39 sig do params( ruby_contents: ::String, file: ::String, positional_names: T::Boolean, + preserve_multiline_signatures: T::Boolean, max_line_length: T.nilable(::Integer), translate_generics: T::Boolean, translate_helpers: T::Boolean, translate_abstract_methods: T::Boolean ).returns(::String) end - def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end + def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), preserve_multiline_signatures: T.unsafe(nil), max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end # Deletes all `sig` nodes from the given Ruby code. # It doesn't handle type members and class annotations. # - # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:22 + # pkg:gem/spoom#lib/spoom/sorbet/translate.rb:23 sig { params(ruby_contents: ::String, file: ::String).returns(::String) } def strip_sorbet_sigs(ruby_contents, file:); end end end -# pkg:gem/spoom#lib/spoom/sorbet/translate.rb:16 +# pkg:gem/spoom#lib/spoom/sorbet/translate.rb:17 class Spoom::Sorbet::Translate::Error < ::Spoom::Error; end +# Walks a Prism AST and records the locations of various bits of code +# whose locations we want to remain constant after a rewriter. +# +# pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:144 +class Spoom::Sorbet::Translate::LandmarkFinder < ::Prism::Visitor + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:158 + sig { void } + def initialize; end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:146 + sig { returns(T::Hash[::String, T::Array[::Integer]]) } + def landmarks; end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:165 + sig { override.params(node: ::Prism::ClassNode).void } + def visit_class_node(node); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:187 + sig { override.params(node: ::Prism::DefNode).void } + def visit_def_node(node); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:172 + sig { override.params(node: ::Prism::ModuleNode).void } + def visit_module_node(node); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:179 + sig { override.params(node: ::Prism::SingletonClassNode).void } + def visit_singleton_class_node(node); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:199 + sig { override.params(node: ::Prism::SourceLineNode).void } + def visit_source_line_node(node); end + + private + + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:207 + sig { params(landmark_id: ::String, node: ::Prism::Node).void } + def record(landmark_id, node); end + + class << self + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:150 + sig { params(source: ::String).returns(T::Hash[::String, T::Array[::Integer]]) } + def find_landmarks_in(source); end + end +end + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:7 -class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Translate::Translator +module Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs + class << self + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:23 + sig { params(source: ::String).returns(T::Boolean) } + def contains_rbs_syntax?(source); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:32 + sig do + params( + ruby_contents: ::String, + file: ::String, + max_line_length: T.nilable(::Integer), + overloads_strategy: ::Symbol + ).returns(::String) + end + def rewrite_if_needed(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil)); end + end +end + +# @abstract +# +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:9 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat + abstract! +end + +# @abstract +# +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:9 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseTranslator < ::Spoom::Sorbet::Translate::Translator include ::Spoom::RBS::ExtractRBSComments - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:11 - sig { params(ruby_contents: ::String, file: ::String, max_line_length: T.nilable(::Integer)).void } - def initialize(ruby_contents, file:, max_line_length: T.unsafe(nil)); end + abstract! + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:13 + sig do + params( + ruby_contents: ::String, + file: ::String, + options: ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options + ).void + end + def initialize(ruby_contents, file:, options: T.unsafe(nil)); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:59 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:74 sig { override.params(node: ::Prism::CallNode).void } def visit_call_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:29 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:44 sig { override.params(node: ::Prism::ClassNode).void } def visit_class_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:53 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:68 sig { override.params(node: ::Prism::DefNode).void } def visit_def_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:37 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:52 sig { override.params(node: ::Prism::ModuleNode).void } def visit_module_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:19 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:34 sig { override.params(node: ::Prism::ProgramNode).void } def visit_program_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:45 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:60 sig { override.params(node: ::Prism::SingletonClassNode).void } def visit_singleton_class_node(node); end private - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:282 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:386 sig do params( node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), @@ -4800,31 +5017,299 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Trans end def already_extends?(node, constant_regex); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:157 + # @param is_known: true if this is an RBS annotation that we recognize + # false for some other `@`-prefixed thing, like a documentation `@param` tag. + # @abstract + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:320 + sig do + abstract + .params( + annotation: ::Spoom::RBS::Annotation, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer, + sorbet_replacement: T.nilable(::String) + ).void + end + def apply_class_annotation(annotation, parent_node:, insert_pos:, sorbet_replacement:); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:220 sig { params(node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode)).void } def apply_class_annotations(node); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:258 - sig { params(annotations: T::Array[::Spoom::RBS::Annotation], sig: ::RBI::Sig).void } + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:333 + sig do + params( + annotations: T::Array[::Spoom::RBS::Annotation], + sig: ::RBI::Sig + ).returns(T::Array[::Spoom::RBS::Annotation]) + end def apply_member_annotations(annotations, sig); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:334 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:197 + sig do + params( + signatures: T::Array[::Spoom::RBS::Signature], + method_name: ::String, + location: ::String + ).returns(T::Array[::Spoom::RBS::Signature]) + end + def apply_overloads_strategy(signatures, method_name:, location:); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:438 sig { params(comments: T::Array[::Prism::Comment]).void } def apply_type_aliases(comments); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:298 + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:402 sig { params(comments: T::Array[::Prism::Comment]).returns(T::Array[::Spoom::RBS::TypeAlias]) } def collect_type_aliases(comments); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:115 + # @abstract + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:383 + sig do + abstract + .params( + mixin_name: ::String, + into: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + at: ::Integer + ).void + end + def extend_with(mixin_name, into:, at:); end + + # Inserts a single `type_member` declaration into the class/module body. + # @abstract + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:330 + sig do + abstract + .params( + type_member: ::String, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer + ).void + end + def insert_type_member(type_member, parent_node:, insert_pos:); end + + # @overridable + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:476 + sig { overridable.params(of: ::String, to_height_of: ::Spoom::RBS::Comment).returns(::String) } + def pad_out_line_count(of:, to_height_of:); end + + # @param is_known: true if this is an RBS annotation that we recognize + # false for some other `@`-prefixed thing, like a documentation `@param` tag. + # @overridable + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:379 + sig { overridable.params(annotation: ::Spoom::RBS::Annotation, is_known: T::Boolean).void } + def rewrite_annotation(annotation, is_known:); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:142 sig { params(def_node: ::Prism::DefNode, comments: ::Spoom::RBS::Comments).void } def rewrite_def(def_node, comments); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb:77 + # Called for every overloaded method sig that we discard because it wasn't the last one. + # @abstract + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:217 + sig { abstract.params(signature: ::Spoom::RBS::Signature).void } + def rewrite_discarded_overload(signature); end + + # Rewrites the member annotation comments in the source. Called once per method, + # regardless of how many overloaded signatures share the annotations, to avoid + # emitting duplicate markers. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:369 + sig { params(annotations: T::Array[::Spoom::RBS::Annotation], known: T::Array[::Spoom::RBS::Annotation]).void } + def rewrite_member_annotations(annotations, known:); end + + # Rewrites the `#: [...]` type params comment (e.g. delete it, or mark it as translated). + # @abstract + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:325 + sig { abstract.params(signature: ::Spoom::RBS::Signature, type_params: T::Array[::RBS::AST::TypeParam]).void } + def rewrite_type_params_signature(signature, type_params:); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/base_translator.rb:92 sig { params(node: ::Prism::CallNode).void } def visit_attr(node); end end +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:12 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::HumanReadableRBIFormat < ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:19 + sig { params(max_line_length: T.nilable(::Integer)).void } + def initialize(max_line_length: T.unsafe(nil)); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:14 + sig { returns(T.nilable(::Integer)) } + def max_line_length; end + + class << self + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:29 + sig { returns(::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::HumanReadableRBIFormat) } + def default; end + end +end + +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:11 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::HumanReadableTranslator < ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseTranslator + private + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:30 + sig do + override + .params( + annotation: ::Spoom::RBS::Annotation, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer, + sorbet_replacement: T.nilable(::String) + ).void + end + def apply_class_annotation(annotation, parent_node:, insert_pos:, sorbet_replacement:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:61 + sig { override.params(mixin_name: ::String, into: ::Prism::Node, at: ::Integer).void } + def extend_with(mixin_name, into:, at:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:53 + sig do + override + .params( + type_member: ::String, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer + ).void + end + def insert_type_member(type_member, parent_node:, insert_pos:); end + + # Deletes the discarded overload from the source codes + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:17 + sig { override.params(signature: ::Spoom::RBS::Signature).void } + def rewrite_discarded_overload(signature); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/human_readable_translator.rb:45 + sig { override.params(signature: ::Spoom::RBS::Signature, type_params: T::Array[::RBS::AST::TypeParam]).void } + def rewrite_type_params_signature(signature, type_params:); end +end + +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:33 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::LineMatchedRBIFormat < ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat + class << self + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:37 + sig { returns(::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::LineMatchedRBIFormat) } + def default; end + end +end + +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:11 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::LineMatchingTranslator < ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseTranslator + private + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:32 + sig do + override + .params( + annotation: ::Spoom::RBS::Annotation, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer, + sorbet_replacement: T.nilable(::String) + ).void + end + def apply_class_annotation(annotation, parent_node:, insert_pos:, sorbet_replacement:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:85 + sig { override.params(mixin_name: ::String, into: ::Prism::Node, at: ::Integer).void } + def extend_with(mixin_name, into:, at:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:71 + sig do + override + .params( + type_member: ::String, + parent_node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), + insert_pos: ::Integer + ).void + end + def insert_type_member(type_member, parent_node:, insert_pos:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:93 + sig { override.params(of: ::String, to_height_of: ::Spoom::RBS::Comment).returns(::String) } + def pad_out_line_count(of:, to_height_of:); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:77 + sig { override.params(annotation: ::Spoom::RBS::Annotation, is_known: T::Boolean).void } + def rewrite_annotation(annotation, is_known:); end + + # Comments out the discarded overload + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:17 + sig { override.params(signature: ::Spoom::RBS::Signature).void } + def rewrite_discarded_overload(signature); end + + # @override + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/line_matching_translator.rb:51 + sig { override.params(signature: ::Spoom::RBS::Signature, type_params: T::Array[::RBS::AST::TypeParam]).void } + def rewrite_type_params_signature(signature, type_params:); end +end + +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:41 +class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:58 + sig do + params( + overloads_strategy: ::Symbol, + output_format: ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat, + translate_abstract_methods: T::Boolean + ).void + end + def initialize(overloads_strategy: T.unsafe(nil), output_format: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:48 + sig { returns(::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat) } + def output_format; end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:43 + sig { returns(::Symbol) } + def overloads_strategy; end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:51 + sig { returns(T::Boolean) } + def translate_abstract_methods; end + + class << self + # pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:78 + sig { returns(::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options) } + def default; end + end +end + +# pkg:gem/spoom#lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs/options.rb:45 +Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options::ALLOWED_OVERLOAD_STRATEGIES = T.let(T.unsafe(nil), Array) + # Translates Sorbet assertions to RBS comments. # # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:8 @@ -4857,44 +5342,56 @@ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet: private - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:176 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:178 sig { params(node: ::Prism::Node).returns(T::Boolean) } def at_end_of_line?(node); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:118 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:120 sig { params(call: ::Prism::CallNode).returns(::String) } def build_rbs_annotation(call); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:216 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:265 sig { params(assign: ::Prism::Node, value: ::Prism::Node).returns(::String) } def dedent_value(assign, value); end # Extract any trailing comment after the node # Returns [comment_text, comment_end_offset] or [nil, nil] if no comment or RBS annotation # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:196 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:198 sig { params(node: ::Prism::Node).returns([T.nilable(::String), T.nilable(::Integer)]) } def extract_trailing_comment(node); end # Check if the node has an RBS annotation comment (#:) after it # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:185 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:187 sig { params(node: ::Prism::Node).returns(T::Boolean) } def has_rbs_annotation?(node); end + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:218 + sig { params(node: ::Prism::Node, replace_end_offset: ::Integer).returns(T.nilable(::String)) } + def heredoc_body_within_range(node, replace_end_offset); end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:232 + sig { params(node: ::Prism::Node).returns(T::Array[::Integer]) } + def heredoc_end_offsets(node); end + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:71 sig { params(node: ::Prism::Node).returns(T::Boolean) } def maybe_translate_assertion(node); end + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:254 + sig { params(node: ::Prism::Node).returns(T::Boolean) } + def string_literal?(node); end + # Is this node a `T` or `::T` constant? # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:143 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:145 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t?(node); end # Is this node a `T.let` or `T.cast`? # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:156 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb:158 sig { params(node: ::Prism::CallNode).returns(T::Boolean) } def translatable_annotation?(node); end end @@ -4907,59 +5404,60 @@ Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments::LINE_BREAK = T.let(T.un # # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:9 class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Translate::Translator - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:19 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:20 sig do params( ruby_contents: ::String, file: ::String, positional_names: T::Boolean, + preserve_multiline_signatures: T::Boolean, max_line_length: T.nilable(::Integer), translate_generics: T::Boolean, translate_helpers: T::Boolean, translate_abstract_methods: T::Boolean ).void end - def initialize(ruby_contents, file:, positional_names:, max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end + def initialize(ruby_contents, file:, positional_names:, preserve_multiline_signatures: T.unsafe(nil), max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:100 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:109 sig { override.params(node: ::Prism::CallNode).void } def visit_call_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:46 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:50 sig { override.params(node: ::Prism::ClassNode).void } def visit_class_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:119 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:128 sig { override.params(node: ::Prism::ConstantWriteNode).void } def visit_constant_write_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:64 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:68 sig { override.params(node: ::Prism::DefNode).void } def visit_def_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:52 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:56 sig { override.params(node: ::Prism::ModuleNode).void } def visit_module_node(node); end # @override # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:58 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:62 sig { override.params(node: ::Prism::SingletonClassNode).void } def visit_singleton_class_node(node); end private - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:233 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:242 sig do params( parent: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), @@ -4968,41 +5466,47 @@ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Trans end def apply_class_annotation(parent, node); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:277 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:286 sig { params(sigs: T::Array[[::Prism::CallNode, ::RBI::Sig]]).void } def apply_member_annotations(sigs); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:313 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:322 sig { params(node: ::Prism::ConstantWriteNode).returns(::String) } def build_type_member_string(node); end # Collects the last signatures visited and clears the current list # - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:384 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:393 sig { returns(T::Array[[::Prism::CallNode, ::RBI::Sig]]) } def collect_last_sigs; end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:371 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:380 sig { void } def delete_extend_t_generics; end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:359 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:368 sig { void } def delete_extend_t_helpers; end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:391 - sig { params(indent: ::Integer, block: T.proc.params(arg0: ::RBI::RBSPrinter).void).returns(::String) } - def rbs_print(indent, &block); end + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:400 + sig do + params( + indent: ::Integer, + preserve_multiline_signatures: T::Boolean, + block: T.proc.params(arg0: ::RBI::RBSPrinter).void + ).returns(::String) + end + def rbs_print(indent, preserve_multiline_signatures:, &block); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:191 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:200 sig { params(node: ::Prism::CallNode).void } def visit_attr(node); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:215 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:224 sig { params(node: ::Prism::CallNode).void } def visit_extend(node); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:138 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:147 sig do params( node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode), @@ -5011,7 +5515,7 @@ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Trans end def visit_scope(node, &block); end - # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:179 + # pkg:gem/spoom#lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb:188 sig { params(node: ::Prism::CallNode).void } def visit_sig(node); end end @@ -5063,6 +5567,88 @@ class Spoom::Sorbet::Translate::Translator < ::Spoom::Visitor def sorbet_sig?(node); end end +# The outcome of comparing an original source with its rewritten form. +# +# pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:63 +class Spoom::Sorbet::Translate::ValidationResult + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:87 + sig do + params( + missing_from_rewritten_output: T::Array[{landmark_id: ::String, line: ::Integer}], + excess_in_rewritten_output: T::Array[{landmark_id: ::String, line: ::Integer}], + on_wrong_line: T::Array[{landmark_id: ::String, expected: T::Array[::Integer], actual: T::Array[::Integer]}] + ).void + end + def initialize(missing_from_rewritten_output:, excess_in_rewritten_output:, on_wrong_line:); end + + # Human-readable, one-per-line descriptions of every difference. Empty when + # the result is valid. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:104 + sig { returns(T::Array[::String]) } + def errors; end + + # Landmarks present in the rewrite with no match in the original. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:76 + sig { returns(T::Array[{landmark_id: ::String, line: ::Integer}]) } + def excess_in_rewritten_output; end + + # Landmarks present in the original but missing from the rewrite. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:72 + sig { returns(T::Array[{landmark_id: ::String, line: ::Integer}]) } + def missing_from_rewritten_output; end + + # Landmarks present in both sources, but that moved to a different line. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:80 + sig { returns(T::Array[{landmark_id: ::String, expected: T::Array[::Integer], actual: T::Array[::Integer]}]) } + def on_wrong_line; end + + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:119 + sig { params(printer: T.untyped).void } + def pretty_print(printer); end + + # True when every landmark survived the rewrite on its original line. + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:95 + sig { returns(T::Boolean) } + def valid?; end + + private + + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:137 + sig { params(lines: T::Array[::Integer]).returns(::String) } + def format_lines(lines); end +end + +Spoom::Sorbet::Translate::ValidationResult::LandmarkLocation = T.type_alias { {landmark_id: ::String, line: ::Integer} } +Spoom::Sorbet::Translate::ValidationResult::MovedLandmark = T.type_alias { {landmark_id: ::String, expected: T::Array[::Integer], actual: T::Array[::Integer]} } + +# Checks that a translation preserved the lines of every "landmark" (e.g. classes, method defs, and so on) +# so line numbers in the rewritten output still line up with the original source. +# +# pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:9 +module Spoom::Sorbet::Translate::Validator + class << self + # Compares the landmarks in both sources and returns a result describing + # what changed: + # missing_from_rewritten_output - dropped: an occurrence in the original + # that is gone from the rewrite + # excess_in_rewritten_output - added: an occurrence in the rewrite with + # no match in the original + # on_wrong_line - survived but moved to a different line + # + # pkg:gem/spoom#lib/spoom/sorbet/translate/validator.rb:25 + sig { params(original: ::String, rewritten: ::String).returns(::Spoom::Sorbet::Translate::ValidationResult) } + def validate(original, rewritten); end + end +end + +Spoom::Sorbet::Translate::Validator::LandmarkID = T.type_alias { ::String } +Spoom::Sorbet::Translate::Validator::Landmarks = T.type_alias { T::Hash[::String, T::Array[::Integer]] } + # This module provides a simple API to rewrite source code. # # Using a `Rewriter`, you can build a list of changes to apply to a source file diff --git a/sorbet/rbi/gems/tapioca@0.19.1.rbi b/sorbet/rbi/gems/tapioca@0.19.2.rbi similarity index 96% rename from sorbet/rbi/gems/tapioca@0.19.1.rbi rename to sorbet/rbi/gems/tapioca@0.19.2.rbi index e702fea2..10116f9b 100644 --- a/sorbet/rbi/gems/tapioca@0.19.1.rbi +++ b/sorbet/rbi/gems/tapioca@0.19.2.rbi @@ -49,9 +49,6 @@ class Module # pkg:gem/tapioca#lib/tapioca/runtime/trackers/mixin.rb:105 def extend_object(obj); end - # pkg:gem/tapioca#lib/tapioca/runtime/trackers/method_definition.rb:59 - def method_added(method_name); end - # pkg:gem/tapioca#lib/tapioca/runtime/trackers/mixin.rb:85 def prepend_features(constant); end end @@ -187,6 +184,25 @@ module T::Helpers def requires_ancestor(&block); end end +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:28 +module T::Private::Casts + class << self + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:34 + def cast(value, type, cast_method); end + end +end + +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:29 +module T::Private::Casts::TapiocaGenericTypeCastPatch + # https://github.com/sorbet/sorbet/commit/b8d64c7fd9a08e2b9159b5d592bc2de6d586b44a + # inlines the Module fast path in `T.let`, `T.cast`, `T.bind`, and + # `T.assert_type!`, so generic module clones can reach this cast path + # without going through `T::Utils::Private::TapiocaGenericTypeCoercePatch`. + # + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:34 + def cast(value, type, cast_method); end +end + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/proc_bind_patch.rb:28 module T::Private::Methods class << self @@ -241,17 +257,20 @@ module T::Types::Simple::NamePatch def name; end end -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:87 +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:6 module T::Utils::Private class << self - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:89 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:10 def coerce_and_check_module_types(val, check_val, check_module_type); end end end -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:88 -module T::Utils::Private::PrivateCoercePatch - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:89 +# Preserve Tapioca's generic type variables and instantiated generic +# names when Sorbet coerces them into runtime types. +# +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:9 +module T::Utils::Private::TapiocaGenericTypeCoercePatch + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_type_patch.rb:10 def coerce_and_check_module_types(val, check_val, check_module_type); end end @@ -269,6 +288,9 @@ end # For example, # the package URL for this Ruby package at version 0.1.0 is # `pkg:ruby/mattt/packageurl-ruby@0.1.0`. +# This code rewrites RBS comments back into Sorbet's signatures as the files are being loaded. +# This will allow `sorbet-runtime` to wrap the methods as if they were originally written with the `sig{}` blocks. +# This will in turn allow Tapioca to use this signatures to generate typed RBI files. # # pkg:gem/tapioca#lib/tapioca/runtime/trackers/autoload.rb:4 module Tapioca; end @@ -326,22 +348,22 @@ class Tapioca::Cli < ::Thor include ::Tapioca::ConfigHelper include ::Tapioca::EnvHelper - # pkg:gem/tapioca#lib/tapioca/cli.rb:373 + # pkg:gem/tapioca#lib/tapioca/cli.rb:383 def __print_version; end - # pkg:gem/tapioca#lib/tapioca/cli.rb:355 + # pkg:gem/tapioca#lib/tapioca/cli.rb:365 def annotations; end - # pkg:gem/tapioca#lib/tapioca/cli.rb:327 + # pkg:gem/tapioca#lib/tapioca/cli.rb:337 def check_shims; end # pkg:gem/tapioca#lib/tapioca/cli.rb:46 def configure; end - # pkg:gem/tapioca#lib/tapioca/cli.rb:146 + # pkg:gem/tapioca#lib/tapioca/cli.rb:150 def dsl(*constant_or_paths); end - # pkg:gem/tapioca#lib/tapioca/cli.rb:269 + # pkg:gem/tapioca#lib/tapioca/cli.rb:279 def gem(*gems); end # pkg:gem/tapioca#lib/tapioca/cli.rb:27 @@ -355,20 +377,20 @@ class Tapioca::Cli < ::Thor private - # pkg:gem/tapioca#lib/tapioca/cli.rb:398 + # pkg:gem/tapioca#lib/tapioca/cli.rb:408 def print_init_next_steps; end class << self # Indicates that we are running from the LSP, set using the `addon_mode!` method # - # pkg:gem/tapioca#lib/tapioca/cli.rb:382 + # pkg:gem/tapioca#lib/tapioca/cli.rb:392 def addon_mode; end - # pkg:gem/tapioca#lib/tapioca/cli.rb:385 + # pkg:gem/tapioca#lib/tapioca/cli.rb:395 sig { void } def addon_mode!; end - # pkg:gem/tapioca#lib/tapioca/cli.rb:390 + # pkg:gem/tapioca#lib/tapioca/cli.rb:400 sig { returns(T::Boolean) } def exit_on_failure?; end end @@ -433,15 +455,15 @@ class Tapioca::Commands::AbstractDsl < ::Tapioca::Commands::CommandWithoutTracke private - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:88 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:93 sig { returns(T::Array[::String]) } def all_requested_constants; end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:284 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:289 sig { params(cause: ::Symbol, files: T::Array[::String]).returns(::String) } def build_error_for_files(cause, files); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:208 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:213 sig do params( constant_name: ::String, @@ -452,7 +474,7 @@ class Tapioca::Commands::AbstractDsl < ::Tapioca::Commands::CommandWithoutTracke end def compile_dsl_rbi(constant_name, rbi, outpath: T.unsafe(nil), quiet: T.unsafe(nil)); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:150 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:155 sig do params( constant_names: T::Array[::String], @@ -461,27 +483,27 @@ class Tapioca::Commands::AbstractDsl < ::Tapioca::Commands::CommandWithoutTracke end def constantize(constant_names, ignore_missing: T.unsafe(nil)); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:175 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:180 sig { params(compiler_names: T::Array[::String]).returns(T::Array[T.class_of(Tapioca::Dsl::Compiler)]) } def constantize_compilers(compiler_names); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:344 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:349 sig { returns(T::Array[::String]) } def constants_from_requested_paths; end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:111 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:116 sig { returns(::Tapioca::Dsl::Pipeline) } def create_pipeline; end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:247 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:252 sig { params(constant_name: ::String).returns(::Pathname) } def dsl_rbi_filename(constant_name); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:136 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:141 sig { params(requested_constants: T::Array[::String], path: ::Pathname).returns(T::Set[::Pathname]) } def existing_rbi_filenames(requested_constants, path: T.unsafe(nil)); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:339 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:344 sig { params(constant: ::String).returns(::String) } def generate_command_for(constant); end @@ -489,43 +511,43 @@ class Tapioca::Commands::AbstractDsl < ::Tapioca::Commands::CommandWithoutTracke sig { params(outpath: ::Pathname, quiet: T::Boolean).returns(T::Set[::Pathname]) } def generate_dsl_rbi_files(outpath, quiet:); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:98 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:103 sig { void } def load_application; end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:226 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:231 sig { params(dir: ::Pathname).void } def perform_dsl_verification(dir); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:93 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:98 sig { returns(::Tapioca::Dsl::Pipeline) } def pipeline; end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:235 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:240 sig { params(files: T::Set[::Pathname]).void } def purge_stale_dsl_rbi_files(files); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:334 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:339 sig { params(constant: ::String).returns(::String) } def rbi_filename_for(constant); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:315 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:320 sig { params(path: ::Pathname).returns(T::Array[::Pathname]) } def rbi_files_in(path); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:293 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:298 sig { params(diff: T::Hash[::String, ::Symbol], command: ::Symbol).void } def report_diff_and_exit_if_out_of_date(diff, command); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:195 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:200 sig { params(name: ::String).returns(T.nilable(T.class_of(Tapioca::Dsl::Compiler))) } def resolve(name); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:322 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:327 sig { params(class_name: ::String).returns(::String) } def underscore(class_name); end - # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:252 + # pkg:gem/tapioca#lib/tapioca/commands/abstract_dsl.rb:257 sig { params(tmp_dir: ::Pathname).returns(T::Hash[::String, ::Symbol]) } def verify_dsl_rbi(tmp_dir:); end end @@ -867,11 +889,15 @@ end # pkg:gem/tapioca#lib/tapioca/commands/dsl_generate.rb:6 class Tapioca::Commands::DslGenerate < ::Tapioca::Commands::AbstractDsl + # pkg:gem/tapioca#lib/tapioca/commands/dsl_generate.rb:8 + sig { params(only_bootsnap_rbs_cache: T::Boolean, kwargs: T.untyped).void } + def initialize(only_bootsnap_rbs_cache: T.unsafe(nil), **kwargs); end + private # @override # - # pkg:gem/tapioca#lib/tapioca/commands/dsl_generate.rb:11 + # pkg:gem/tapioca#lib/tapioca/commands/dsl_generate.rb:17 sig { override.void } def execute; end end @@ -1291,13 +1317,13 @@ class Tapioca::Dsl::Pipeline private - # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:197 + # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:173 sig { void } def abort_if_pending_migrations!; end # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:143 sig { params(constants: T::Set[T::Module[T.anything]]).returns(T::Set[T::Module[T.anything]]) } - def filter_anonymous_and_reloaded_constants(constants); end + def filter_anonymous_constants(constants); end # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:113 sig do @@ -1318,11 +1344,11 @@ class Tapioca::Dsl::Pipeline end def gather_constants(requested_constants, requested_paths, skipped_constants); end - # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:172 + # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:148 sig { params(constant: T::Module[T.anything]).returns(T.nilable(::RBI::File)) } def rbi_for_constant(constant); end - # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:191 + # pkg:gem/tapioca#lib/tapioca/dsl/pipeline.rb:167 sig { params(error: ::String).void } def report_error(error); end end @@ -2844,6 +2870,23 @@ end # pkg:gem/tapioca#lib/tapioca/helpers/rbi_helper.rb:97 Tapioca::RBIHelper::TYPE_PARAMETER_MATCHER = T.let(T.unsafe(nil), Regexp) +# pkg:gem/tapioca#lib/tapioca/rbs/rewriter.rb:9 +module Tapioca::RBS; end + +# Raises when the host calls `Bootsnap.setup` after tapioca's setup. Host's call +# would overwrite tapioca's cache directory, so rewritten iseqs would end up in +# the host's regular cache. +# +# pkg:gem/tapioca#lib/tapioca/rbs/rewriter.rb:15 +module Tapioca::RBS::BootsnapGuard + # pkg:gem/tapioca#lib/tapioca/rbs/rewriter.rb:19 + sig { params(_kwargs: T.untyped).void } + def setup(**_kwargs); end +end + +# pkg:gem/tapioca#lib/tapioca/rbs/rewriter.rb:10 +class Tapioca::RBS::HostBootsnapSetupError < ::StandardError; end + # pkg:gem/tapioca#lib/tapioca/repo_index.rb:5 class Tapioca::RepoIndex # pkg:gem/tapioca#lib/tapioca/repo_index.rb:21 @@ -2934,7 +2977,7 @@ end # This class is responsible for storing and looking up information related to generic types. # # The class stores 2 different kinds of data, in two separate lookup tables: -# 1. a lookup of generic type instances by name: `@generic_instances` +# 1. a lookup of generic type instances by constant and name: `@generic_instances` # 2. a lookup of type variable serializer by constant and type variable # instance: `@type_variables` # @@ -2952,25 +2995,26 @@ end # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:23 module Tapioca::Runtime::GenericTypeRegistry class << self - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:71 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:73 def generic_type_instance?(instance); end - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:76 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:80 def lookup_type_variables(constant); end # This method is responsible for building the name of the instantiated concrete type # and cloning the given constant so that we can return a type that is the same # as the current type but is a different instance and has a different name method. # - # We cache those cloned instances by their name in `@generic_instances`, so that - # we don't keep instantiating a new type every single time it is referenced. + # We cache those cloned instances by their original constant and their name in + # `@generic_instances`, so that we don't keep instantiating a new type every single + # time it is referenced. # For example, `[Foo[Integer], Foo[Integer], Foo[Integer], Foo[String]]` will only # result in 2 clones (1 for `Foo[Integer]` and another for `Foo[String]`) and # 2 hash lookups (for the other two `Foo[Integer]`s). # # This method returns the created or cached clone of the constant. # - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:56 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:57 def register_type(constant, types); end # This method is called from intercepted calls to `type_member` and `type_template`. @@ -2983,19 +3027,16 @@ module Tapioca::Runtime::GenericTypeRegistry # Finally, the original `type_variable` is returned from this method, so that the caller # can return it from the original methods as well. # - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:90 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:94 def register_type_variable(constant, type_variable); end private - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:99 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:103 def create_generic_type(constant, name); end - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:141 + # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:145 def create_safe_subclass(constant); end - - # pkg:gem/tapioca#lib/tapioca/runtime/generic_type_registry.rb:168 - def lookup_or_initialize_type_variables(constant); end end end @@ -3502,12 +3543,12 @@ Tapioca::TAPIOCA_CONFIG_FILE = T.let(T.unsafe(nil), String) # pkg:gem/tapioca#lib/tapioca.rb:15 Tapioca::TAPIOCA_DIR = T.let(T.unsafe(nil), String) -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:108 +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:88 class Tapioca::TypeVariable < ::T::Types::TypeVariable - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:109 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:89 def initialize(name, variance); end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:114 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:94 def name; end end @@ -3517,36 +3558,36 @@ end # need to do any matching of constants to type variables to bind their names, Ruby will # do that automatically for us and we get the `name` method for free from `Module`. # -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:122 +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:102 class Tapioca::TypeVariableModule < ::Module - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:137 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:117 def initialize(context, type, variance, bounds_proc); end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:173 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:153 def coerce_to_type_variable; end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:153 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:133 def fixed?; end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:147 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:127 def name; end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:158 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:138 def serialize; end - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:134 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:114 def type; end private - # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:180 + # pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:160 def bounds; end end -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:131 +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:111 Tapioca::TypeVariableModule::DEFAULT_BOUNDS_PROC = T.let(T.unsafe(nil), Proc) -# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:123 +# pkg:gem/tapioca#lib/tapioca/sorbet_ext/generic_name_patch.rb:103 class Tapioca::TypeVariableModule::Type < ::T::Enum enums do HasAttachedClass = new