steep 1.4.0.dev.4 → 1.4.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: 0c5431b7816a655799dcfc5ab49aff4d630062176b52b14f377b4d6ca754674f
4
- data.tar.gz: ea016b12eac32d93fffcbb315009aeb143626fd831669b36ade6c7d01b55a475
3
+ metadata.gz: d0c3f3309cc8169ca1616f43b6bfcaf977339107d6e6e14f7c256d71921b9455
4
+ data.tar.gz: 0a85c1429383a0321fe2932befbd880942c00df1e788913a4f5c2e3d8abd9479
5
5
  SHA512:
6
- metadata.gz: a6e97f6c64d6e5dfc86a0d28e6129b1fe66aa75e1b28290092c47b12dda165fc9ce87187f8f27358cef169d2a3a2b3eb4eae42aa4702dd11d9586aad8d7733e2
7
- data.tar.gz: 94f611f5db76c09c853af7f5a333d43a0650e21fadde356990acb447231a86eb18bc3b63aa1ed1ead1c6d39066427eedf14f7379932dc077a1b4f9446184e749
6
+ metadata.gz: 8ce071dd59d2a6e4c21c9c2114d33603e4628052074b7a6f8500f8e4380ca53dfdd77baac210c1ced711eeccc7da94257baceefdafe5633cbd3932687dab6e8c
7
+ data.tar.gz: db71a9ab6ca415b266e62b7ef17a34e88dd4135326bae512fcf8fe8051610a6c2259bcf11773f09ebb8192958d96f03154a5a1be955beddc7088f2bfc0bf57a5
data/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 1.4.0 (2023-04-25)
6
+
7
+ ### Type checker core
8
+
9
+ * Return immediately if blocks are incompatible ([#765](https://github.com/soutaro/steep/pull/765))
10
+ * Fix location of no method error ([#763](https://github.com/soutaro/steep/pull/763))
11
+ * Support `gvasgn` in assignment variants ([#762](https://github.com/soutaro/steep/pull/762))
12
+ * Set up break contexts correctly for untyped blocks ([#752](https://github.com/soutaro/steep/pull/752))
13
+ * Fix flow sensitive on `case` without condition ([#751](https://github.com/soutaro/steep/pull/751))
14
+ * Support `...` syntax ([#750](https://github.com/soutaro/steep/pull/750))
15
+ * Fix constant declaration type checking ([#738](https://github.com/soutaro/steep/pull/738))
16
+ * Fix errors caused by non-ascii variable names ([#703](https://github.com/soutaro/steep/pull/703))
17
+ * Update RBS to 3.0 ([#716](https://github.com/soutaro/steep/pull/716), [#754](https://github.com/soutaro/steep/pull/754))
18
+
19
+ ### Language server
20
+
21
+ * Implement signature help, better completion and hover ([#759](https://github.com/soutaro/steep/pull/759), [#761](https://github.com/soutaro/steep/pull/761), [#766](https://github.com/soutaro/steep/pull/766))
22
+
23
+ ### Miscellaneous
24
+
25
+ * Remove pathname from runtime_dependency ([#739](https://github.com/soutaro/steep/pull/739))
26
+ * `parallel` out, `concurrent-ruby` in ([#760](https://github.com/soutaro/steep/pull/760))
27
+
28
+ ## 1.3.2 (2023-03-17)
29
+
30
+ ### Miscellaneous
31
+
32
+ * Remove pathname from runtime_dependency ([#740](https://github.com/soutaro/steep/pull/740))
33
+
34
+ ## 1.3.1 (2023-03-08)
35
+
36
+ ### Miscellaneous
37
+
38
+ * Require rbs-2.8.x ([#732](https://github.com/soutaro/steep/pull/732))
39
+
5
40
  ## 1.3.0 (2022-11-25)
6
41
 
7
42
  ### Type checker core
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- steep (1.4.0.dev.4)
4
+ steep (1.4.0)
5
5
  activesupport (>= 5.1)
6
+ concurrent-ruby (>= 1.2.2)
6
7
  csv (>= 3.0.9)
7
8
  fileutils (>= 1.1.0)
8
9
  json (>= 2.1.0)
9
10
  language_server-protocol (>= 3.15, < 4.0)
10
11
  listen (~> 3.0)
11
12
  logger (>= 1.3.0)
12
- parallel (>= 1.0.0)
13
13
  parser (>= 3.1)
14
14
  rainbow (>= 2.2.2, < 4.0)
15
15
  rbs (>= 2.8.0)
@@ -46,8 +46,7 @@ GEM
46
46
  minitest (> 5.3)
47
47
  minitest-slow_test (0.2.0)
48
48
  minitest (>= 5.0)
49
- parallel (1.23.0)
50
- parser (3.2.2.0)
49
+ parser (3.2.2.1)
51
50
  ast (~> 2.4.1)
52
51
  rainbow (3.1.1)
53
52
  rake (13.0.6)
data/Gemfile.steep.lock CHANGED
@@ -20,7 +20,6 @@ GEM
20
20
  rb-inotify (~> 0.9, >= 0.9.10)
21
21
  logger (1.5.3)
22
22
  minitest (5.18.0)
23
- parallel (1.22.1)
24
23
  parser (3.2.2.0)
25
24
  ast (~> 2.4.1)
26
25
  rainbow (3.1.1)
@@ -29,15 +28,15 @@ GEM
29
28
  ffi (~> 1.0)
30
29
  rbs (3.0.4)
31
30
  securerandom (0.2.2)
32
- steep (1.4.0.dev.3)
31
+ steep (1.4.0.dev.5)
33
32
  activesupport (>= 5.1)
33
+ concurrent-ruby (>= 1.2.2)
34
34
  csv (>= 3.0.9)
35
35
  fileutils (>= 1.1.0)
36
36
  json (>= 2.1.0)
37
37
  language_server-protocol (>= 3.15, < 4.0)
38
38
  listen (~> 3.0)
39
39
  logger (>= 1.3.0)
40
- parallel (>= 1.0.0)
41
40
  parser (>= 3.1)
42
41
  rainbow (>= 2.2.2, < 4.0)
43
42
  rbs (>= 2.8.0)
data/lib/steep/cli.rb CHANGED
@@ -8,8 +8,6 @@ module Steep
8
8
  attr_reader :stderr
9
9
  attr_reader :command
10
10
 
11
- include Parallel::ProcessorCount
12
-
13
11
  def initialize(stdout:, stdin:, stderr:, argv:)
14
12
  @stdout = stdout
15
13
  @stdin = stdin
@@ -41,7 +41,7 @@ module Steep
41
41
  severity = severity_for(diagnostic)
42
42
 
43
43
  if severity
44
- range = diagnostic.location&.as_lsp_range or raise
44
+ range = diagnostic.location&.as_lsp_range or raise "#{diagnostic.class} object (#{diagnostic.full_message}) instance must have `#location`"
45
45
 
46
46
  LSP::Interface::Diagnostic.new(
47
47
  message: diagnostic.full_message,
@@ -286,13 +286,14 @@ module Steep
286
286
  def initialize(node:, type:, method:)
287
287
  loc = case node.type
288
288
  when :send
289
- node.loc.selector
289
+ loc = _ = nil
290
+ loc ||= node.loc.operator if node.loc.respond_to?(:operator)
291
+ loc ||= node.loc.selector if node.loc.respond_to?(:selector)
292
+ loc
290
293
  when :block
291
294
  node.children[0].loc.selector
292
- else
293
- node.loc.expression
294
295
  end
295
- super(node: node, location: loc)
296
+ super(node: node, location: loc || node.loc.expression)
296
297
  @type = type
297
298
  @method = method
298
299
  end
@@ -4,14 +4,12 @@ module Steep
4
4
  class JobsOption
5
5
  attr_accessor :jobs_count, :steep_command, :jobs_count_modifier
6
6
 
7
- include Parallel::ProcessorCount
8
-
9
7
  def initialize(jobs_count_modifier: 0)
10
8
  @jobs_count_modifier = jobs_count_modifier
11
9
  end
12
10
 
13
11
  def default_jobs_count
14
- physical_processor_count + jobs_count_modifier
12
+ Concurrent.physical_processor_count + jobs_count_modifier
15
13
  end
16
14
 
17
15
  def jobs_count_value
@@ -144,7 +144,6 @@ module Steep
144
144
 
145
145
  case sig_service.status
146
146
  when Services::SignatureService::SyntaxErrorStatus, Services::SignatureService::AncestorErrorStatus
147
-
148
147
  if buffer = sig_service.latest_env.buffers.find {|buf| Pathname(buf.name) == Pathname(relative_path) }
149
148
  dirs = sig_service.latest_env.signatures[buffer][0]
150
149
  else
@@ -208,7 +207,7 @@ module Steep
208
207
  end
209
208
 
210
209
  LSP::Interface::CompletionList.new(
211
- is_incomplete: false,
210
+ is_incomplete: !sig_service.status.is_a?(Services::SignatureService::LoadedStatus),
212
211
  items: completion_items
213
212
  )
214
213
  end
@@ -394,6 +393,8 @@ module Steep
394
393
  end
395
394
  end
396
395
  end
396
+ rescue Parser::SyntaxError
397
+ # Ignore syntax error
397
398
  end
398
399
  end
399
400
  end
@@ -627,7 +627,7 @@ module Steep
627
627
 
628
628
  sub_interface, super_interface = relation
629
629
 
630
- method_pairs = super_interface.methods.each_with_object({}) do |(method_name, sup_method), hash|
630
+ method_pairs = super_interface.methods.each_with_object({}) do |(method_name, sup_method), hash| #$ Hash[Symbol, Relation[Interface::Shape::Entry]]
631
631
  if sub_method = sub_interface.methods[method_name]
632
632
  hash[method_name] = Relation.new(sub_type: sub_method, super_type: sup_method)
633
633
  else
@@ -806,26 +806,23 @@ module Steep
806
806
  super_type.type_params.empty? or raise "Expected monomorphic method type: #{super_type}"
807
807
 
808
808
  All(relation) do |result|
809
- result.add(Relation.new(sub_type: sub_type.type, super_type: super_type.type)) do |rel|
810
- check_function(name, rel)
811
- end
812
-
813
- result.add(Relation.new(sub_type: sub_type.block, super_type: super_type.block)) do |rel|
814
- ret = expand_block_given(name, rel)
815
-
816
- case ret
817
- when Relation
809
+ type_relation = Relation.new(sub_type: sub_type.type, super_type: super_type.type)
810
+
811
+ case ret = expand_block_given(name, Relation.new(sub_type: sub_type.block, super_type: super_type.block))
812
+ when true
813
+ result.add(type_relation) { check_function(name, type_relation) }
814
+ when Relation
815
+ result.add(type_relation) { check_function(name, type_relation) }
816
+ result.add(ret) do
818
817
  All(ret) do |result|
819
818
  result.add_result(check_self_type_binding(ret, ret.super_type.self_type, ret.sub_type.self_type))
820
- result.add(Relation(ret.super_type.type, ret.sub_type.type)) do |rel|
821
- check_function(name, rel)
819
+ result.add(Relation(ret.super_type.type, ret.sub_type.type)) do |block_relation|
820
+ check_function(name, block_relation)
822
821
  end
823
822
  end
824
- when Result::Base
825
- ret
826
- else
827
- nil
828
823
  end
824
+ when Result::Failure
825
+ result.add { ret }
829
826
  end
830
827
  end
831
828
  end
@@ -848,6 +848,15 @@ module Steep
848
848
 
849
849
  constr.add_typing(node, type: type)
850
850
 
851
+ when :gvasgn
852
+ var_node = lhs.updated(:gvar)
853
+ send_node = rhs.updated(:send, [var_node, op, rhs])
854
+ new_node = node.updated(:gvasgn, [lhs.children[0], send_node])
855
+
856
+ type, constr = synthesize(new_node, hint: hint)
857
+
858
+ constr.add_typing(node, type: type)
859
+
851
860
  when :send
852
861
  new_rhs = rhs.updated(:send, [lhs, node.children[1], node.children[2]])
853
862
  new_node = lhs.updated(:send, [lhs.children[0], :"#{lhs.children[1]}=", *lhs.children.drop(2), new_rhs])
@@ -2226,6 +2235,9 @@ module Steep
2226
2235
  when :ivasgn
2227
2236
  type, constr = synthesize(rhs, hint: hint)
2228
2237
  constr.ivasgn(asgn, type)
2238
+ when :gvasgn
2239
+ type, constr = synthesize(rhs, hint: hint)
2240
+ constr.gvasgn(asgn, type)
2229
2241
  when :send
2230
2242
  children = asgn.children.dup
2231
2243
  children[1] = :"#{children[1]}="
@@ -2257,27 +2269,11 @@ module Steep
2257
2269
  yield_self do
2258
2270
  name, rhs = node.children
2259
2271
  lhs_type = context.type_env[name]
2260
-
2261
2272
  rhs_type, constr = synthesize(rhs, hint: lhs_type).to_ary
2262
2273
 
2263
- if lhs_type
2264
- result = constr.check_relation(sub_type: rhs_type, super_type: lhs_type)
2265
-
2266
- if result.failure?
2267
- constr.typing.add_error(
2268
- Diagnostic::Ruby::IncompatibleAssignment.new(
2269
- node: node,
2270
- lhs_type: lhs_type,
2271
- rhs_type: rhs_type,
2272
- result: result
2273
- )
2274
- )
2275
- end
2276
- else
2277
- constr.typing.add_error(Diagnostic::Ruby::UnknownGlobalVariable.new(node: node, name: name))
2278
- end
2274
+ type, constr = constr.gvasgn(node, rhs_type)
2279
2275
 
2280
- constr.add_typing(node, type: rhs_type)
2276
+ constr.add_typing(node, type: type)
2281
2277
  end
2282
2278
 
2283
2279
  when :gvar
@@ -2584,7 +2580,7 @@ module Steep
2584
2580
  else
2585
2581
  a.type
2586
2582
  end
2587
- asgn_type.nil? || asgn_type == :lvasgn || asgn_type == :ivasgn
2583
+ asgn_type.nil? || asgn_type == :lvasgn || asgn_type == :ivasgn || asgn_type == :gvasgn
2588
2584
  end
2589
2585
  end
2590
2586
 
@@ -2632,6 +2628,24 @@ module Steep
2632
2628
  add_typing(node, type: rhs_type)
2633
2629
  end
2634
2630
 
2631
+ def gvasgn(node, rhs_type)
2632
+ name = node.children[0]
2633
+
2634
+ lhs_type = context.type_env[name]
2635
+
2636
+ if lhs_type
2637
+ if result = no_subtyping?(sub_type: rhs_type, super_type: lhs_type)
2638
+ typing.add_error(
2639
+ Diagnostic::Ruby::IncompatibleAssignment.new(node: node, lhs_type: lhs_type, rhs_type: rhs_type, result: result)
2640
+ )
2641
+ end
2642
+ else
2643
+ typing.add_error(Diagnostic::Ruby::UnknownGlobalVariable.new(node: node, name: name))
2644
+ end
2645
+
2646
+ add_typing(node, type: rhs_type)
2647
+ end
2648
+
2635
2649
  def type_masgn_type(mlhs_node, rhs_type, masgn:, optional:)
2636
2650
  # @type var constr: TypeConstruction
2637
2651
  constr = self
@@ -2659,7 +2673,7 @@ module Steep
2659
2673
  when :ivasgn
2660
2674
  _, constr = constr.ivasgn(asgn_node, type)
2661
2675
  when :gvasgn
2662
- raise
2676
+ _, constr = constr.gvasgn(asgn_node, type)
2663
2677
  when :mlhs
2664
2678
  constr = (constr.type_masgn_type(asgn_node, type, masgn: masgn, optional: optional) or return)
2665
2679
  end
@@ -2714,11 +2728,11 @@ module Steep
2714
2728
  each_descendant_node(lhs) do |node|
2715
2729
  case node.type
2716
2730
  when :lvasgn
2717
- _, constr = constr.lvasgn(node, AST::Builtin.any_type).to_ary
2731
+ _, constr = constr.lvasgn(node, AST::Builtin.any_type)
2718
2732
  when :ivasgn
2719
- _, constr = constr.ivasgn(node, AST::Builtin.any_type).to_ary
2733
+ _, constr = constr.ivasgn(node, AST::Builtin.any_type)
2720
2734
  when :gvasgn
2721
- raise
2735
+ _, constr = constr.gvasgn(node, AST::Builtin.any_type)
2722
2736
  else
2723
2737
  _, constr = constr.add_typing(node, type: AST::Builtin.any_type).to_ary
2724
2738
  end
data/lib/steep/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Steep
2
- VERSION = "1.4.0.dev.4"
2
+ VERSION = "1.4.0"
3
3
  end
data/lib/steep.rb CHANGED
@@ -16,7 +16,7 @@ require 'uri'
16
16
  require "yaml"
17
17
  require "securerandom"
18
18
 
19
- require "parallel/processor_count"
19
+ require "concurrent/utility/processor_counter"
20
20
  require "terminal-table"
21
21
 
22
22
  require "rbs"
@@ -0,0 +1,39 @@
1
+ module Concurrent
2
+ # Number of physical processor cores on the current system. For performance
3
+ # reasons the calculated value will be memoized on the first call.
4
+ #
5
+ # On Windows the Win32 API will be queried for the `NumberOfCores from
6
+ # Win32_Processor`. This will return the total number "of cores for the
7
+ # current instance of the processor." On Unix-like operating systems either
8
+ # the `hwprefs` or `sysctl` utility will be called in a subshell and the
9
+ # returned value will be used. In the rare case where none of these methods
10
+ # work or an exception is raised the function will simply return 1.
11
+ #
12
+ # @return [Integer] number physical processor cores on the current system
13
+ #
14
+ # @see https://github.com/grosser/parallel/blob/4fc8b89d08c7091fe0419ca8fba1ec3ce5a8d185/lib/parallel.rb
15
+ #
16
+ # @see http://msdn.microsoft.com/en-us/library/aa394373(v=vs.85).aspx
17
+ # @see http://www.unix.com/man-page/osx/1/HWPREFS/
18
+ # @see http://linux.die.net/man/8/sysctl
19
+ def self.physical_processor_count: () -> Integer
20
+
21
+ # Number of processors seen by the OS and used for process scheduling. For
22
+ # performance reasons the calculated value will be memoized on the first
23
+ # call.
24
+ #
25
+ # When running under JRuby the Java runtime call
26
+ # `java.lang.Runtime.getRuntime.availableProcessors` will be used. According
27
+ # to the Java documentation this "value may change during a particular
28
+ # invocation of the virtual machine... [applications] should therefore
29
+ # occasionally poll this property." Subsequently the result will NOT be
30
+ # memoized under JRuby.
31
+ #
32
+ # Otherwise Ruby's Etc.nprocessors will be used.
33
+ #
34
+ # @return [Integer] number of processors seen by the OS or Java runtime
35
+ #
36
+ # @see http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#availableProcessors()
37
+ #
38
+ def self.processor_count: () -> Integer
39
+ end
data/sig/steep/cli.rbs CHANGED
@@ -10,8 +10,6 @@ module Steep
10
10
 
11
11
  attr_reader command: Symbol
12
12
 
13
- include Parallel::ProcessorCount
14
-
15
13
  def initialize: (stdout: IO, stdin: IO, stderr: IO, argv: Array[String]) -> void
16
14
 
17
15
  def self.available_commands: () -> ::Array[Symbol]
@@ -8,8 +8,6 @@ module Steep
8
8
 
9
9
  attr_reader jobs_count_modifier: Integer
10
10
 
11
- include Parallel::ProcessorCount
12
-
13
11
  def initialize: (?jobs_count_modifier: Integer) -> void
14
12
 
15
13
  def default_jobs_count: () -> Integer
@@ -97,7 +97,7 @@ module Steep
97
97
  # Returns a Relation when the given relation can be expanded to relation between Interface::Block.
98
98
  # Returns a failure otherwise.
99
99
  #
100
- def expand_block_given: (Symbol name, Relation[Interface::Block?] relation) -> (Relation[Interface::Block] | true | Result::t)
100
+ def expand_block_given: (Symbol name, Relation[Interface::Block?] relation) -> (Relation[Interface::Block] | true | Result::Failure)
101
101
 
102
102
  # Receives a subtyping relation between self bindings `S <: S'` that is included in procs or blocks as:
103
103
  #
@@ -122,6 +122,8 @@ module Steep
122
122
 
123
123
  def ivasgn: (Parser::AST::Node node, AST::Types::t rhs_type) -> Pair
124
124
 
125
+ def gvasgn: (Parser::AST::Node node, AST::Types::t rhs_type) -> Pair
126
+
125
127
  def type_masgn: (Parser::AST::Node node) -> Pair
126
128
 
127
129
  def type_masgn_type: (Parser::AST::Node mlhs_node, AST::Types::t? rhs_type, masgn: TypeInference::MultipleAssignment, optional: bool) -> TypeConstruction?
@@ -1,7 +1,6 @@
1
1
  target :test do
2
2
  check "*.rb"
3
3
  signature "*.rbs"
4
- library "set"
5
4
 
6
5
  configure_code_diagnostics(Steep::Diagnostic::Ruby.all_error)
7
6
  end
@@ -0,0 +1 @@
1
+ Enumerator::Product.new([1,2,3], ["a", "b", "c"])
data/steep.gemspec CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_runtime_dependency "listen", "~> 3.0"
35
35
  spec.add_runtime_dependency "language_server-protocol", ">= 3.15", "< 4.0"
36
36
  spec.add_runtime_dependency "rbs", ">= 2.8.0"
37
- spec.add_runtime_dependency "parallel", ">= 1.0.0"
37
+ spec.add_runtime_dependency "concurrent-ruby", ">= 1.2.2"
38
38
  spec.add_runtime_dependency "terminal-table", ">= 2", "< 4"
39
39
  spec.add_runtime_dependency "securerandom", ">= 0.1"
40
40
  spec.add_runtime_dependency "json", ">= 2.1.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steep
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0.dev.4
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Soutaro Matsumoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-21 00:00:00.000000000 Z
11
+ date: 2023-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -107,19 +107,19 @@ dependencies:
107
107
  - !ruby/object:Gem::Version
108
108
  version: 2.8.0
109
109
  - !ruby/object:Gem::Dependency
110
- name: parallel
110
+ name: concurrent-ruby
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 1.0.0
115
+ version: 1.2.2
116
116
  type: :runtime
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 1.0.0
122
+ version: 1.2.2
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: terminal-table
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -380,9 +380,9 @@ files:
380
380
  - sample/lib/length.rb
381
381
  - sample/sig/conference.rbs
382
382
  - sample/sig/length.rbs
383
+ - sig/shims/concurrent-ruby.rbs
383
384
  - sig/shims/exception.rbs
384
385
  - sig/shims/language-server_protocol.rbs
385
- - sig/shims/parallel.rbs
386
386
  - sig/shims/parser.rbs
387
387
  - sig/shims/parser/comment.rbs
388
388
  - sig/shims/parser/nodes.rbs
@@ -702,6 +702,7 @@ files:
702
702
  - smoke/regression/block_param_split.rbs
703
703
  - smoke/regression/empty_yield.rb
704
704
  - smoke/regression/empty_yield.rbs
705
+ - smoke/regression/enumerator_product.rb
705
706
  - smoke/regression/fun.rb
706
707
  - smoke/regression/fun.rbs
707
708
  - smoke/regression/hash.rb
@@ -774,9 +775,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
774
775
  version: 2.7.0
775
776
  required_rubygems_version: !ruby/object:Gem::Requirement
776
777
  requirements:
777
- - - ">"
778
+ - - ">="
778
779
  - !ruby/object:Gem::Version
779
- version: 1.3.1
780
+ version: '0'
780
781
  requirements: []
781
782
  rubygems_version: 3.4.6
782
783
  signing_key:
@@ -1,5 +0,0 @@
1
- module Parallel
2
- module ProcessorCount
3
- def physical_processor_count: () -> Integer
4
- end
5
- end