rubocop-ast 1.44.1 → 1.46.0

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: 9310771bd0730e0408e6db665c1f0db5d52ae370aa7eb761ac3942777f4d6cee
4
- data.tar.gz: ccd0f8b884bc0f3d8404e46db57cabd956ac8e808873ead64c4ba38a2d2387fe
3
+ metadata.gz: 2b94b9545a7aceaf8b52e8e6b8713df63fe1113c4040fd5f92563438c0307d21
4
+ data.tar.gz: 6db23c373003f60f0faf0f48ff1a4cb7d086f36820e7f5e732a147eea0d22f98
5
5
  SHA512:
6
- metadata.gz: 74c053c8bcba554f9816b44b58f1d8b531c643d615961c9ffb56e79177d59a596477565b13d6317de7e7132dd7c70d9428ae8381a1757c9836073515edad8740
7
- data.tar.gz: cd6d7101a68f5ccb8657acf28d094c07a44bbd6312b8a381e16f34f8a4211929a00c26d6f5adced13ef7da085d704ffd8d303d7ae0ade38d41de0792aa5c6898
6
+ metadata.gz: 3a0fb03bcb60b82177efefcf2146d1512c50f9791f094769d64ae7c87899e9984ce41eebdb1fc8f6d8c40b287e42621f6d4bd9fdde23fe9884ebc0dd2202b5ae
7
+ data.tar.gz: 8fd5e39ac28109336a207edfedf5fc6b782ede8da4594cfdd1faf41e8e9df4d59a17716e1ea55121c575514d17fce9e0b3071ab98ecc54b007f66af8f002f560
@@ -38,6 +38,7 @@ module RuboCop
38
38
  casgn: CasgnNode,
39
39
  case: CaseNode,
40
40
  class: ClassNode,
41
+ complex: ComplexNode,
41
42
  const: ConstNode,
42
43
  def: DefNode,
43
44
  defined?: DefinedNode,
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module AST
5
+ # A node extension for `complex` nodes. This will be used in place of a plain
6
+ # node when the builder constructs the AST, making its methods available to
7
+ # all `complex` nodes within RuboCop.
8
+ class ComplexNode < Node
9
+ include BasicLiteralNode
10
+ include NumericNode
11
+ end
12
+ end
13
+ end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module AST
5
5
  # Common functionality for primitive literal nodes: `sym`, `str`,
6
- # `int`, `float`, `rational`...
6
+ # `int`, `float`, `rational`, `complex`...
7
7
  module BasicLiteralNode
8
8
  # Returns the value of the literal.
9
9
  #
@@ -2,7 +2,7 @@
2
2
 
3
3
  module RuboCop
4
4
  module AST
5
- # Common functionality for primitive numeric nodes: `int`, `float`, `rational`...
5
+ # Common functionality for primitive numeric nodes: `int`, `float`, `rational`, `complex`...
6
6
  module NumericNode
7
7
  SIGN_REGEX = /\A[+-]/.freeze
8
8
  private_constant :SIGN_REGEX
@@ -15,7 +15,7 @@ module RuboCop
15
15
  #
16
16
  # @return [Boolean] whether this literal has a sign.
17
17
  def sign?
18
- source.match(SIGN_REGEX)
18
+ source.match?(SIGN_REGEX)
19
19
  end
20
20
  end
21
21
  end
@@ -116,7 +116,10 @@ module RuboCop
116
116
 
117
117
  block: :any_block,
118
118
  numblock: :any_block,
119
- itblock: :any_block
119
+ itblock: :any_block,
120
+
121
+ match_pattern: :any_match_pattern,
122
+ match_pattern_p: :any_match_pattern
120
123
  }.freeze
121
124
  private_constant :GROUP_FOR_TYPE
122
125
 
@@ -269,7 +272,7 @@ module RuboCop
269
272
  def right_siblings
270
273
  return [].freeze unless parent
271
274
 
272
- parent.children[sibling_index + 1..].freeze
275
+ parent.children[(sibling_index + 1)..].freeze
273
276
  end
274
277
 
275
278
  # Common destructuring method. This can be used to normalize
@@ -540,6 +543,10 @@ module RuboCop
540
543
  GROUP_FOR_TYPE[type] == :any_block
541
544
  end
542
545
 
546
+ def any_match_pattern_type?
547
+ GROUP_FOR_TYPE[type] == :any_match_pattern
548
+ end
549
+
543
550
  def guard_clause?
544
551
  node = operator_keyword? ? rhs : self
545
552
 
@@ -15,10 +15,12 @@ module RuboCop
15
15
  @visit = {}
16
16
  end
17
17
 
18
+ # rubocop:disable Naming/PredicateMethod
18
19
  def enter(node_id)
19
20
  @visit[node_id] = false
20
21
  true
21
22
  end
23
+ # rubocop:enable Naming/PredicateMethod
22
24
 
23
25
  def success(node_id)
24
26
  @visit[node_id] = true
@@ -261,7 +261,7 @@ module RuboCop
261
261
  arities = children
262
262
  .reverse
263
263
  .map(&:arity_range)
264
- .map { |r| last = last.begin + r.begin..last.max + r.max }
264
+ .map { |r| last = (last.begin + r.begin)..(last.max + r.max) }
265
265
  .reverse!
266
266
  arities.push last_arity
267
267
  end
@@ -179,7 +179,7 @@ module RuboCop
179
179
  class AnyOrder < Node
180
180
  include ForbidInSeqHead
181
181
 
182
- ARITIES = Hash.new { |h, k| h[k] = k - 1..Float::INFINITY }
182
+ ARITIES = Hash.new { |h, k| h[k] = (k - 1)..Float::INFINITY }
183
183
  private_constant :ARITIES
184
184
 
185
185
  def term_nodes
@@ -256,7 +256,8 @@ module RuboCop
256
256
  [ast, comments, tokens]
257
257
  end
258
258
 
259
- def parser_class(ruby_version, parser_engine) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
259
+ # rubocop:disable Lint/FloatComparison, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
260
+ def parser_class(ruby_version, parser_engine)
260
261
  case parser_engine
261
262
  when :parser_whitequark
262
263
  case ruby_version
@@ -323,6 +324,7 @@ module RuboCop
323
324
  end
324
325
  end
325
326
  end
327
+ # rubocop:enable Lint/FloatComparison, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
326
328
 
327
329
  def builder_class(parser_engine)
328
330
  case parser_engine
@@ -339,7 +341,7 @@ module RuboCop
339
341
 
340
342
  parser_class = parser_class(ruby_version, parser_engine)
341
343
 
342
- parser_instance = if prism_result
344
+ parser_instance = if parser_engine == :parser_prism && prism_result
343
345
  # NOTE: Since it is intended for use with Ruby LSP, it targets only Prism.
344
346
  # If there is no reuse of a pre-parsed result, such as in Ruby LSP,
345
347
  # regular parsing with Prism occurs, and `else` branch will be executed.
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module AST
5
5
  module Version
6
- STRING = '1.44.1'
6
+ STRING = '1.46.0'
7
7
  end
8
8
  end
9
9
  end
data/lib/rubocop/ast.rb CHANGED
@@ -48,6 +48,7 @@ require_relative 'ast/node/case_match_node'
48
48
  require_relative 'ast/node/case_node'
49
49
  require_relative 'ast/node/casgn_node'
50
50
  require_relative 'ast/node/class_node'
51
+ require_relative 'ast/node/complex_node'
51
52
  require_relative 'ast/node/const_node'
52
53
  require_relative 'ast/node/def_node'
53
54
  require_relative 'ast/node/defined_node'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-ast
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.44.1
4
+ version: 1.46.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-04-11 00:00:00.000000000 Z
13
+ date: 2025-07-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parser
@@ -69,6 +69,7 @@ files:
69
69
  - lib/rubocop/ast/node/case_node.rb
70
70
  - lib/rubocop/ast/node/casgn_node.rb
71
71
  - lib/rubocop/ast/node/class_node.rb
72
+ - lib/rubocop/ast/node/complex_node.rb
72
73
  - lib/rubocop/ast/node/const_node.rb
73
74
  - lib/rubocop/ast/node/csend_node.rb
74
75
  - lib/rubocop/ast/node/def_node.rb