spoom 1.8.4 → 1.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ module Spoom
12
12
  #: (Array[String]? bt) -> Array[String]
13
13
  def filter(bt)
14
14
  super.select do |line|
15
- SORBET_PATHS.none? { |path| line.include?(path) }
15
+ !SORBET_PATHS.intersect?(line)
16
16
  end
17
17
  end
18
18
  end
@@ -26,6 +26,10 @@ module Spoom
26
26
  option :translate_generics, type: :boolean, desc: "Translate generics", default: false
27
27
  option :translate_helpers, type: :boolean, desc: "Translate helpers", default: false
28
28
  option :translate_abstract_methods, type: :boolean, desc: "Translate abstract methods", default: false
29
+ option :erase_generic_types,
30
+ type: :boolean,
31
+ desc: "Drop generic types when translating from RBS to RBI",
32
+ default: false
29
33
  def translate(*paths)
30
34
  from = options[:from]
31
35
  to = options[:to]
@@ -70,6 +74,7 @@ module Spoom
70
74
  contents,
71
75
  file: file,
72
76
  max_line_length: max_line_length,
77
+ erase_generic_types: options[:erase_generic_types],
73
78
  )
74
79
  end
75
80
  end
@@ -11,7 +11,7 @@ module Spoom
11
11
 
12
12
  SORT_CODE = "code"
13
13
  SORT_LOC = "loc"
14
- SORT_ENUM = [SORT_CODE, SORT_LOC]
14
+ SORT_ENUM = [SORT_CODE, SORT_LOC].freeze
15
15
 
16
16
  DEFAULT_FORMAT = "%C - %F:%L: %M"
17
17
 
data/lib/spoom/cli.rb CHANGED
@@ -79,7 +79,7 @@ module Spoom
79
79
 
80
80
  SORT_CODE = "code"
81
81
  SORT_LOC = "loc"
82
- SORT_ENUM = [SORT_CODE, SORT_LOC]
82
+ SORT_ENUM = [SORT_CODE, SORT_LOC].freeze
83
83
 
84
84
  desc "tc", "Run Sorbet and parses its output"
85
85
  option :limit, type: :numeric, aliases: :l, desc: "Limit displayed errors"
@@ -26,14 +26,14 @@ module Spoom
26
26
  end
27
27
 
28
28
  #: -> Binding
29
- def get_binding # rubocop:disable Naming/AccessorMethodName
29
+ def get_binding
30
30
  binding
31
31
  end
32
32
  end
33
33
 
34
34
  # @abstract
35
35
  class Page < Template
36
- TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/page.erb" #: String
36
+ TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/page.erb".freeze #: String
37
37
 
38
38
  #: String
39
39
  attr_reader :title
@@ -80,7 +80,7 @@ module Spoom
80
80
 
81
81
  module Cards
82
82
  class Card < Template
83
- TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/card.erb" #: String
83
+ TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/card.erb".freeze #: String
84
84
 
85
85
  #: String?
86
86
  attr_reader :title, :body
@@ -96,7 +96,7 @@ module Spoom
96
96
  # @abstract
97
97
  class Erb < Card
98
98
  #: -> void
99
- def initialize; end # rubocop:disable Lint/MissingSuper
99
+ def initialize; end
100
100
 
101
101
  # @override
102
102
  #: -> String
@@ -110,7 +110,7 @@ module Spoom
110
110
  end
111
111
 
112
112
  class Snapshot < Card
113
- TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/card_snapshot.erb" #: String
113
+ TEMPLATE = "#{Spoom::SPOOM_PATH}/templates/card_snapshot.erb".freeze #: String
114
114
 
115
115
  #: Coverage::Snapshot
116
116
  attr_reader :snapshot
@@ -208,7 +208,7 @@ module Spoom
208
208
 
209
209
  class SorbetIntro < Erb
210
210
  #: (?sorbet_intro_commit: String?, ?sorbet_intro_date: Time?) -> void
211
- def initialize(sorbet_intro_commit: nil, sorbet_intro_date: nil) # rubocop:disable Lint/MissingSuper
211
+ def initialize(sorbet_intro_commit: nil, sorbet_intro_date: nil)
212
212
  @sorbet_intro_commit = sorbet_intro_commit
213
213
  @sorbet_intro_date = sorbet_intro_date
214
214
  end
@@ -40,6 +40,15 @@ module Spoom
40
40
  super
41
41
  end
42
42
 
43
+ #: -> String
44
+ def wrapped_src
45
+ <<~RUBY
46
+ def __spoom_deadcode_erb_template__
47
+ #{src}
48
+ end
49
+ RUBY
50
+ end
51
+
43
52
  private
44
53
 
45
54
  # @override
@@ -50,32 +59,34 @@ module Spoom
50
59
  if text == "\n"
51
60
  @newline_pending += 1
52
61
  else
53
- src << bufvar << ".safe_append='"
54
- src << "\n" * @newline_pending if @newline_pending > 0
55
- src << text.gsub(/['\\]/, '\\\\\&')
56
- src << "'.freeze;"
57
-
62
+ with_buffer do
63
+ src << ".safe_append='"
64
+ src << "\n" * @newline_pending if @newline_pending > 0
65
+ src << text.gsub(/['\\]/, '\\\\\&') << @text_end
66
+ end
58
67
  @newline_pending = 0
59
68
  end
60
69
  end
61
70
 
62
- BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/
71
+ BLOCK_EXPR = /((\s|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/
63
72
 
64
73
  # @override
65
74
  #: (untyped indicator, untyped code) -> void
66
75
  def add_expression(indicator, code)
67
76
  flush_newline_if_pending(src)
68
77
 
69
- src << bufvar << if (indicator == "==") || @escape
70
- ".safe_expr_append="
71
- else
72
- ".append="
73
- end
78
+ with_buffer do
79
+ src << if (indicator == "==") || @escape
80
+ ".safe_expr_append="
81
+ else
82
+ ".append="
83
+ end
74
84
 
75
- if BLOCK_EXPR.match?(code)
76
- src << " " << code
77
- else
78
- src << "(" << code << ");"
85
+ if BLOCK_EXPR.match?(code)
86
+ src << " " << code
87
+ else
88
+ src << "(" << code << ")"
89
+ end
79
90
  end
80
91
  end
81
92
 
@@ -96,7 +107,7 @@ module Spoom
96
107
  #: (untyped src) -> void
97
108
  def flush_newline_if_pending(src)
98
109
  if @newline_pending > 0
99
- src << bufvar << ".safe_append='#{"\n" * @newline_pending}'.freeze;"
110
+ with_buffer { src << ".safe_append='#{"\n" * @newline_pending}" << @text_end }
100
111
  @newline_pending = 0
101
112
  end
102
113
  end
@@ -44,7 +44,7 @@ module Spoom
44
44
 
45
45
  #: (String erb, file: String, ?plugins: Array[Plugins::Base]) -> void
46
46
  def index_erb(erb, file:, plugins: [])
47
- index_ruby(Deadcode::ERB.new(erb).src, file: file, plugins: plugins)
47
+ index_ruby(Deadcode::ERB.new(erb).wrapped_src, file: file, plugins: plugins)
48
48
  end
49
49
 
50
50
  #: (String rb, file: String, ?plugins: Array[Plugins::Base]) -> void
@@ -55,6 +55,11 @@ module Spoom
55
55
  model_builder = Model::Builder.new(@model, file)
56
56
  model_builder.visit(node)
57
57
 
58
+ # Ignore the special synthetic method generated by the ERB engine
59
+ if (spoom_erb_wrapper = @model.symbols["__spoom_deadcode_erb_template__"])
60
+ @ignored.merge(spoom_erb_wrapper.definitions)
61
+ end
62
+
58
63
  # Index references
59
64
  refs_visitor = Model::ReferencesVisitor.new(file)
60
65
  refs_visitor.visit(node)
@@ -16,7 +16,7 @@ module Spoom
16
16
  "before_teardown",
17
17
  )
18
18
 
19
- SETUP_AND_TEARDOWN_METHODS = ["setup", "teardown"] #: Array[String]
19
+ SETUP_AND_TEARDOWN_METHODS = ["setup", "teardown"].freeze #: Array[String]
20
20
 
21
21
  # @override
22
22
  #: (Send send) -> void
@@ -117,6 +117,7 @@ module Spoom
117
117
  Prism::ConstantPathAndWriteNode, Prism::ConstantPathOrWriteNode
118
118
  # Nesting node is an assign, it means only one constant is assigned on the line
119
119
  # so we can remove the whole assign
120
+ remove_constant_visibility_call(context)
120
121
  delete_node_and_comments_and_sigs(context)
121
122
  return
122
123
  end
@@ -127,6 +128,7 @@ module Spoom
127
128
  if parent_node.is_a?(Prism::ConstantWriteNode)
128
129
  # Nesting node is an assign, it means only one constant is assigned on the line
129
130
  # so we can remove the whole assign
131
+ remove_constant_visibility_call(parent_context)
130
132
  delete_node_and_comments_and_sigs(parent_context)
131
133
  return
132
134
  elsif parent_node.is_a?(Prism::MultiWriteNode) && parent_node.lefts.size == 1
@@ -190,6 +192,64 @@ module Spoom
190
192
  end
191
193
  end
192
194
 
195
+ # A dead constant is often followed by a `private_constant`/`public_constant` call naming it.
196
+ # That call references the now-removed constant (a load-time `NameError` if left behind), so
197
+ # remove the reference too: delete the whole call when the constant is its only argument, or
198
+ # drop just that symbol when the call lists several constants.
199
+ #: (NodeContext context) -> void
200
+ def remove_constant_visibility_call(context)
201
+ node = context.node
202
+ return unless node.is_a?(Prism::ConstantWriteNode)
203
+
204
+ name = node.name
205
+ call = context.next_nodes.find { |sibling| constant_visibility_call?(sibling, name) }
206
+ return unless call.is_a?(Prism::CallNode)
207
+
208
+ call_context = NodeContext.new(@old_source, @node_context.comments, call, context.nesting)
209
+ arguments = call.arguments&.arguments #: Array[Prism::Node]?
210
+ if arguments && arguments.size > 1
211
+ delete_symbol_argument(call_context, name)
212
+ else
213
+ delete_node_and_comments_and_sigs(call_context)
214
+ end
215
+ end
216
+
217
+ # Whether `node` is a bare `private_constant`/`public_constant` call listing `name`.
218
+ #: (Prism::Node node, Symbol name) -> bool
219
+ def constant_visibility_call?(node, name)
220
+ return false unless node.is_a?(Prism::CallNode)
221
+ return false unless node.receiver.nil?
222
+ return false unless node.name == :private_constant || node.name == :public_constant
223
+
224
+ arguments = node.arguments&.arguments
225
+ return false unless arguments
226
+
227
+ arguments.any? { |argument| argument.is_a?(Prism::SymbolNode) && argument.value == name.to_s }
228
+ end
229
+
230
+ # Drop the `:name` symbol from a `private_constant`/`public_constant` call that lists several
231
+ # constants, keeping the call and the other names intact.
232
+ #: (NodeContext context, Symbol name) -> void
233
+ def delete_symbol_argument(context, name)
234
+ arguments = T.cast(context.node, Prism::CallNode).arguments&.arguments
235
+ return unless arguments
236
+
237
+ index = arguments.index { |argument| argument.is_a?(Prism::SymbolNode) && argument.value == name.to_s }
238
+ return unless index
239
+
240
+ argument = arguments.fetch(index)
241
+ prev_argument = arguments[index - 1] if index.positive?
242
+ next_argument = arguments[index + 1]
243
+
244
+ if prev_argument && next_argument
245
+ replace_chars(prev_argument.location.end_offset, next_argument.location.start_offset, ", ")
246
+ elsif prev_argument
247
+ delete_chars(prev_argument.location.end_offset, argument.location.end_offset)
248
+ elsif next_argument
249
+ delete_chars(argument.location.start_offset, next_argument.location.start_offset)
250
+ end
251
+ end
252
+
193
253
  #: (NodeContext context) -> void
194
254
  def delete_attr_accessor(context)
195
255
  args_context = context.parent_context
@@ -53,7 +53,7 @@ module Spoom
53
53
  "Check out the README to learn how to build Sorbet in release mode.",
54
54
  "To forcibly silence this error, either pass --silence-dev-message,",
55
55
  "or set SORBET_SILENCE_DEV_MESSAGE=1 in your shell environment.",
56
- ] #: Array[String]
56
+ ].freeze #: Array[String]
57
57
 
58
58
  class << self
59
59
  # Used when only Sorbet errors are needed and leading stderr warnings can be ignored.
@@ -283,7 +283,7 @@ module Spoom
283
283
  24 => "event",
284
284
  25 => "operator",
285
285
  26 => "type_parameter",
286
- } #: Hash[Integer, String]
286
+ }.freeze #: Hash[Integer, String]
287
287
  end
288
288
 
289
289
  class SymbolPrinter < Printer
@@ -73,6 +73,13 @@ module Spoom
73
73
  # @override
74
74
  #: (Prism::ClassNode) -> void
75
75
  def visit_class_node(node)
76
+ case node.superclass&.slice
77
+ when /^(::)?T::Struct$/
78
+ @counters.increment("t_structs")
79
+ when /^(::)?T::Enum$/
80
+ @counters.increment("t_enums")
81
+ end
82
+
76
83
  visit_scope(node) do
77
84
  super
78
85
  end
@@ -26,7 +26,8 @@ module Spoom
26
26
 
27
27
  @overloads_strategy = options.overloads_strategy #: Symbol
28
28
  @translate_abstract_methods = options.translate_abstract_methods #: bool
29
- @type_translator = RBI::RBS::TypeTranslator.new #: RBI::RBS::TypeTranslator
29
+ @options = options #: Options
30
+ @type_translator = RBI::RBS::TypeTranslator.new(options: options.rbi_options) #: RBI::RBS::TypeTranslator
30
31
  end
31
32
 
32
33
  # @override
@@ -163,7 +164,7 @@ module Spoom
163
164
  next
164
165
  end
165
166
 
166
- translator = RBI::RBS::MethodTypeTranslator.new(rbi_node)
167
+ translator = RBI::RBS::MethodTypeTranslator.new(rbi_node, options: @options.rbi_options)
167
168
 
168
169
  begin
169
170
  translator.visit(method_type)
@@ -273,6 +274,18 @@ module Spoom
273
274
  rewrite_type_params_signature(signature, type_params:)
274
275
  next if type_params.empty?
275
276
 
277
+ if @options.erase_generic_types
278
+ type_params.each do |type_param|
279
+ insert_type_member(
280
+ "#{type_param.name} = ::T.type_alias { ::T.anything }",
281
+ parent_node: node,
282
+ insert_pos:,
283
+ )
284
+ end
285
+
286
+ next
287
+ end
288
+
276
289
  unless already_extends?(node, /^(::)?T::Generic$/)
277
290
  extend_with("T::Generic", into: node, at: insert_pos)
278
291
  end
@@ -462,7 +475,7 @@ module Spoom
462
475
  )
463
476
 
464
477
  @rewriter << Source::Delete.new(from, to)
465
- content = "#{indent}#{alias_name} = T.type_alias { #{sorbet_type.to_rbi} }\n"
478
+ content = "#{indent}#{alias_name} = ::T.type_alias { #{sorbet_type.to_rbi} }\n"
466
479
  content = pad_out_line_count(of: content, to_height_of: type_alias)
467
480
  @rewriter << Source::Insert.new(insert_pos, content)
468
481
  rescue ::RBS::ParsingError, ::RBI::Error
@@ -44,6 +44,12 @@ module Spoom
44
44
 
45
45
  ALLOWED_OVERLOAD_STRATEGIES = [:translate_all, :translate_last, :raise].freeze
46
46
 
47
+ #: bool
48
+ attr_reader :erase_generic_types
49
+
50
+ #: RBI::RBS::MethodTypeTranslator::Options
51
+ attr_reader :rbi_options
52
+
47
53
  #: BaseRBIFormat
48
54
  attr_reader :output_format
49
55
 
@@ -52,11 +58,13 @@ module Spoom
52
58
 
53
59
  #: (
54
60
  #| ?overloads_strategy: Symbol,
61
+ #| ?erase_generic_types: bool,
55
62
  #| ?output_format: BaseRBIFormat,
56
63
  #| ?translate_abstract_methods: bool,
57
64
  #| ) -> void
58
65
  def initialize(
59
66
  overloads_strategy: :translate_all,
67
+ erase_generic_types: false,
60
68
  output_format: HumanReadableRBIFormat.default,
61
69
  translate_abstract_methods: true
62
70
  )
@@ -66,6 +74,8 @@ module Spoom
66
74
  end
67
75
 
68
76
  @overloads_strategy = overloads_strategy
77
+ @erase_generic_types = erase_generic_types
78
+ @rbi_options = RBI::RBS::MethodTypeTranslator::Options.new(erase_generic_types:) #: RBI::RBS::MethodTypeTranslator::Options
69
79
  @output_format = output_format
70
80
  @translate_abstract_methods = translate_abstract_methods
71
81
 
@@ -28,17 +28,20 @@ module Spoom
28
28
  #| String ruby_contents,
29
29
  #| file: String,
30
30
  #| ?max_line_length: Integer?,
31
- #| ?overloads_strategy: Symbol) -> String
31
+ #| ?overloads_strategy: Symbol,
32
+ #| ?erase_generic_types: bool) -> String
32
33
  def rewrite_if_needed(
33
34
  ruby_contents,
34
35
  file:,
35
36
  max_line_length: nil,
36
- overloads_strategy: :translate_all
37
+ overloads_strategy: :translate_all,
38
+ erase_generic_types: false
37
39
  )
38
40
  return ruby_contents unless contains_rbs_syntax?(ruby_contents)
39
41
 
40
42
  options = Options.new(
41
43
  overloads_strategy:,
44
+ erase_generic_types:,
42
45
  output_format: HumanReadableRBIFormat.new(
43
46
  max_line_length:,
44
47
  ),
@@ -59,13 +59,16 @@ module Spoom
59
59
 
60
60
  # Converts all the RBS comments in the given Ruby code to `sig` nodes.
61
61
  # It also handles type members and class annotations.
62
- #: (String ruby_contents, file: String, ?max_line_length: Integer?, ?overloads_strategy: Symbol) -> String
63
- def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: nil, overloads_strategy: :translate_all)
62
+ #: (String ruby_contents, file: String, ?max_line_length: Integer?,
63
+ #| ?overloads_strategy: Symbol, ?erase_generic_types: bool) -> String
64
+ def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: nil, overloads_strategy: :translate_all,
65
+ erase_generic_types: false)
64
66
  RBSCommentsToSorbetSigs.rewrite_if_needed(
65
67
  ruby_contents,
66
68
  file: file,
67
69
  max_line_length: max_line_length,
68
70
  overloads_strategy: overloads_strategy,
71
+ erase_generic_types: erase_generic_types,
69
72
  )
70
73
  end
71
74
 
data/lib/spoom/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Spoom
5
- VERSION = "1.8.4"
5
+ VERSION = "1.8.6"
6
6
  end
data/rbi/spoom.rbi CHANGED
@@ -1024,6 +1024,9 @@ class Spoom::Deadcode::ERB < ::Erubi::Engine
1024
1024
  sig { params(input: T.untyped, properties: T.untyped).void }
1025
1025
  def initialize(input, properties = T.unsafe(nil)); end
1026
1026
 
1027
+ sig { returns(::String) }
1028
+ def wrapped_src; end
1029
+
1027
1030
  private
1028
1031
 
1029
1032
  sig { override.params(code: T.untyped).void }
@@ -1497,6 +1500,9 @@ class Spoom::Deadcode::Remover::NodeRemover
1497
1500
 
1498
1501
  private
1499
1502
 
1503
+ sig { params(node: ::Prism::Node, name: ::Symbol).returns(T::Boolean) }
1504
+ def constant_visibility_call?(node, name); end
1505
+
1500
1506
  sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1501
1507
  def delete_attr_accessor(context); end
1502
1508
 
@@ -1512,6 +1518,9 @@ class Spoom::Deadcode::Remover::NodeRemover
1512
1518
  sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1513
1519
  def delete_node_and_comments_and_sigs(context); end
1514
1520
 
1521
+ sig { params(context: ::Spoom::Deadcode::Remover::NodeContext, name: ::Symbol).void }
1522
+ def delete_symbol_argument(context, name); end
1523
+
1515
1524
  sig do
1516
1525
  params(
1517
1526
  node: ::Prism::Node,
@@ -1524,6 +1533,9 @@ class Spoom::Deadcode::Remover::NodeRemover
1524
1533
  sig { params(def_node: ::Prism::DefNode).returns(T.nilable(::Spoom::Deadcode::Remover::NodeContext)) }
1525
1534
  def modifier_call_context(def_node); end
1526
1535
 
1536
+ sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1537
+ def remove_constant_visibility_call(context); end
1538
+
1527
1539
  sig { params(start_char: ::Integer, end_char: ::Integer, replacement: ::String).void }
1528
1540
  def replace_chars(start_char, end_char, replacement); end
1529
1541
 
@@ -2926,10 +2938,11 @@ module Spoom::Sorbet::Translate
2926
2938
  ruby_contents: ::String,
2927
2939
  file: ::String,
2928
2940
  max_line_length: T.nilable(::Integer),
2929
- overloads_strategy: ::Symbol
2941
+ overloads_strategy: ::Symbol,
2942
+ erase_generic_types: T::Boolean
2930
2943
  ).returns(::String)
2931
2944
  end
2932
- def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil)); end
2945
+ def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil), erase_generic_types: T.unsafe(nil)); end
2933
2946
 
2934
2947
  sig do
2935
2948
  params(
@@ -3008,10 +3021,11 @@ module Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs
3008
3021
  ruby_contents: ::String,
3009
3022
  file: ::String,
3010
3023
  max_line_length: T.nilable(::Integer),
3011
- overloads_strategy: ::Symbol
3024
+ overloads_strategy: ::Symbol,
3025
+ erase_generic_types: T::Boolean
3012
3026
  ).returns(::String)
3013
3027
  end
3014
- def rewrite_if_needed(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil)); end
3028
+ def rewrite_if_needed(ruby_contents, file:, max_line_length: T.unsafe(nil), overloads_strategy: T.unsafe(nil), erase_generic_types: T.unsafe(nil)); end
3015
3029
  end
3016
3030
  end
3017
3031
 
@@ -3238,11 +3252,15 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options
3238
3252
  sig do
3239
3253
  params(
3240
3254
  overloads_strategy: ::Symbol,
3255
+ erase_generic_types: T::Boolean,
3241
3256
  output_format: ::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat,
3242
3257
  translate_abstract_methods: T::Boolean
3243
3258
  ).void
3244
3259
  end
3245
- def initialize(overloads_strategy: T.unsafe(nil), output_format: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
3260
+ def initialize(overloads_strategy: T.unsafe(nil), erase_generic_types: T.unsafe(nil), output_format: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
3261
+
3262
+ sig { returns(T::Boolean) }
3263
+ def erase_generic_types; end
3246
3264
 
3247
3265
  sig { returns(::Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::BaseRBIFormat) }
3248
3266
  def output_format; end
@@ -3250,6 +3268,9 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs::Options
3250
3268
  sig { returns(::Symbol) }
3251
3269
  def overloads_strategy; end
3252
3270
 
3271
+ sig { returns(::RBI::RBS::MethodTypeTranslator::Options) }
3272
+ def rbi_options; end
3273
+
3253
3274
  sig { returns(T::Boolean) }
3254
3275
  def translate_abstract_methods; end
3255
3276
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spoom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Terrasa
@@ -9,48 +9,6 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: bundler
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - ">="
17
- - !ruby/object:Gem::Version
18
- version: 2.2.10
19
- type: :development
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: 2.2.10
26
- - !ruby/object:Gem::Dependency
27
- name: minitest-reporters
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :development
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- - !ruby/object:Gem::Dependency
41
- name: rake
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: 13.4.2
47
- type: :development
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 13.4.2
54
12
  - !ruby/object:Gem::Dependency
55
13
  name: erubi
56
14
  requirement: !ruby/object:Gem::Requirement
@@ -85,14 +43,14 @@ dependencies:
85
43
  requirements:
86
44
  - - ">="
87
45
  - !ruby/object:Gem::Version
88
- version: 0.3.15
46
+ version: 0.4.1
89
47
  type: :runtime
90
48
  prerelease: false
91
49
  version_requirements: !ruby/object:Gem::Requirement
92
50
  requirements:
93
51
  - - ">="
94
52
  - !ruby/object:Gem::Version
95
- version: 0.3.15
53
+ version: 0.4.1
96
54
  - !ruby/object:Gem::Dependency
97
55
  name: rbs
98
56
  requirement: !ruby/object:Gem::Requirement