rubocop-sorbet 0.7.4 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d771dbc78b04c867bb517a024dacaf6d1c280539ebbd6950374a19fe9d89e439
4
- data.tar.gz: 5310766358cdbfec15d154733f32769ab7320cf987798710a2c0f1dcd2fddceb
3
+ metadata.gz: 9b2451806224baad5c72fb848ae38e6510037b2e26415afc236c3639f8504655
4
+ data.tar.gz: e55c4a39d87a4fe345a6257e14483de155738ea5d39c25ef1e7822a2174321cb
5
5
  SHA512:
6
- metadata.gz: 2b0a1b42b4a1a368565d86ef69a335bc5345a562a892dcc930bd4786e1049c5d4cc018a762df22ffac6189aa68628d3c5f74cee147232f6eb9de62d21350d19b
7
- data.tar.gz: 21d0d71d76975bb9204622b40a026fdc3c5c62105506ddfa293df0cf117e52d05e541a430290d045792208019a60ee824c9e8535d36a5d8f70f455abdbc42f89
6
+ metadata.gz: d05d0627ce52223c931f3461e221f6cb105838c21eeae6d68a7270934e6e292fcd2a7390453583c95d721bc1544125cb74f2d65ef6161c4d8fe823c3ee8217e6
7
+ data.tar.gz: adf840bad5a49581286937604e83b3ee864f45031efb115db9faed9032da04d4178d7022b3d2040e08e8b10dc5f7a95bc8bf8a0ee1ac06ba74780b135d947b26
@@ -6,12 +6,12 @@ env:
6
6
  SRB_SKIP_GEM_RBIS: true
7
7
 
8
8
  jobs:
9
- build:
9
+ test:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- ruby: [ '2.7', '3.0', '3.1', '3.2' ]
14
+ ruby: ["2.7", "3.0", "3.1", "3.2"]
15
15
  name: Test Ruby ${{ matrix.ruby }}
16
16
  steps:
17
17
  - uses: actions/checkout@v2
@@ -20,9 +20,22 @@ jobs:
20
20
  with:
21
21
  ruby-version: ${{ matrix.ruby }}
22
22
  bundler-cache: true
23
+ - name: Run tests
24
+ run: bin/rspec
25
+
26
+ lint-and-docs:
27
+ runs-on: ubuntu-latest
28
+ strategy:
29
+ fail-fast: false
30
+ name: Lint & Docs
31
+ steps:
32
+ - uses: actions/checkout@v2
33
+ - name: Set up Ruby
34
+ uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: 3.2
37
+ bundler-cache: true
23
38
  - name: Lint Ruby files
24
39
  run: bin/rubocop
25
40
  - name: Verify documentation is up to date
26
41
  run: bundle exec rake generate_cops_documentation
27
- - name: Run tests
28
- run: bin/rspec
data/.rubocop.yml CHANGED
@@ -22,3 +22,6 @@ Naming/FileName:
22
22
 
23
23
  Layout/LineLength:
24
24
  IgnoreCopDirectives: true
25
+
26
+ InternalAffairs/UndefinedConfig:
27
+ Enabled: false # Bug in implementation fails to find our configs
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop-sorbet (0.7.4)
4
+ rubocop-sorbet (0.7.5)
5
5
  rubocop (>= 0.90.0)
6
6
 
7
7
  GEM
data/config/rbi.yml CHANGED
@@ -242,6 +242,9 @@ Style/ClassAndModuleChildren:
242
242
  Style/DefWithParentheses:
243
243
  Enabled: true
244
244
 
245
+ Sorbet/EmptyLineAfterSig:
246
+ Enabled: true
247
+
245
248
  Style/EmptyMethod:
246
249
  Enabled: true
247
250
  EnforcedStyle: compact
@@ -26,44 +26,38 @@ module RuboCop
26
26
  # ```ruby
27
27
  # include Polaris::Engine.helpers
28
28
  # ```
29
- class ForbidIncludeConstLiteral < RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
30
- MSG = "Includes must only contain constant literals"
29
+ class ForbidIncludeConstLiteral < RuboCop::Cop::Base
30
+ extend AutoCorrector
31
31
 
32
- attr_accessor :used_names
32
+ MSG = "`%<inclusion_method>s` must only be used with constant literals as arguments"
33
+ RESTRICT_ON_SEND = [:include, :extend, :prepend].freeze
33
34
 
34
- # @!method not_lit_const_include?(node)
35
- def_node_matcher :not_lit_const_include?, <<-PATTERN
36
- (send nil? {:include :extend :prepend}
37
- $_
38
- )
35
+ # @!method dynamic_inclusion?(node)
36
+ def_node_matcher :dynamic_inclusion?, <<~PATTERN
37
+ (send nil? ${:include :extend :prepend} $#neither_const_nor_self?)
39
38
  PATTERN
40
39
 
41
- def initialize(*)
42
- super
43
- self.used_names = Set.new
44
- end
45
-
46
40
  def on_send(node)
47
- return unless not_lit_const_include?(node) do |send_argument|
48
- ![:const, :self].include?(send_argument.type)
49
- end
41
+ dynamic_inclusion?(node) do |inclusion_method, included|
42
+ return unless within_onymous_module?(node)
50
43
 
51
- parent = node.parent
52
- return unless parent
44
+ add_offense(node, message: format(MSG, inclusion_method: inclusion_method)) do |corrector|
45
+ corrector.replace(node, "T.unsafe(self).#{inclusion_method} #{included.source}")
46
+ end
47
+ end
48
+ end
53
49
 
54
- parent = parent.parent if [:begin, :block].include?(parent.type)
55
- return unless [:module, :class, :sclass].include?(parent.type)
50
+ private
56
51
 
57
- add_offense(node)
52
+ def neither_const_nor_self?(node)
53
+ !node.const_type? && !node.self_type?
58
54
  end
59
55
 
60
- def autocorrect(node)
61
- lambda do |corrector|
62
- corrector.replace(
63
- node,
64
- "T.unsafe(self).#{node.source}",
65
- )
66
- end
56
+ # Returns true if the node is within a module declaration that is not anonymous.
57
+ def within_onymous_module?(node)
58
+ parent = node.parent
59
+ parent = parent.parent while parent&.begin_type? || parent&.block_type?
60
+ parent && (parent.module_type? || parent.class_type? || parent.sclass_type?)
67
61
  end
68
62
  end
69
63
  end
@@ -131,8 +131,13 @@ module RuboCop
131
131
  def initialize_param
132
132
  rb = String.new
133
133
  rb << "#{name}:"
134
- rb << " #{default}" if default
135
- rb << " #{factory}" if factory
134
+ if default
135
+ rb << " #{default}"
136
+ elsif factory
137
+ rb << " #{factory}"
138
+ elsif nilable?
139
+ rb << " nil"
140
+ end
136
141
  rb
137
142
  end
138
143
 
@@ -142,6 +147,10 @@ module RuboCop
142
147
  rb << ".call" if factory
143
148
  rb
144
149
  end
150
+
151
+ def nilable?
152
+ type.start_with?("T.nilable(")
153
+ end
145
154
  end
146
155
 
147
156
  # @!method t_struct?(node)
@@ -203,11 +212,11 @@ module RuboCop
203
212
 
204
213
  def initialize_method(indent, props)
205
214
  # We sort optional keyword arguments after required ones
206
- props = props.sort_by { |prop| prop.default || prop.factory ? 1 : 0 }
215
+ sorted_props = props.sort_by { |prop| prop.default || prop.factory || prop.nilable? ? 1 : 0 }
207
216
 
208
217
  string = +"\n"
209
- string << "#{indent}sig { params(#{props.map(&:initialize_sig_param).join(", ")}).void }\n"
210
- string << "#{indent}def initialize(#{props.map(&:initialize_param).join(", ")})\n"
218
+ string << "#{indent}sig { params(#{sorted_props.map(&:initialize_sig_param).join(", ")}).void }\n"
219
+ string << "#{indent}def initialize(#{sorted_props.map(&:initialize_param).join(", ")})\n"
211
220
  props.each do |prop|
212
221
  string << "#{indent} #{prop.initialize_assign}\n"
213
222
  end
@@ -1,15 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubocop"
4
-
5
3
  module RuboCop
6
4
  module Cop
7
5
  module Sorbet
8
- # Abstract cop specific to Sorbet signatures
9
- #
10
- # You can subclass it to use the `on_signature` trigger and the `signature?` node matcher.
11
- class SignatureCop < RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
12
- @registry = Cop.registry # So we can properly subclass this cop
6
+ # Mixin for writing cops for signatures, providing a `signature?` node matcher and an `on_signature` trigger.
7
+ module SignatureHelp
8
+ extend RuboCop::NodePattern::Macros
13
9
 
14
10
  # @!method signature?(node)
15
11
  def_node_matcher(:signature?, <<~PATTERN)
@@ -22,12 +18,12 @@ module RuboCop
22
18
 
23
19
  # @!method with_runtime?(node)
24
20
  def_node_matcher(:with_runtime?, <<~PATTERN)
25
- (const (const nil? :T) :Sig)
21
+ (const (const {nil? cbase} :T) :Sig)
26
22
  PATTERN
27
23
 
28
24
  # @!method without_runtime?(node)
29
25
  def_node_matcher(:without_runtime?, <<~PATTERN)
30
- (const (const (const nil? :T) :Sig) :WithoutRuntime)
26
+ (const (const (const {nil? cbase} :T) :Sig) :WithoutRuntime)
31
27
  PATTERN
32
28
 
33
29
  def on_block(node)
@@ -36,8 +32,8 @@ module RuboCop
36
32
 
37
33
  alias_method :on_numblock, :on_block
38
34
 
39
- def on_signature(_)
40
- # To be defined in subclasses
35
+ def on_signature(_node)
36
+ # To be defined by cop class as needed
41
37
  end
42
38
  end
43
39
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  private
57
57
 
58
58
  def allowed_paths
59
- paths = cop_config["AllowedPaths"] # rubocop:todo InternalAffairs/UndefinedConfig
59
+ paths = cop_config["AllowedPaths"]
60
60
  return unless paths.is_a?(Array)
61
61
 
62
62
  paths.compact
@@ -90,7 +90,7 @@ module RuboCop
90
90
  return suggested_strictness unless minimum_strictness
91
91
 
92
92
  # special case: if you're using Sorbet/IgnoreSigil without config, we should recommend `ignore`
93
- return "ignore" if minimum_strictness == "ignore" && cop_config["SuggestedStrictness"].nil? # rubocop:todo InternalAffairs/UndefinedConfig
93
+ return "ignore" if minimum_strictness == "ignore" && cop_config["SuggestedStrictness"].nil?
94
94
 
95
95
  # if a minimum strictness is set (eg. you're using Sorbet/FalseSigil)
96
96
  # we want to compare the minimum strictness and suggested strictness. this is because
@@ -161,24 +161,24 @@ module RuboCop
161
161
 
162
162
  # Default is `false`
163
163
  def require_sigil_on_all_files?
164
- !!cop_config["RequireSigilOnAllFiles"] # rubocop:todo InternalAffairs/UndefinedConfig
164
+ !!cop_config["RequireSigilOnAllFiles"]
165
165
  end
166
166
 
167
167
  # Default is `'false'`
168
168
  def suggested_strictness
169
- config = cop_config["SuggestedStrictness"].to_s # rubocop:todo InternalAffairs/UndefinedConfig
169
+ config = cop_config["SuggestedStrictness"].to_s
170
170
  STRICTNESS_LEVELS.include?(config) ? config : "false"
171
171
  end
172
172
 
173
173
  # Default is `nil`
174
174
  def minimum_strictness
175
- config = cop_config["MinimumStrictness"].to_s # rubocop:todo InternalAffairs/UndefinedConfig
175
+ config = cop_config["MinimumStrictness"].to_s
176
176
  config if STRICTNESS_LEVELS.include?(config)
177
177
  end
178
178
 
179
179
  # Default is `nil`
180
180
  def exact_strictness
181
- config = cop_config["ExactStrictness"].to_s # rubocop:todo InternalAffairs/UndefinedConfig
181
+ config = cop_config["ExactStrictness"].to_s
182
182
  config if STRICTNESS_LEVELS.include?(config)
183
183
  end
184
184
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  return unless sig?(node.send_node)
57
57
 
58
58
  block = node.children.last
59
- return unless block.send_type?
59
+ return unless block&.send_type?
60
60
 
61
61
  receiver = block.receiver
62
62
  while receiver
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubocop"
4
- require_relative "signature_cop"
5
-
6
3
  module RuboCop
7
4
  module Cop
8
5
  module Sorbet
@@ -19,8 +16,9 @@ module RuboCop
19
16
  #
20
17
  # # good
21
18
  # sig { void }
22
- class CheckedTrueInSignature < SignatureCop
19
+ class CheckedTrueInSignature < ::RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
23
20
  include(RuboCop::Cop::RangeHelp)
21
+ include(RuboCop::Cop::Sorbet::SignatureHelp)
24
22
 
25
23
  # @!method offending_node(node)
26
24
  def_node_search(:offending_node, <<~PATTERN)
@@ -1,16 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "signature_cop"
4
-
5
3
  module RuboCop
6
4
  module Cop
7
5
  module Sorbet
8
6
  # Checks for blank lines after signatures.
9
7
  #
10
- # It also suggests an autocorrect
11
- #
12
8
  # @example
13
- #
14
9
  # # bad
15
10
  # sig { void }
16
11
  #
@@ -19,37 +14,60 @@ module RuboCop
19
14
  # # good
20
15
  # sig { void }
21
16
  # def foo; end
22
- #
23
- class EmptyLineAfterSig < SignatureCop
17
+ class EmptyLineAfterSig < ::RuboCop::Cop::Base
18
+ extend AutoCorrector
24
19
  include RangeHelp
20
+ include SignatureHelp
25
21
 
26
- def on_signature(node)
27
- if (next_method(node).line - node.last_line) > 1
28
- location = source_range(processed_source.buffer, next_method(node).line - 1, 0)
29
- add_offense(node, location: location, message: "Extra empty line or comment detected")
30
- end
31
- end
22
+ MSG = "Extra empty line or comment detected"
23
+
24
+ # @!method sig_or_signable_method_definition?(node)
25
+ def_node_matcher :sig_or_signable_method_definition?, <<~PATTERN
26
+ ${
27
+ def
28
+ defs
29
+ (send nil? {:attr_reader :attr_writer :attr_accessor} ...)
30
+ #signature?
31
+ }
32
+ PATTERN
32
33
 
33
- def autocorrect(node)
34
- ->(corrector) do
35
- offending_range = node.source_range.with(
36
- begin_pos: node.source_range.end_pos + 1,
37
- end_pos: processed_source.buffer.line_range(next_method(node).line).begin_pos,
38
- )
39
- corrector.remove(offending_range)
40
- clean_range = offending_range.source.split("\n").reject(&:empty?).join("\n")
41
- offending_line = processed_source.buffer.line_range(node.source_range.first_line)
42
- corrector.insert_before(offending_line, "#{clean_range}\n") unless clean_range.empty?
34
+ def on_signature(sig)
35
+ sig_or_signable_method_definition?(next_sibling(sig)) do |definition|
36
+ range = lines_between(sig, definition)
37
+ next if range.empty? || range.single_line?
38
+
39
+ add_offense(range) do |corrector|
40
+ corrector.insert_before(
41
+ range_by_whole_lines(sig.source_range),
42
+ range.source
43
+ .sub(/\A\n+/, "") # remove initial newline(s)
44
+ .gsub(/\n{2,}/, "\n"), # remove empty line(s)
45
+ )
46
+ corrector.remove(range)
47
+ end
43
48
  end
44
49
  end
45
50
 
46
51
  private
47
52
 
48
- def next_method(node)
49
- processed_source.tokens.find do |t|
50
- t.line >= node.last_line &&
51
- (t.type == :kDEF || t.text.start_with?("attr_"))
52
- end
53
+ def next_sibling(node)
54
+ node.parent&.children&.at(node.sibling_index + 1)
55
+ end
56
+
57
+ def lines_between(node1, node2, buffer: processed_source.buffer)
58
+ end_of_node1_pos = node1.source_range.end_pos
59
+ start_of_node2_pos = node2.source_range.begin_pos
60
+
61
+ string_in_between = buffer.slice(end_of_node1_pos...start_of_node2_pos)
62
+ # Fallbacks handle same line edge case
63
+ begin_offset = string_in_between.index("\n") || 0
64
+ end_offset = string_in_between.rindex("\n") || string_in_between.length - 1
65
+
66
+ Parser::Source::Range.new(
67
+ buffer,
68
+ end_of_node1_pos + begin_offset + 1, # +1 to exclude post-node1 newline
69
+ end_of_node1_pos + end_offset + 1, # +1 to include pre-node2 newline
70
+ )
53
71
  end
54
72
  end
55
73
  end
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubocop"
4
3
  require "stringio"
5
- require_relative "signature_cop"
6
4
 
7
5
  module RuboCop
8
6
  module Cop
@@ -26,7 +24,9 @@ module RuboCop
26
24
  #
27
25
  # * `ParameterTypePlaceholder`: placeholders used for parameter types (default: 'T.untyped')
28
26
  # * `ReturnTypePlaceholder`: placeholders used for return types (default: 'T.untyped')
29
- class EnforceSignatures < SignatureCop
27
+ class EnforceSignatures < ::RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
28
+ include SignatureHelp
29
+
30
30
  def initialize(config = nil, options = nil)
31
31
  super(config, options)
32
32
  @last_sig_for_scope = {}
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubocop"
4
- require_relative "signature_cop"
5
-
6
3
  module RuboCop
7
4
  module Cop
8
5
  module Sorbet
@@ -20,7 +17,9 @@ module RuboCop
20
17
  # # good
21
18
  # sig { params(b: String, a: Integer).void }
22
19
  # def foo(b:, a: 1); end
23
- class KeywordArgumentOrdering < SignatureCop
20
+ class KeywordArgumentOrdering < ::RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
21
+ include SignatureHelp
22
+
24
23
  def on_signature(node)
25
24
  method_node = node.parent.children[node.sibling_index + 1]
26
25
  return if method_node.nil?
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rubocop"
4
- require_relative "signature_cop"
5
-
6
3
  begin
7
4
  require "unparser"
8
5
  rescue LoadError
@@ -12,7 +9,28 @@ end
12
9
  module RuboCop
13
10
  module Cop
14
11
  module Sorbet
15
- class SignatureBuildOrder < SignatureCop
12
+ # Checks for the correct order of sig builder methods:
13
+ # - abstract, override, or overridable
14
+ # - type_parameters
15
+ # - params
16
+ # - returns, or void
17
+ # - soft, checked, or on_failure
18
+ #
19
+ # @example
20
+ # # bad
21
+ # sig { void.abstract }
22
+ #
23
+ # # good
24
+ # sig { abstract.void }
25
+ #
26
+ # # bad
27
+ # sig { returns(Integer).params(x: Integer) }
28
+ #
29
+ # # good
30
+ # sig { params(x: Integer).returns(Integer) }
31
+ class SignatureBuildOrder < ::RuboCop::Cop::Cop # rubocop:todo InternalAffairs/InheritDeprecatedCopClass
32
+ include SignatureHelp
33
+
16
34
  ORDER =
17
35
  [
18
36
  :abstract,
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "sorbet/mixin/target_sorbet_version.rb"
4
+ require_relative "sorbet/mixin/signature_help.rb"
4
5
 
5
6
  require_relative "sorbet/binding_constant_without_type_alias"
6
7
  require_relative "sorbet/constants_from_strings"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module Sorbet
5
- VERSION = "0.7.4"
5
+ VERSION = "0.7.5"
6
6
  end
7
7
  end
data/manual/cops.md CHANGED
@@ -32,7 +32,6 @@ In the following section you find all available cops:
32
32
  * [Sorbet/OneAncestorPerLine](cops_sorbet.md#sorbetoneancestorperline)
33
33
  * [Sorbet/RedundantExtendTSig](cops_sorbet.md#sorbetredundantextendtsig)
34
34
  * [Sorbet/SignatureBuildOrder](cops_sorbet.md#sorbetsignaturebuildorder)
35
- * [Sorbet/SignatureCop](cops_sorbet.md#sorbetsignaturecop)
36
35
  * [Sorbet/SingleLineRbiClassModuleDefinitions](cops_sorbet.md#sorbetsinglelinerbiclassmoduledefinitions)
37
36
  * [Sorbet/StrictSigil](cops_sorbet.md#sorbetstrictsigil)
38
37
  * [Sorbet/StrongSigil](cops_sorbet.md#sorbetstrongsigil)
@@ -184,8 +184,6 @@ Enabled | Yes | Yes | 0.7.0 | -
184
184
 
185
185
  Checks for blank lines after signatures.
186
186
 
187
- It also suggests an autocorrect
188
-
189
187
  ### Examples
190
188
 
191
189
  ```ruby
@@ -710,17 +708,28 @@ Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChan
710
708
  --- | --- | --- | --- | ---
711
709
  Enabled | Yes | Yes | 0.3.0 | -
712
710
 
713
- No documentation
711
+ Checks for the correct order of sig builder methods:
712
+ - abstract, override, or overridable
713
+ - type_parameters
714
+ - params
715
+ - returns, or void
716
+ - soft, checked, or on_failure
714
717
 
715
- ## Sorbet/SignatureCop
718
+ # bad
719
+ sig { returns(Integer).params(x: Integer) }
716
720
 
717
- Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
718
- --- | --- | --- | --- | ---
719
- Enabled | Yes | No | - | -
721
+ # good
722
+ sig { params(x: Integer).returns(Integer) }
720
723
 
721
- Abstract cop specific to Sorbet signatures
724
+ ### Examples
722
725
 
723
- You can subclass it to use the `on_signature` trigger and the `signature?` node matcher.
726
+ ```ruby
727
+ # bad
728
+ sig { void.abstract }
729
+
730
+ # good
731
+ sig { abstract.void }
732
+ ```
724
733
 
725
734
  ## Sorbet/SingleLineRbiClassModuleDefinitions
726
735
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-sorbet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2023-09-25 00:00:00.000000000 Z
14
+ date: 2023-10-31 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
@@ -97,6 +97,7 @@ files:
97
97
  - lib/rubocop/cop/sorbet/forbid_t_untyped.rb
98
98
  - lib/rubocop/cop/sorbet/forbid_untyped_struct_props.rb
99
99
  - lib/rubocop/cop/sorbet/implicit_conversion_method.rb
100
+ - lib/rubocop/cop/sorbet/mixin/signature_help.rb
100
101
  - lib/rubocop/cop/sorbet/mixin/target_sorbet_version.rb
101
102
  - lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb
102
103
  - lib/rubocop/cop/sorbet/obsolete_strict_memoization.rb
@@ -120,7 +121,6 @@ files:
120
121
  - lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb
121
122
  - lib/rubocop/cop/sorbet/signatures/keyword_argument_ordering.rb
122
123
  - lib/rubocop/cop/sorbet/signatures/signature_build_order.rb
123
- - lib/rubocop/cop/sorbet/signatures/signature_cop.rb
124
124
  - lib/rubocop/cop/sorbet/type_alias_name.rb
125
125
  - lib/rubocop/cop/sorbet_cops.rb
126
126
  - lib/rubocop/sorbet.rb
@@ -154,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
156
  requirements: []
157
- rubygems_version: 3.4.19
157
+ rubygems_version: 3.4.21
158
158
  signing_key:
159
159
  specification_version: 4
160
160
  summary: Automatic Sorbet code style checking tool.