rubocop 1.45.0 → 1.45.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b48bdf3e1c316571a4bd94150d56645a13044379b9932ebe8d21884b47b99113
4
- data.tar.gz: 4bef483df24d39dd57877145a67ff68485b9b0d02b2e865a0cb9941c3ad7fc62
3
+ metadata.gz: 648a8aa3156aebf0c078bc0b600f301d3aa0abaf92d6b3643c343718575f7302
4
+ data.tar.gz: 21b185886d70b70a163c6e7f3ea47e04ee0a0afcf11217e0d7bcb31e25440880
5
5
  SHA512:
6
- metadata.gz: 1628b1533fe7595ede88b51fbd581a04278d549cf21065e9d78534ee47cdffa23fda8709f48711b476879ab36b06d3ffec449a1f391378faaf676b5fe0ef4e7f
7
- data.tar.gz: fcdba51766cf768940c9ebb770b8b8a40ed44384c00ba0ef8c8a903c0848816320fe53d0791da133ba607f8ab79fc36a68eaf833fdfdb5b0d179ff0ee9a0afc5
6
+ metadata.gz: ff5a5e947001ba9507f3e806896559baaf0e4bccc6b2cc56316dffc3ae334f62046040be389518139d2979c4d09900600f9b233bc1f4dbd2d1d37a2f8fe99037
7
+ data.tar.gz: 8f89f55198c9d206c5b8d0c32cbeb5033491046c0ea0f4311f6c1a23595bcce852ec732606ca1fd2bc499b31ecb2265dcf6d85edd352f6400d01bd9385993a44
@@ -53,6 +53,11 @@ module RuboCop
53
53
  def add_offense(node_or_range, location: :expression, message: nil, severity: nil, &block)
54
54
  @v0_argument = node_or_range
55
55
  range = find_location(node_or_range, location)
56
+
57
+ # Since this range may be generated from Ruby code embedded in some
58
+ # template file, we convert it to location info in the original file.
59
+ range = range_for_original(range)
60
+
56
61
  if block.nil? && !support_autocorrect?
57
62
  super(range, message: message, severity: severity)
58
63
  else
@@ -93,14 +98,21 @@ module RuboCop
93
98
  super
94
99
  end
95
100
 
96
- private
97
-
98
- def begin_investigation(processed_source)
101
+ # Called before any investigation
102
+ # @api private
103
+ def begin_investigation(processed_source, offset: 0, original: processed_source)
99
104
  super
100
105
  @offenses = current_offenses
101
106
  @last_corrector = @current_corrector
107
+
108
+ # We need to keep track of the original source and offset,
109
+ # because `processed_source` here may be an embedded code in it.
110
+ @current_offset = offset
111
+ @current_original = original
102
112
  end
103
113
 
114
+ private
115
+
104
116
  # Override Base
105
117
  def callback_argument(_range)
106
118
  @v0_argument
@@ -141,6 +153,14 @@ module RuboCop
141
153
  rescue ::Parser::ClobberingError
142
154
  # ignore Clobbering errors
143
155
  end
156
+
157
+ def range_for_original(range)
158
+ ::Parser::Source::Range.new(
159
+ @current_original.buffer,
160
+ range.begin_pos + @current_offset,
161
+ range.end_pos + @current_offset
162
+ )
163
+ end
144
164
  end
145
165
  end
146
166
  end
@@ -82,44 +82,25 @@ module RuboCop
82
82
  def debugger_methods
83
83
  @debugger_methods ||= begin
84
84
  config = cop_config.fetch('DebuggerMethods', [])
85
- values = config.is_a?(Array) ? config : config.values.flatten
86
- values.map do |v|
87
- next unless v
88
-
89
- *receiver, method_name = v.split('.')
90
- {
91
- receiver: receiver.empty? ? nil : receiver.map(&:to_sym),
92
- method_name: method_name.to_sym
93
- }
94
- end.compact
85
+ config.is_a?(Array) ? config : config.values.flatten
95
86
  end
96
87
  end
97
88
 
98
89
  def debugger_method?(send_node)
99
- method_name = send_node.method_name
100
-
101
- debugger_methods.any? do |method|
102
- next unless method[:method_name] == method_name
90
+ return if send_node.parent&.send_type? && send_node.parent.receiver == send_node
103
91
 
104
- if method[:receiver].nil?
105
- send_node.receiver.nil?
106
- else
107
- method[:receiver] == receiver_chain(send_node)
108
- end
109
- end
92
+ debugger_methods.include?(chained_method_name(send_node))
110
93
  end
111
94
 
112
- def receiver_chain(send_node)
113
- receivers = []
95
+ def chained_method_name(send_node)
96
+ chained_method_name = send_node.method_name.to_s
114
97
  receiver = send_node.receiver
115
-
116
98
  while receiver
117
- name = receiver.send_type? ? receiver.method_name : receiver.const_name&.to_sym
118
- receivers.unshift(name)
99
+ name = receiver.send_type? ? receiver.method_name : receiver.const_name
100
+ chained_method_name = "#{name}.#{chained_method_name}"
119
101
  receiver = receiver.receiver
120
102
  end
121
-
122
- receivers
103
+ chained_method_name
123
104
  end
124
105
  end
125
106
  end
@@ -152,7 +152,7 @@ module RuboCop
152
152
 
153
153
  def right_siblings_same_inline_method?(node)
154
154
  node.right_siblings.any? do |sibling|
155
- sibling.method?(node.method_name) && !sibling.arguments.empty?
155
+ sibling.send_type? && sibling.method?(node.method_name) && !sibling.arguments.empty?
156
156
  end
157
157
  end
158
158
 
@@ -167,8 +167,8 @@ module RuboCop
167
167
  def argument_with_operator?(argument)
168
168
  return true if ARGUMENT_WITH_OPERATOR_TYPES.include?(argument.type)
169
169
  return false unless argument.hash_type?
170
+ return false unless (node = argument.children.first)
170
171
 
171
- node = argument.children.first
172
172
  node.kwsplat_type? || node.forwarded_kwrestarg_type?
173
173
  end
174
174
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.45.0'
6
+ STRING = '1.45.1'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.45.0
4
+ version: 1.45.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov