From 5a2ededb7a67969887b3ef616067558380237452 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2020 08:05:39 +0000 Subject: [PATCH 1/4] build: bump rubocop-rspec from 1.37.1 to 1.38.0 in /Library/Homebrew Bumps [rubocop-rspec](https://github.com/rubocop-hq/rubocop-rspec) from 1.37.1 to 1.38.0. - [Release notes](https://github.com/rubocop-hq/rubocop-rspec/releases) - [Changelog](https://github.com/rubocop-hq/rubocop-rspec/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop-rspec/compare/v1.37.1...v1.38.0) Signed-off-by: dependabot-preview[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 8954b3c8a8..3b70c84f32 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -89,7 +89,7 @@ GEM unicode-display_width (>= 1.4.0, < 1.7) rubocop-performance (1.5.2) rubocop (>= 0.71.0) - rubocop-rspec (1.37.1) + rubocop-rspec (1.38.0) rubocop (>= 0.68.1) ruby-macho (2.2.0) ruby-progressbar (1.10.1) From 11f461a315dfed143b5c40715713e204c3c4882e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2020 12:31:12 +0000 Subject: [PATCH 2/4] build: bump concurrent-ruby from 1.1.5 to 1.1.6 in /Library/Homebrew Bumps [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) from 1.1.5 to 1.1.6. - [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases) - [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/ruby-concurrency/concurrent-ruby/compare/v1.1.5...v1.1.6) Signed-off-by: dependabot-preview[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 8954b3c8a8..9a752a3c74 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -8,7 +8,7 @@ GEM tzinfo (~> 1.1) zeitwerk (~> 2.2) ast (2.4.0) - concurrent-ruby (1.1.5) + concurrent-ruby (1.1.6) connection_pool (2.2.2) coveralls (0.8.23) json (>= 1.8, < 3) From baa1491bdacab97062471d40e388c2aa393585e6 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 11 Feb 2020 12:38:38 +0000 Subject: [PATCH 3/4] brew vendor-gems: commit updates. --- .../Homebrew/vendor/bundle/bundler/setup.rb | 12 +-- .../lib/concurrent/utility/at_exit.rb | 97 ------------------ .../lib/concurrent/version.rb | 3 - .../lib/concurrent-ruby}/concurrent-ruby.rb | 0 .../lib/concurrent-ruby}/concurrent.rb | 0 .../lib/concurrent-ruby}/concurrent/agent.rb | 0 .../lib/concurrent-ruby}/concurrent/array.rb | 10 +- .../lib/concurrent-ruby}/concurrent/async.rb | 0 .../lib/concurrent-ruby}/concurrent/atom.rb | 2 +- .../atomic/abstract_thread_local_var.rb | 0 .../concurrent/atomic/atomic_boolean.rb | 4 +- .../concurrent/atomic/atomic_fixnum.rb | 0 .../atomic/atomic_markable_reference.rb | 0 .../concurrent/atomic/atomic_reference.rb | 0 .../concurrent/atomic/count_down_latch.rb | 2 +- .../concurrent/atomic/cyclic_barrier.rb | 0 .../concurrent/atomic/event.rb | 0 .../atomic/java_count_down_latch.rb | 0 .../atomic/java_thread_local_var.rb | 0 .../concurrent/atomic/mutex_atomic_boolean.rb | 0 .../concurrent/atomic/mutex_atomic_fixnum.rb | 0 .../atomic/mutex_count_down_latch.rb | 0 .../concurrent/atomic/mutex_semaphore.rb | 0 .../concurrent/atomic/read_write_lock.rb | 0 .../atomic/reentrant_read_write_lock.rb | 0 .../atomic/ruby_thread_local_var.rb | 76 ++++++++------ .../concurrent/atomic/semaphore.rb | 0 .../concurrent/atomic/thread_local_var.rb | 2 +- .../atomic_reference/mutex_atomic.rb | 0 .../atomic_reference/numeric_cas_wrapper.rb | 0 .../concurrent-ruby}/concurrent/atomics.rb | 0 .../collection/copy_on_notify_observer_set.rb | 0 .../collection/copy_on_write_observer_set.rb | 0 .../java_non_concurrent_priority_queue.rb | 0 .../concurrent/collection/lock_free_stack.rb | 0 .../map/atomic_reference_map_backend.rb | 0 .../collection/map/mri_map_backend.rb | 0 .../map/non_concurrent_map_backend.rb | 0 .../map/synchronized_map_backend.rb | 0 .../non_concurrent_priority_queue.rb | 2 +- .../ruby_non_concurrent_priority_queue.rb | 0 .../concurrent/concern/deprecation.rb | 0 .../concurrent/concern/dereferenceable.rb | 4 +- .../concurrent/concern/logging.rb | 0 .../concurrent/concern/obligation.rb | 0 .../concurrent/concern/observable.rb | 0 .../concurrent/concurrent_ruby.jar | Bin 0 -> 137051 bytes .../concurrent/configuration.rb | 22 ++-- .../concurrent-ruby}/concurrent/constants.rb | 0 .../concurrent-ruby}/concurrent/dataflow.rb | 0 .../lib/concurrent-ruby}/concurrent/delay.rb | 0 .../lib/concurrent-ruby}/concurrent/errors.rb | 0 .../concurrent-ruby}/concurrent/exchanger.rb | 0 .../executor/abstract_executor_service.rb | 40 +++----- .../concurrent/executor/cached_thread_pool.rb | 8 +- .../concurrent/executor/executor_service.rb | 4 +- .../concurrent/executor/fixed_thread_pool.rb | 21 ++-- .../concurrent/executor/immediate_executor.rb | 0 .../executor/indirect_immediate_executor.rb | 0 .../executor/java_executor_service.rb | 24 +++-- .../executor/java_single_thread_executor.rb | 7 +- .../executor/java_thread_pool_executor.rb | 3 +- .../executor/ruby_executor_service.rb | 2 - .../executor/ruby_single_thread_executor.rb | 1 - .../executor/ruby_thread_pool_executor.rb | 13 ++- .../concurrent/executor/safe_task_executor.rb | 0 .../executor/serial_executor_service.rb | 0 .../executor/serialized_execution.rb | 0 .../serialized_execution_delegator.rb | 0 .../executor/simple_executor_service.rb | 2 +- .../executor/single_thread_executor.rb | 1 + .../executor/thread_pool_executor.rb | 0 .../concurrent/executor/timer_set.rb | 1 - .../concurrent-ruby}/concurrent/executors.rb | 0 .../lib/concurrent-ruby}/concurrent/future.rb | 0 .../lib/concurrent-ruby}/concurrent/hash.rb | 0 .../concurrent/immutable_struct.rb | 8 ++ .../lib/concurrent-ruby}/concurrent/ivar.rb | 0 .../lib/concurrent-ruby}/concurrent/map.rb | 2 +- .../lib/concurrent-ruby}/concurrent/maybe.rb | 0 .../concurrent/mutable_struct.rb | 10 ++ .../lib/concurrent-ruby}/concurrent/mvar.rb | 0 .../concurrent-ruby}/concurrent/options.rb | 0 .../concurrent-ruby}/concurrent/promise.rb | 0 .../concurrent-ruby}/concurrent/promises.rb | 0 .../concurrent-ruby}/concurrent/re_include.rb | 0 .../concurrent/scheduled_task.rb | 0 .../lib/concurrent-ruby}/concurrent/set.rb | 10 +- .../concurrent/settable_struct.rb | 10 ++ .../concurrent/synchronization.rb | 0 .../abstract_lockable_object.rb | 0 .../synchronization/abstract_object.rb | 0 .../synchronization/abstract_struct.rb | 11 ++ .../concurrent/synchronization/condition.rb | 0 .../synchronization/jruby_lockable_object.rb | 0 .../synchronization/jruby_object.rb | 0 .../concurrent/synchronization/lock.rb | 0 .../synchronization/lockable_object.rb | 0 .../concurrent/synchronization/mri_object.rb | 0 .../synchronization/mutex_lockable_object.rb | 0 .../concurrent/synchronization/object.rb | 0 .../synchronization/rbx_lockable_object.rb | 0 .../concurrent/synchronization/rbx_object.rb | 0 .../synchronization/truffleruby_object.rb | 0 .../concurrent/synchronization/volatile.rb | 0 .../thread_safe/synchronized_delegator.rb | 0 .../concurrent/thread_safe/util.rb | 0 .../concurrent/thread_safe/util/adder.rb | 0 .../thread_safe/util/cheap_lockable.rb | 0 .../thread_safe/util/data_structures.rb | 0 .../thread_safe/util/power_of_two_tuple.rb | 0 .../concurrent/thread_safe/util/striped64.rb | 0 .../concurrent/thread_safe/util/volatile.rb | 0 .../thread_safe/util/xor_shift_random.rb | 0 .../concurrent-ruby}/concurrent/timer_task.rb | 0 .../lib/concurrent-ruby}/concurrent/tuple.rb | 0 .../lib/concurrent-ruby}/concurrent/tvar.rb | 0 .../concurrent/utility/engine.rb | 0 .../concurrent/utility/monotonic_time.rb | 0 .../utility/native_extension_loader.rb | 0 .../concurrent/utility/native_integer.rb | 0 .../concurrent/utility/processor_counter.rb | 5 + .../lib/concurrent-ruby/concurrent/version.rb | 3 + .../lib/rubocop/cop/rspec/scattered_setup.rb | 49 --------- .../lib/rubocop/rspec/hook.rb | 49 --------- .../config/default.yml | 10 ++ .../lib/rubocop-rspec.rb | 0 .../rubocop/cop/rspec/align_left_let_brace.rb | 0 .../cop/rspec/align_right_let_brace.rb | 0 .../lib/rubocop/cop/rspec/any_instance.rb | 0 .../lib/rubocop/cop/rspec/around_block.rb | 0 .../lib/rubocop/cop/rspec/be.rb | 0 .../lib/rubocop/cop/rspec/be_eql.rb | 0 .../lib/rubocop/cop/rspec/before_after_all.rb | 0 .../capybara/current_path_expectation.rb | 0 .../cop/rspec/capybara/feature_methods.rb | 0 .../lib/rubocop/cop/rspec/context_method.rb | 0 .../lib/rubocop/cop/rspec/context_wording.rb | 6 +- .../lib/rubocop/cop/rspec/cop.rb | 0 .../lib/rubocop/cop/rspec/describe_class.rb | 0 .../lib/rubocop/cop/rspec/describe_method.rb | 0 .../lib/rubocop/cop/rspec/describe_symbol.rb | 0 .../lib/rubocop/cop/rspec/described_class.rb | 0 .../rspec/described_class_module_wrapping.rb | 0 .../lib/rubocop/cop/rspec/dialect.rb | 0 .../rubocop/cop/rspec/empty_example_group.rb | 0 .../cop/rspec/empty_line_after_example.rb | 0 .../rspec/empty_line_after_example_group.rb | 0 .../cop/rspec/empty_line_after_final_let.rb | 0 .../cop/rspec/empty_line_after_hook.rb | 0 .../cop/rspec/empty_line_after_subject.rb | 0 .../lib/rubocop/cop/rspec/example_length.rb | 0 .../cop/rspec/example_without_description.rb | 0 .../lib/rubocop/cop/rspec/example_wording.rb | 0 .../lib/rubocop/cop/rspec/expect_actual.rb | 29 +++++- .../lib/rubocop/cop/rspec/expect_change.rb | 0 .../lib/rubocop/cop/rspec/expect_in_hook.rb | 0 .../lib/rubocop/cop/rspec/expect_output.rb | 0 .../attribute_defined_statically.rb | 0 .../cop/rspec/factory_bot/create_list.rb | 0 .../rspec/factory_bot/factory_class_name.rb | 0 .../lib/rubocop/cop/rspec/file_path.rb | 0 .../lib/rubocop/cop/rspec/focus.rb | 0 .../lib/rubocop/cop/rspec/hook_argument.rb | 0 .../cop/rspec/hooks_before_examples.rb | 0 .../cop/rspec/implicit_block_expectation.rb | 0 .../lib/rubocop/cop/rspec/implicit_expect.rb | 0 .../lib/rubocop/cop/rspec/implicit_subject.rb | 0 .../lib/rubocop/cop/rspec/instance_spy.rb | 0 .../rubocop/cop/rspec/instance_variable.rb | 17 ++- .../cop/rspec/invalid_predicate_matcher.rb | 0 .../lib/rubocop/cop/rspec/it_behaves_like.rb | 0 .../rubocop/cop/rspec/iterated_expectation.rb | 0 .../lib/rubocop/cop/rspec/leading_subject.rb | 0 .../cop/rspec/leaky_constant_declaration.rb | 0 .../rubocop/cop/rspec/let_before_examples.rb | 0 .../lib/rubocop/cop/rspec/let_setup.rb | 0 .../lib/rubocop/cop/rspec/message_chain.rb | 0 .../rubocop/cop/rspec/message_expectation.rb | 0 .../lib/rubocop/cop/rspec/message_spies.rb | 0 .../rspec/missing_example_group_argument.rb | 0 .../rubocop/cop/rspec/multiple_describes.rb | 0 .../cop/rspec/multiple_expectations.rb | 0 .../rubocop/cop/rspec/multiple_subjects.rb | 0 .../lib/rubocop/cop/rspec/named_subject.rb | 0 .../lib/rubocop/cop/rspec/nested_groups.rb | 0 .../lib/rubocop/cop/rspec/not_to_not.rb | 0 .../rubocop/cop/rspec/overwriting_setup.rb | 0 .../lib/rubocop/cop/rspec/pending.rb | 0 .../rubocop/cop/rspec/predicate_matcher.rb | 0 .../rubocop/cop/rspec/rails/http_status.rb | 0 .../lib/rubocop/cop/rspec/receive_counts.rb | 0 .../lib/rubocop/cop/rspec/receive_never.rb | 0 .../rubocop/cop/rspec/repeated_description.rb | 19 +++- .../lib/rubocop/cop/rspec/repeated_example.rb | 0 .../cop/rspec/repeated_example_group_body.rb | 87 ++++++++++++++++ .../repeated_example_group_description.rb | 96 +++++++++++++++++ .../lib/rubocop/cop/rspec/return_from_stub.rb | 0 .../lib/rubocop/cop/rspec/scattered_let.rb | 0 .../lib/rubocop/cop/rspec/scattered_setup.rb | 67 ++++++++++++ .../lib/rubocop/cop/rspec/shared_context.rb | 0 .../lib/rubocop/cop/rspec/shared_examples.rb | 0 .../rspec/single_argument_message_chain.rb | 0 .../lib/rubocop/cop/rspec/subject_stub.rb | 0 .../cop/rspec/unspecified_exception.rb | 0 .../lib/rubocop/cop/rspec/verified_doubles.rb | 0 .../lib/rubocop/cop/rspec/void_expect.rb | 0 .../lib/rubocop/cop/rspec/yield.rb | 0 .../lib/rubocop/cop/rspec_cops.rb | 2 + .../lib/rubocop/rspec.rb | 0 .../lib/rubocop/rspec/align_let_brace.rb | 0 .../rubocop/rspec/blank_line_separation.rb | 0 .../lib/rubocop/rspec/concept.rb | 0 .../lib/rubocop/rspec/config_formatter.rb | 0 .../rubocop/rspec/description_extractor.rb | 0 .../lib/rubocop/rspec/example.rb | 0 .../lib/rubocop/rspec/example_group.rb | 0 .../lib/rubocop/rspec/factory_bot.rb | 0 .../lib/rubocop/rspec/final_end_location.rb | 0 .../lib/rubocop/rspec/hook.rb | 82 +++++++++++++++ .../lib/rubocop/rspec/inject.rb | 0 .../lib/rubocop/rspec/language.rb | 12 +++ .../rubocop/rspec/language/node_pattern.rb | 0 .../lib/rubocop/rspec/node.rb | 0 .../lib/rubocop/rspec/top_level_describe.rb | 0 .../lib/rubocop/rspec/util.rb | 0 .../lib/rubocop/rspec/version.rb | 2 +- .../lib/rubocop/rspec/wording.rb | 0 228 files changed, 614 insertions(+), 335 deletions(-) delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/at_exit.rb delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/version.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent-ruby.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/agent.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/array.rb (84%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/async.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atom.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/abstract_thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/atomic_boolean.rb (96%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/atomic_fixnum.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/atomic_markable_reference.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/atomic_reference.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/cyclic_barrier.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/event.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/java_count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/java_thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/mutex_atomic_boolean.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/mutex_atomic_fixnum.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/mutex_count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/mutex_semaphore.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/read_write_lock.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/reentrant_read_write_lock.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/ruby_thread_local_var.rb (79%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/semaphore.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic/thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic_reference/mutex_atomic.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomic_reference/numeric_cas_wrapper.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/atomics.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/copy_on_notify_observer_set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/copy_on_write_observer_set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/java_non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/lock_free_stack.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/map/atomic_reference_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/map/mri_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/map/non_concurrent_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/map/synchronized_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/collection/ruby_non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/concern/deprecation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/concern/dereferenceable.rb (96%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/concern/logging.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/concern/obligation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/concern/observable.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/configuration.rb (89%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/constants.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/dataflow.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/delay.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/errors.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/exchanger.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/abstract_executor_service.rb (82%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/cached_thread_pool.rb (91%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/executor_service.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/fixed_thread_pool.rb (90%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/immediate_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/indirect_immediate_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/java_executor_service.rb (83%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/java_single_thread_executor.rb (91%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/java_thread_pool_executor.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/ruby_executor_service.rb (94%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/ruby_single_thread_executor.rb (90%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/ruby_thread_pool_executor.rb (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/safe_task_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/serial_executor_service.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/serialized_execution.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/serialized_execution_delegator.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/simple_executor_service.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/single_thread_executor.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/thread_pool_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executor/timer_set.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/executors.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/future.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/hash.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/immutable_struct.rb (94%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/ivar.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/map.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/maybe.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/mutable_struct.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/mvar.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/options.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/promise.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/promises.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/re_include.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/scheduled_task.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/set.rb (84%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/settable_struct.rb (95%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/abstract_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/abstract_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/abstract_struct.rb (95%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/condition.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/jruby_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/jruby_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/lock.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/mri_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/mutex_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/rbx_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/rbx_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/truffleruby_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/synchronization/volatile.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/synchronized_delegator.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/adder.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/cheap_lockable.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/data_structures.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/power_of_two_tuple.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/striped64.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/volatile.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/thread_safe/util/xor_shift_random.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/timer_task.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/tuple.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/tvar.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/utility/engine.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/utility/monotonic_time.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/utility/native_extension_loader.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/utility/native_integer.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.5/lib => concurrent-ruby-1.1.6/lib/concurrent-ruby}/concurrent/utility/processor_counter.rb (97%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/version.rb delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_setup.rb delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/hook.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/config/default.yml (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop-rspec.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/align_left_let_brace.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/align_right_let_brace.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/any_instance.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/around_block.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/be.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/be_eql.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/before_after_all.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/capybara/feature_methods.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/context_method.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/context_wording.rb (84%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/cop.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/describe_class.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/describe_method.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/describe_symbol.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/described_class.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/described_class_module_wrapping.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/dialect.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_example_group.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_line_after_example.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_line_after_example_group.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_line_after_final_let.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_line_after_hook.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/empty_line_after_subject.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/example_length.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/example_without_description.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/example_wording.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/expect_actual.rb (63%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/expect_change.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/expect_in_hook.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/expect_output.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/factory_bot/create_list.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/file_path.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/focus.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/hook_argument.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/hooks_before_examples.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/implicit_block_expectation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/implicit_expect.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/implicit_subject.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/instance_spy.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/instance_variable.rb (81%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/it_behaves_like.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/iterated_expectation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/leading_subject.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/leaky_constant_declaration.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/let_before_examples.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/let_setup.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/message_chain.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/message_expectation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/message_spies.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/missing_example_group_argument.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/multiple_describes.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/multiple_expectations.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/multiple_subjects.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/named_subject.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/nested_groups.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/not_to_not.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/overwriting_setup.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/pending.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/predicate_matcher.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/rails/http_status.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/receive_counts.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/receive_never.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/repeated_description.rb (74%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/repeated_example.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_body.rb create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_description.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/return_from_stub.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/scattered_let.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_setup.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/shared_context.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/shared_examples.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/single_argument_message_chain.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/subject_stub.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/unspecified_exception.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/verified_doubles.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/void_expect.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec/yield.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/cop/rspec_cops.rb (96%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/align_let_brace.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/blank_line_separation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/concept.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/config_formatter.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/description_extractor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/example.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/example_group.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/factory_bot.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/final_end_location.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/hook.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/inject.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/language.rb (93%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/language/node_pattern.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/node.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/top_level_describe.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/util.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/version.rb (86%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{rubocop-rspec-1.37.1 => rubocop-rspec-1.38.0}/lib/rubocop/rspec/wording.rb (100%) diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index d29d980497..3b77a93d6f 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -3,9 +3,9 @@ require 'rbconfig' ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' ruby_version = RbConfig::CONFIG["ruby_version"] path = File.expand_path('..', __FILE__) -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/concurrent-ruby-1.1.5/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/i18n-1.8.2/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.13.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.14.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/thread_safe-0.3.6/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tzinfo-1.2.6/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/zeitwerk-2.2.2/lib" @@ -19,7 +19,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/docile-1.3.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-html-0.10.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-0.16.1/lib" $:.unshift "#{path}/../../../../../../../../Library/Ruby/Gems/2.6.0/gems/sync-0.5.0/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tins-1.24.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tins-1.24.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/term-ansicolor-1.7.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/thor-1.0.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/coveralls-0.8.23/lib" @@ -45,7 +45,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/webrobots-0.1.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mechanize-2.7.6/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mustache-1.1.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parallel-1.19.1/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parallel_tests-2.30.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parallel_tests-2.31.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/parser-2.7.0.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/plist-3.5.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rainbow-3.0.0/lib" @@ -61,8 +61,8 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-its-1.3.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-retry-0.6.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-wait-0.0.9/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-progressbar-1.10.1/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unicode-display_width-1.6.0/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unicode-display_width-1.6.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-0.79.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-performance-1.5.2/lib" -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-1.37.1/lib" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rubocop-rspec-1.38.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ruby-macho-2.2.0/lib" diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/at_exit.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/at_exit.rb deleted file mode 100644 index 0e52ca379b..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/at_exit.rb +++ /dev/null @@ -1,97 +0,0 @@ -require 'logger' -require 'concurrent/synchronization' - -module Concurrent - - # Provides ability to add and remove handlers to be run at `Kernel#at_exit`, order is undefined. - # Each handler is executed at most once. - # - # @!visibility private - class AtExitImplementation < Synchronization::LockableObject - include Logger::Severity - - def initialize(*args) - super() - synchronize { ns_initialize(*args) } - end - - # Add a handler to be run at `Kernel#at_exit` - # @param [Object] handler_id optionally provide an id, if already present, handler is replaced - # @yield the handler - # @return id of the handler - def add(handler_id = nil, &handler) - id = handler_id || handler.object_id - synchronize { @handlers[id] = handler } - id - end - - # Delete a handler by handler_id - # @return [true, false] - def delete(handler_id) - !!synchronize { @handlers.delete handler_id } - end - - # Is handler with handler_id rpesent? - # @return [true, false] - def handler?(handler_id) - synchronize { @handlers.key? handler_id } - end - - # @return copy of the handlers - def handlers - synchronize { @handlers }.clone - end - - # install `Kernel#at_exit` callback to execute added handlers - def install - synchronize do - @installed ||= begin - at_exit { runner } - true - end - self - end - end - - # Will it run during `Kernel#at_exit` - def enabled? - synchronize { @enabled } - end - - # Configure if it runs during `Kernel#at_exit` - def enabled=(value) - synchronize { @enabled = value } - end - - # run the handlers manually - # @return ids of the handlers - def run - handlers, _ = synchronize { handlers, @handlers = @handlers, {} } - handlers.each do |_, handler| - begin - handler.call - rescue => error - Concurrent.global_logger.call(ERROR, error) - end - end - handlers.keys - end - - private - - def ns_initialize(enabled = true) - @handlers = {} - @enabled = enabled - end - - def runner - run if synchronize { @enabled } - end - end - - private_constant :AtExitImplementation - - # @see AtExitImplementation - # @!visibility private - AtExit = AtExitImplementation.new.install -end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/version.rb deleted file mode 100644 index 0f611c51ae..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module Concurrent - VERSION = '1.1.5' -end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent-ruby.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent-ruby.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent-ruby.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent-ruby.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/agent.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/agent.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/agent.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/agent.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/array.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/array.rb similarity index 84% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/array.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/array.rb index 18e58e5b2f..ffd1ca293e 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/array.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/array.rb @@ -10,11 +10,11 @@ module Concurrent # or writing at a time. This includes iteration methods like `#each`. # # @note `a += b` is **not** a **thread-safe** operation on - # `Concurrent::Array`. It reads array `a`, then it creates new `Concurrent::Array` - # which is concatenation of `a` and `b`, then it writes the concatenation to `a`. - # The read and write are independent operations they do not form a single atomic - # operation therefore when two `+=` operations are executed concurrently updates - # may be lost. Use `#concat` instead. + # `Concurrent::Array`. It reads array `a`, then it creates new `Concurrent::Array` + # which is concatenation of `a` and `b`, then it writes the concatenation to `a`. + # The read and write are independent operations they do not form a single atomic + # operation therefore when two `+=` operations are executed concurrently updates + # may be lost. Use `#concat` instead. # # @see http://ruby-doc.org/core-2.2.0/Array.html Ruby standard library `Array` diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/async.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/async.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/async.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/async.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atom.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atom.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atom.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atom.rb index abef1cb0d4..8a45730082 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atom.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atom.rb @@ -18,7 +18,7 @@ require 'concurrent/synchronization' # uncoordinated, *synchronous* change of individual values. Best used when # the value will undergo frequent reads but only occasional, though complex, # updates. Suitable when the result of an update must be known immediately. -# * *{Concurrent::AtomicReference}:* A simple object reference that can be +# * *{Concurrent::AtomicReference}:* A simple object reference that can be updated # atomically. Updates are synchronous but fast. Best used when updates a # simple set operations. Not suitable when updates are complex. # {Concurrent::AtomicBoolean} and {Concurrent::AtomicFixnum} are similar diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/abstract_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/abstract_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_boolean.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb similarity index 96% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_boolean.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb index 4da4419b48..0b0373dc29 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_boolean.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb @@ -41,13 +41,13 @@ module Concurrent # # Explicitly sets the value to true. # - # @return [Boolean] true is value has changed, otherwise false + # @return [Boolean] true if value has changed, otherwise false # @!macro atomic_boolean_method_make_false # # Explicitly sets the value to false. # - # @return [Boolean] true is value has changed, otherwise false + # @return [Boolean] true if value has changed, otherwise false ################################################################### diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_fixnum.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_fixnum.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_markable_reference.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_markable_reference.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_reference.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/atomic_reference.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb index 4c0158d755..d883aed6f2 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/count_down_latch.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb @@ -1,6 +1,6 @@ +require 'concurrent/utility/engine' require 'concurrent/atomic/mutex_count_down_latch' require 'concurrent/atomic/java_count_down_latch' -require 'concurrent/utility/engine' module Concurrent diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/cyclic_barrier.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/cyclic_barrier.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/event.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/event.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/java_count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/java_count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/java_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/java_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_atomic_boolean.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_atomic_boolean.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_atomic_fixnum.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_atomic_fixnum.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_semaphore.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/mutex_semaphore.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/read_write_lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/read_write_lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/reentrant_read_write_lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/reentrant_read_write_lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/ruby_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb similarity index 79% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/ruby_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb index 06afae7316..55bcca7c57 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/ruby_thread_local_var.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb @@ -32,12 +32,38 @@ module Concurrent FREE = [] LOCK = Mutex.new ARRAYS = {} # used as a hash set + # noinspection RubyClassVariableUsageInspection @@next = 0 - private_constant :FREE, :LOCK, :ARRAYS + QUEUE = Queue.new + THREAD = Thread.new do + while true + method, i = QUEUE.pop + case method + when :thread_local_finalizer + LOCK.synchronize do + FREE.push(i) + # The cost of GC'ing a TLV is linear in the number of threads using TLVs + # But that is natural! More threads means more storage is used per TLV + # So naturally more CPU time is required to free more storage + ARRAYS.each_value do |array| + array[i] = nil + end + end + when :thread_finalizer + LOCK.synchronize do + # The thread which used this thread-local array is now gone + # So don't hold onto a reference to the array (thus blocking GC) + ARRAYS.delete(i) + end + end + end + end + + private_constant :FREE, :LOCK, :ARRAYS, :QUEUE, :THREAD # @!macro thread_local_var_method_get def value - if array = get_threadlocal_array + if (array = get_threadlocal_array) value = array[@index] if value.nil? default @@ -57,10 +83,10 @@ module Concurrent # We could keep the thread-local arrays in a hash, keyed by Thread # But why? That would require locking # Using Ruby's built-in thread-local storage is faster - unless array = get_threadlocal_array(me) + unless (array = get_threadlocal_array(me)) array = set_threadlocal_array([], me) LOCK.synchronize { ARRAYS[array.object_id] = array } - ObjectSpace.define_finalizer(me, self.class.thread_finalizer(array)) + ObjectSpace.define_finalizer(me, self.class.thread_finalizer(array.object_id)) end array[@index] = (value.nil? ? NULL : value) value @@ -69,6 +95,7 @@ module Concurrent protected # @!visibility private + # noinspection RubyClassVariableUsageInspection def allocate_storage @index = LOCK.synchronize do FREE.pop || begin @@ -77,37 +104,19 @@ module Concurrent result end end - ObjectSpace.define_finalizer(self, self.class.threadlocal_finalizer(@index)) + ObjectSpace.define_finalizer(self, self.class.thread_local_finalizer(@index)) end # @!visibility private - def self.threadlocal_finalizer(index) - proc do - Thread.new do # avoid error: can't be called from trap context - LOCK.synchronize do - FREE.push(index) - # The cost of GC'ing a TLV is linear in the number of threads using TLVs - # But that is natural! More threads means more storage is used per TLV - # So naturally more CPU time is required to free more storage - ARRAYS.each_value do |array| - array[index] = nil - end - end - end - end + def self.thread_local_finalizer(index) + # avoid error: can't be called from trap context + proc { QUEUE.push [:thread_local_finalizer, index] } end # @!visibility private - def self.thread_finalizer(array) - proc do - Thread.new do # avoid error: can't be called from trap context - LOCK.synchronize do - # The thread which used this thread-local array is now gone - # So don't hold onto a reference to the array (thus blocking GC) - ARRAYS.delete(array.object_id) - end - end - end + def self.thread_finalizer(id) + # avoid error: can't be called from trap context + proc { QUEUE.push [:thread_finalizer, id] } end private @@ -136,21 +145,22 @@ module Concurrent # This exists only for use in testing # @!visibility private def value_for(thread) - if array = get_threadlocal_array(thread) + if (array = get_threadlocal_array(thread)) value = array[@index] if value.nil? - default_for(thread) + get_default elsif value.equal?(NULL) nil else value end else - default_for(thread) + get_default end end - def default_for(thread) + # @!visibility private + def get_default if @default_block raise "Cannot use default_for with default block" else diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/semaphore.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/semaphore.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/semaphore.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/semaphore.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb index 9f09e4cd0b..100cc8de8f 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/thread_local_var.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb @@ -1,6 +1,6 @@ +require 'concurrent/utility/engine' require 'concurrent/atomic/ruby_thread_local_var' require 'concurrent/atomic/java_thread_local_var' -require 'concurrent/utility/engine' module Concurrent diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic_reference/mutex_atomic.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic_reference/mutex_atomic.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic_reference/numeric_cas_wrapper.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomics.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomics.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/atomics.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/atomics.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/copy_on_notify_observer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/copy_on_notify_observer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/copy_on_write_observer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/copy_on_write_observer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/java_non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/java_non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/lock_free_stack.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/lock_free_stack.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/atomic_reference_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/atomic_reference_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/mri_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/mri_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/non_concurrent_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/non_concurrent_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/synchronized_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/map/synchronized_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb index 695ffdf2b2..694cd7ac7c 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/non_concurrent_priority_queue.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb @@ -1,6 +1,6 @@ +require 'concurrent/utility/engine' require 'concurrent/collection/java_non_concurrent_priority_queue' require 'concurrent/collection/ruby_non_concurrent_priority_queue' -require 'concurrent/utility/engine' module Concurrent module Collection diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/deprecation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/deprecation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/deprecation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/deprecation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/dereferenceable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb similarity index 96% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/dereferenceable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb index b0d1a2ef85..dc172ba74d 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/dereferenceable.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb @@ -37,8 +37,8 @@ module Concurrent # returning data to the caller (dereferencing). # # @note Most classes that include this module will call `#set_deref_options` - # from within the constructor, thus allowing these options to be set at - # object creation. + # from within the constructor, thus allowing these options to be set at + # object creation. # # @param [Hash] opts the options defining dereference behavior. # @option opts [String] :dup_on_deref (false) call `#dup` before returning the data diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/logging.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/logging.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/logging.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/logging.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/obligation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/obligation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/observable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/observable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/observable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concern/observable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar new file mode 100644 index 0000000000000000000000000000000000000000..78e00a0e0b68b28fe728daeb93de4763522794df GIT binary patch literal 137051 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

#cvEpi`Ih_qvq_eTjKM1 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

J+KdNcMZMtFvp`vjo5KmyqRX$IO0b>DyOg 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�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

    az5_32wv*0{xOlSmRDV+foc3+Auu7^tV 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 DpX!$h literal 0 HcmV?d00001 diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/configuration.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/configuration.rb similarity index 89% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/configuration.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/configuration.rb index c6774da618..a00dc84403 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/configuration.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/configuration.rb @@ -3,13 +3,14 @@ require 'concurrent/delay' require 'concurrent/errors' require 'concurrent/atomic/atomic_reference' require 'concurrent/concern/logging' +require 'concurrent/concern/deprecation' require 'concurrent/executor/immediate_executor' require 'concurrent/executor/cached_thread_pool' -require 'concurrent/utility/at_exit' require 'concurrent/utility/processor_counter' module Concurrent extend Concern::Logging + extend Concern::Deprecation autoload :Options, 'concurrent/options' autoload :TimerSet, 'concurrent/executor/timer_set' @@ -97,15 +98,15 @@ module Concurrent end # @!visibility private - GLOBAL_FAST_EXECUTOR = Delay.new { Concurrent.new_fast_executor(auto_terminate: true) } + GLOBAL_FAST_EXECUTOR = Delay.new { Concurrent.new_fast_executor } private_constant :GLOBAL_FAST_EXECUTOR # @!visibility private - GLOBAL_IO_EXECUTOR = Delay.new { Concurrent.new_io_executor(auto_terminate: true) } + GLOBAL_IO_EXECUTOR = Delay.new { Concurrent.new_io_executor } private_constant :GLOBAL_IO_EXECUTOR # @!visibility private - GLOBAL_TIMER_SET = Delay.new { TimerSet.new(auto_terminate: true) } + GLOBAL_TIMER_SET = Delay.new { TimerSet.new } private_constant :GLOBAL_TIMER_SET # @!visibility private @@ -115,7 +116,7 @@ module Concurrent # Disables AtExit handlers including pool auto-termination handlers. # When disabled it will be the application programmer's responsibility # to ensure that the handlers are shutdown properly prior to application - # exit by calling {AtExit.run} method. + # exit by calling `AtExit.run` method. # # @note this option should be needed only because of `at_exit` ordering # issues which may arise when running some of the testing frameworks. @@ -125,9 +126,10 @@ module Concurrent # @note This method should *never* be called # from within a gem. It should *only* be used from within the main # application and even then it should be used only when necessary. - # @see AtExit + # @deprecated Has no effect since it is no longer needed, see https://github.com/ruby-concurrency/concurrent-ruby/pull/841. + # def self.disable_at_exit_handlers! - AtExit.enabled = false + deprecated "Method #disable_at_exit_handlers! has no effect since it is no longer needed, see https://github.com/ruby-concurrency/concurrent-ruby/pull/841." end # Global thread pool optimized for short, fast *operations*. @@ -171,14 +173,16 @@ module Concurrent auto_terminate: opts.fetch(:auto_terminate, true), idletime: 60, # 1 minute max_queue: 0, # unlimited - fallback_policy: :abort # shouldn't matter -- 0 max queue + fallback_policy: :abort, # shouldn't matter -- 0 max queue + name: "fast" ) end def self.new_io_executor(opts = {}) CachedThreadPool.new( auto_terminate: opts.fetch(:auto_terminate, true), - fallback_policy: :abort # shouldn't matter -- 0 max queue + fallback_policy: :abort, # shouldn't matter -- 0 max queue + name: "io" ) end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/constants.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/constants.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/constants.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/constants.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/dataflow.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/dataflow.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/dataflow.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/dataflow.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/delay.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/delay.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/delay.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/delay.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/errors.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/errors.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/errors.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/errors.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/exchanger.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/exchanger.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/exchanger.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/exchanger.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/abstract_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb similarity index 82% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/abstract_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb index 80ff953adb..6d0b0474d1 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/abstract_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb @@ -1,7 +1,7 @@ require 'concurrent/errors' +require 'concurrent/concern/deprecation' require 'concurrent/executor/executor_service' require 'concurrent/synchronization' -require 'concurrent/utility/at_exit' module Concurrent @@ -9,6 +9,7 @@ module Concurrent # @!visibility private class AbstractExecutorService < Synchronization::LockableObject include ExecutorService + include Concern::Deprecation # The set of possible fallback policies that may be set at thread pool creation. FALLBACK_POLICIES = [:abort, :discard, :caller_runs].freeze @@ -16,10 +17,20 @@ module Concurrent # @!macro executor_service_attr_reader_fallback_policy attr_reader :fallback_policy + attr_reader :name + # Create a new thread pool. - def initialize(*args, &block) + def initialize(opts = {}, &block) super(&nil) - synchronize { ns_initialize(*args, &block) } + synchronize do + @auto_terminate = opts.fetch(:auto_terminate, true) + @name = opts.fetch(:name) if opts.key?(:name) + ns_initialize(opts, &block) + end + end + + def to_s + name ? "#{super[0..-2]} name: #{name}>" : super end # @!macro executor_service_method_shutdown @@ -54,12 +65,12 @@ module Concurrent # @!macro executor_service_method_auto_terminate_question def auto_terminate? - synchronize { ns_auto_terminate? } + synchronize { @auto_terminate } end # @!macro executor_service_method_auto_terminate_setter def auto_terminate=(value) - synchronize { self.ns_auto_terminate = value } + deprecated "Method #auto_terminate= has no effect. Set :auto_terminate option when executor is initialized." end private @@ -110,25 +121,8 @@ module Concurrent end def ns_auto_terminate? - !!@auto_terminate + @auto_terminate end - def ns_auto_terminate=(value) - case value - when true - AtExit.add(self) { terminate_at_exit } - @auto_terminate = true - when false - AtExit.delete(self) - @auto_terminate = false - else - raise ArgumentError - end - end - - def terminate_at_exit - kill # TODO be gentle first - wait_for_termination(10) - end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/cached_thread_pool.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb similarity index 91% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/cached_thread_pool.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb index 1c7c18da65..de50ed1791 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/cached_thread_pool.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb @@ -37,7 +37,7 @@ module Concurrent # # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newCachedThreadPool-- def initialize(opts = {}) - defaults = { idletime: DEFAULT_THREAD_IDLETIMEOUT } + defaults = { idletime: DEFAULT_THREAD_IDLETIMEOUT } overrides = { min_threads: 0, max_threads: DEFAULT_MAX_POOL_SIZE, max_queue: DEFAULT_MAX_QUEUE_SIZE } @@ -51,11 +51,11 @@ module Concurrent def ns_initialize(opts) super(opts) if Concurrent.on_jruby? - @max_queue = 0 - @executor = java.util.concurrent.Executors.newCachedThreadPool + @max_queue = 0 + @executor = java.util.concurrent.Executors.newCachedThreadPool( + DaemonThreadFactory.new(ns_auto_terminate?)) @executor.setRejectedExecutionHandler(FALLBACK_POLICY_CLASSES[@fallback_policy].new) @executor.setKeepAliveTime(opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT), java.util.concurrent.TimeUnit::SECONDS) - self.auto_terminate = opts.fetch(:auto_terminate, true) end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/executor_service.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/executor_service.rb index 0fcbeeeb20..7e344919e0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/executor_service.rb @@ -111,10 +111,10 @@ module Concurrent # @!macro executor_service_method_auto_terminate_setter # + # # Set the auto-terminate behavior for this executor. - # + # @deprecated Has no effect # @param [Boolean] value The new auto-terminate value to set for this executor. - # # @return [Boolean] `true` when auto-termination is enabled else `false`. ################################################################### diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/fixed_thread_pool.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb similarity index 90% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/fixed_thread_pool.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb index c9e03dade7..681fe21fbd 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/fixed_thread_pool.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb @@ -115,12 +115,13 @@ module Concurrent # Thread pools support several configuration options: # # * `idletime`: The number of seconds that a thread may be idle before being reclaimed. + # * `name`: The name of the executor (optional). Printed in the executor's `#to_s` output and + # a `-worker-` name is given to its threads if supported by used Ruby + # implementation. `` is uniq for each thread. # * `max_queue`: The maximum number of tasks that may be waiting in the work queue at # any one time. When the queue size reaches `max_queue` and no new threads can be created, # subsequent tasks will be rejected in accordance with the configured `fallback_policy`. - # * `auto_terminate`: When true (default) an `at_exit` handler will be registered which - # will stop the thread pool when the application exits. See below for more information - # on shutting down thread pools. + # * `auto_terminate`: When true (default), the threads started will be marked as daemon. # * `fallback_policy`: The policy defining how rejected tasks are handled. # # Three fallback policies are supported: @@ -145,16 +146,12 @@ module Concurrent # # On some runtime platforms (most notably the JVM) the application will not # exit until all thread pools have been shutdown. To prevent applications from - # "hanging" on exit all thread pools include an `at_exit` handler that will - # stop the thread pool when the application exits. This handler uses a brute - # force method to stop the pool and makes no guarantees regarding resources being - # used by any tasks still running. Registration of this `at_exit` handler can be - # prevented by setting the thread pool's constructor `:auto_terminate` option to - # `false` when the thread pool is created. All thread pools support this option. + # "hanging" on exit, all threads can be marked as daemon according to the + # `:auto_terminate` option. # # ```ruby - # pool1 = Concurrent::FixedThreadPool.new(5) # an `at_exit` handler will be registered - # pool2 = Concurrent::FixedThreadPool.new(5, auto_terminate: false) # prevent `at_exit` handler registration + # pool1 = Concurrent::FixedThreadPool.new(5) # threads will be marked as daemon + # pool2 = Concurrent::FixedThreadPool.new(5, auto_terminate: false) # mark threads as non-daemon # ``` # # @note Failure to properly shutdown a thread pool can lead to unpredictable results. @@ -163,7 +160,7 @@ module Concurrent # @see http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html Java Tutorials: Thread Pools # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html Java Executors class # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html Java ExecutorService interface - # @see http://ruby-doc.org//core-2.2.0/Kernel.html#method-i-at_exit Kernel#at_exit + # @see https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#setDaemon-boolean- diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/immediate_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/immediate_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/indirect_immediate_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/indirect_immediate_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb similarity index 83% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb index 113e0bce16..9c0f3100cf 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb @@ -18,10 +18,6 @@ if Concurrent.on_jruby? }.freeze private_constant :FALLBACK_POLICY_CLASSES - def initialize(*args, &block) - super - end - def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? return handle_fallback(*args, &task) unless running? @@ -42,7 +38,6 @@ if Concurrent.on_jruby? def shutdown synchronize do - self.ns_auto_terminate = false @executor.shutdown nil end @@ -50,7 +45,6 @@ if Concurrent.on_jruby? def kill synchronize do - self.ns_auto_terminate = false @executor.shutdownNow nil end @@ -87,5 +81,23 @@ if Concurrent.on_jruby? end private_constant :Job end + + class DaemonThreadFactory + # hide include from YARD + send :include, java.util.concurrent.ThreadFactory + + def initialize(daemonize = true) + @daemonize = daemonize + end + + def newThread(runnable) + thread = java.util.concurrent.Executors.defaultThreadFactory().newThread(runnable) + thread.setDaemon(@daemonize) + return thread + end + end + + private_constant :DaemonThreadFactory + end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb similarity index 91% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb index 1cf59b0659..7aa24f2d72 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_single_thread_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb @@ -17,12 +17,13 @@ if Concurrent.on_jruby? end private - + def ns_initialize(opts) - @executor = java.util.concurrent.Executors.newSingleThreadExecutor + @executor = java.util.concurrent.Executors.newSingleThreadExecutor( + DaemonThreadFactory.new(ns_auto_terminate?) + ) @fallback_policy = opts.fetch(:fallback_policy, :discard) raise ArgumentError.new("#{@fallback_policy} is not a valid fallback policy") unless FALLBACK_POLICY_CLASSES.keys.include?(@fallback_policy) - self.auto_terminate = opts.fetch(:auto_terminate, true) end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb index 6308e4f4d7..b8cb5f1d5e 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/java_thread_pool_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb @@ -114,10 +114,11 @@ if Concurrent.on_jruby? idletime, java.util.concurrent.TimeUnit::SECONDS, queue, + DaemonThreadFactory.new(ns_auto_terminate?), FALLBACK_POLICY_CLASSES[@fallback_policy].new) - self.auto_terminate = opts.fetch(:auto_terminate, true) end end + end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb similarity index 94% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb index 7b2ee73775..06658d3769 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb @@ -27,7 +27,6 @@ module Concurrent def shutdown synchronize do break unless running? - self.ns_auto_terminate = false stop_event.set ns_shutdown_execution end @@ -37,7 +36,6 @@ module Concurrent def kill synchronize do break if shutdown? - self.ns_auto_terminate = false stop_event.set ns_kill_execution stopped_event.set diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb similarity index 90% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb index 305a49e621..916337d4ba 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_single_thread_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb @@ -15,7 +15,6 @@ module Concurrent max_queue: 0, idletime: DEFAULT_THREAD_IDLETIMEOUT, fallback_policy: opts.fetch(:fallback_policy, :discard), - auto_terminate: opts.fetch(:auto_terminate, true) ) end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb index 92fbd315f8..0044fb40ad 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb @@ -122,8 +122,6 @@ module Concurrent raise ArgumentError.new("`min_threads` cannot be less than #{DEFAULT_MIN_POOL_SIZE}") if @min_length < DEFAULT_MIN_POOL_SIZE raise ArgumentError.new("`min_threads` cannot be more than `max_threads`") if min_length > max_length - self.auto_terminate = opts.fetch(:auto_terminate, true) - @pool = [] # all workers @ready = [] # used as a stash (most idle worker is at the start) @queue = [] # used as queue @@ -131,6 +129,7 @@ module Concurrent @scheduled_task_count = 0 @completed_task_count = 0 @largest_length = 0 + @workers_counter = 0 @ruby_pid = $$ # detects if Ruby has forked @gc_interval = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented @@ -224,7 +223,8 @@ module Concurrent def ns_add_busy_worker return if @pool.size >= @max_length - @pool << (worker = Worker.new(self)) + @workers_counter += 1 + @pool << (worker = Worker.new(self, @workers_counter)) @largest_length = @pool.length if @pool.length > @largest_length worker end @@ -284,6 +284,7 @@ module Concurrent @scheduled_task_count = 0 @completed_task_count = 0 @largest_length = 0 + @workers_counter = 0 @ruby_pid = $$ end end @@ -292,11 +293,15 @@ module Concurrent class Worker include Concern::Logging - def initialize(pool) + def initialize(pool, id) # instance variables accessed only under pool's lock so no need to sync here again @queue = Queue.new @pool = pool @thread = create_worker @queue, pool, pool.idletime + + if @thread.respond_to?(:name=) + @thread.name = [pool.name, 'worker', id].compact.join('-') + end end def <<(message) diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/safe_task_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serial_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serial_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serialized_execution.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serialized_execution.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serialized_execution_delegator.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/serialized_execution_delegator.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/simple_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/simple_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb index b278dbf5e9..b87fed5e02 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/simple_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb @@ -91,7 +91,7 @@ module Concurrent private - def ns_initialize + def ns_initialize(*args) @running = Concurrent::AtomicBoolean.new(true) @stopped = Concurrent::Event.new @count = Concurrent::AtomicFixnum.new(0) diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb index 797cb1899e..f1474ea9ff 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/single_thread_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb @@ -1,3 +1,4 @@ +require 'concurrent/utility/engine' require 'concurrent/executor/ruby_single_thread_executor' module Concurrent diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/timer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/timer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb index 364910152e..0dfaf1288c 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/timer_set.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb @@ -77,7 +77,6 @@ module Concurrent @timer_executor = SingleThreadExecutor.new @condition = Event.new @ruby_pid = $$ # detects if Ruby has forked - self.auto_terminate = opts.fetch(:auto_terminate, true) end # Post the task to the internal queue. diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executors.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executors.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executors.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/executors.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/future.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/future.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/future.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/future.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/hash.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/hash.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/hash.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/hash.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/immutable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/immutable_struct.rb similarity index 94% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/immutable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/immutable_struct.rb index 05b8035c02..ab64824be5 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/immutable_struct.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/immutable_struct.rb @@ -70,6 +70,14 @@ module Concurrent ns_select(&block) end + private + + # @!visibility private + def initialize_copy(original) + super(original) + ns_initialize_copy + end + # @!macro struct_new def self.new(*args, &block) clazz_name = nil diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/ivar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/ivar.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/ivar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/ivar.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/map.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/map.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/map.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/map.rb index 5b7144747d..3967cbf195 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/map.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/map.rb @@ -197,7 +197,7 @@ module Concurrent # Insert value into map with key if key is absent in one atomic step. # @param [Object] key # @param [Object] value - # @return [Object, nil] the value or nil when key was present + # @return [Object, nil] the previous value when key was present or nil when there was no key def put_if_absent(key, value) computed = false result = compute_if_absent(key) do diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/maybe.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/maybe.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/maybe.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/maybe.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/mutable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/mutable_struct.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/mutable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/mutable_struct.rb index 836b7f4585..c2ad43e500 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/mutable_struct.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/mutable_struct.rb @@ -196,6 +196,16 @@ module Concurrent raise NameError.new("no member '#{member}' in struct") end + private + + # @!visibility private + def initialize_copy(original) + synchronize do + super(original) + ns_initialize_copy + end + end + # @!macro struct_new def self.new(*args, &block) clazz_name = nil diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/mvar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/mvar.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/mvar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/mvar.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/options.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/options.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/options.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/options.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/promise.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/promise.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/promise.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/promises.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/promises.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/promises.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/promises.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/re_include.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/re_include.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/re_include.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/re_include.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/scheduled_task.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/scheduled_task.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/scheduled_task.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/scheduled_task.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/set.rb similarity index 84% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/set.rb index 04dc936037..602d494081 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/set.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/set.rb @@ -11,11 +11,11 @@ module Concurrent # or writing at a time. This includes iteration methods like `#each`. # # @note `a += b` is **not** a **thread-safe** operation on - # `Concurrent::Set`. It reads Set `a`, then it creates new `Concurrent::Set` - # which is union of `a` and `b`, then it writes the union to `a`. - # The read and write are independent operations they do not form a single atomic - # operation therefore when two `+=` operations are executed concurrently updates - # may be lost. Use `#merge` instead. + # `Concurrent::Set`. It reads Set `a`, then it creates new `Concurrent::Set` + # which is union of `a` and `b`, then it writes the union to `a`. + # The read and write are independent operations they do not form a single atomic + # operation therefore when two `+=` operations are executed concurrently updates + # may be lost. Use `#merge` instead. # # @see http://ruby-doc.org/stdlib-2.4.0/libdoc/set/rdoc/Set.html Ruby standard library `Set` diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/settable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/settable_struct.rb similarity index 95% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/settable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/settable_struct.rb index 9706cff2da..238f1e097b 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/settable_struct.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/settable_struct.rb @@ -91,6 +91,16 @@ module Concurrent raise NameError.new("no member '#{member}' in struct") end + private + + # @!visibility private + def initialize_copy(original) + synchronize do + super(original) + ns_initialize_copy + end + end + # @!macro struct_new def self.new(*args, &block) clazz_name = nil diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb similarity index 95% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb index d94f657552..1fe90c1649 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_struct.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb @@ -115,6 +115,17 @@ module Concurrent self.class.new(*self.to_h.merge(other, &block).values) end + # @!visibility private + def ns_initialize_copy + @values = @values.map do |val| + begin + val.clone + rescue TypeError + val + end + end + end + # @!visibility private def pr_underscore(clazz) word = clazz.to_s.dup # dup string to workaround JRuby 9.2.0.0 bug https://github.com/jruby/jruby/issues/5229 diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/condition.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/condition.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/condition.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/condition.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/jruby_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/jruby_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/jruby_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/jruby_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/lock.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/lock.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mri_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mri_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/rbx_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/rbx_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/rbx_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/rbx_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/truffleruby_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/truffleruby_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/volatile.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/volatile.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/volatile.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/synchronization/volatile.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/synchronized_delegator.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/synchronized_delegator.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/adder.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/adder.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/cheap_lockable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/cheap_lockable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/data_structures.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/data_structures.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/power_of_two_tuple.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/power_of_two_tuple.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/striped64.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/striped64.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/volatile.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/volatile.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/xor_shift_random.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/thread_safe/util/xor_shift_random.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/timer_task.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/timer_task.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/timer_task.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/timer_task.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/tuple.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/tuple.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/tuple.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/tuple.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/tvar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/tvar.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/tvar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/tvar.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/engine.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/engine.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/engine.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/engine.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/monotonic_time.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/monotonic_time.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/native_extension_loader.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/native_extension_loader.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/native_integer.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/native_integer.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/native_integer.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/native_integer.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/processor_counter.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/processor_counter.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/processor_counter.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/processor_counter.rb index 6d6ae8dea4..531ca0a3c9 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/utility/processor_counter.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/utility/processor_counter.rb @@ -1,3 +1,4 @@ +require 'etc' require 'rbconfig' require 'concurrent/delay' @@ -22,6 +23,8 @@ module Concurrent # occasionally poll this property." Subsequently the result will NOT be # memoized under JRuby. # + # Ruby's Etc.nprocessors will be used if available (MRI 2.2+). + # # On Windows the Win32 API will be queried for the # `NumberOfLogicalProcessors from Win32_Processor`. This will return the # total number "logical processors for the current instance of the @@ -76,6 +79,8 @@ module Concurrent def compute_processor_count if Concurrent.on_jruby? java.lang.Runtime.getRuntime.availableProcessors + elsif Etc.respond_to?(:nprocessors) && (nprocessor = Etc.nprocessors rescue nil) + nprocessor else os_name = RbConfig::CONFIG["target_os"] if os_name =~ /mingw|mswin/ diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/version.rb new file mode 100644 index 0000000000..2539b154dd --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.6/lib/concurrent-ruby/concurrent/version.rb @@ -0,0 +1,3 @@ +module Concurrent + VERSION = '1.1.6' +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_setup.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_setup.rb deleted file mode 100644 index 36e2974379..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_setup.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -module RuboCop - module Cop - module RSpec - # Checks for setup scattered across multiple hooks in an example group. - # - # Unify `before`, `after`, and `around` hooks when possible. - # - # @example - # # bad - # describe Foo do - # before { setup1 } - # before { setup2 } - # end - # - # # good - # describe Foo do - # before do - # setup1 - # setup2 - # end - # end - # - class ScatteredSetup < Cop - MSG = 'Do not define multiple hooks in the same example group.' - - def on_block(node) - return unless example_group?(node) - - analyzable_hooks(node).each do |repeated_hook| - add_offense(repeated_hook) - end - end - - def analyzable_hooks(node) - RuboCop::RSpec::ExampleGroup.new(node) - .hooks - .select { |hook| hook.knowable_scope? && hook.valid_scope? } - .group_by { |hook| [hook.name, hook.scope] } - .values - .reject(&:one?) - .flatten - .map(&:to_node) - end - end - end - end -end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/hook.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/hook.rb deleted file mode 100644 index a942b794da..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/hook.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -module RuboCop - module RSpec - # Wrapper for RSpec hook - class Hook < Concept - STANDARDIZED_SCOPES = %i[each context suite].freeze - private_constant(:STANDARDIZED_SCOPES) - - def name - node.method_name - end - - def knowable_scope? - return true unless scope_argument - - scope_argument.sym_type? - end - - def valid_scope? - STANDARDIZED_SCOPES.include?(scope) - end - - def example? - scope.equal?(:each) - end - - def scope - case scope_name - when nil, :each, :example then :each - when :context, :all then :context - when :suite then :suite - else - scope_name - end - end - - private - - def scope_name - scope_argument.to_a.first - end - - def scope_argument - node.send_node.first_argument - end - end - end -end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/config/default.yml b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/config/default.yml similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/config/default.yml rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/config/default.yml index 25f7cef4f4..739e3afd40 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/config/default.yml +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/config/default.yml @@ -394,6 +394,16 @@ RSpec/RepeatedExample: Description: Check for repeated examples within example groups. StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExample +RSpec/RepeatedExampleGroupBody: + Enabled: true + Description: Check for repeated describe and context block body. + StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupBody + +RSpec/RepeatedExampleGroupDescription: + Enabled: true + Description: Check for repeated example group descriptions. + StyleGuide: https://www.rubydoc.info/gems/rubocop-rspec/RuboCop/Cop/RSpec/RepeatedExampleGroupDescription + RSpec/ReturnFromStub: Enabled: true Description: Checks for consistent style of stub's return setting. diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop-rspec.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop-rspec.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop-rspec.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop-rspec.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/align_left_let_brace.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/align_left_let_brace.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/align_left_let_brace.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/align_left_let_brace.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/align_right_let_brace.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/align_right_let_brace.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/align_right_let_brace.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/align_right_let_brace.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/any_instance.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/any_instance.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/any_instance.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/any_instance.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/around_block.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/around_block.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/around_block.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/around_block.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/be.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/be.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/be.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/be.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/be_eql.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/be_eql.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/be_eql.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/be_eql.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/before_after_all.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/before_after_all.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/before_after_all.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/before_after_all.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/capybara/current_path_expectation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/capybara/feature_methods.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/capybara/feature_methods.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/capybara/feature_methods.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/capybara/feature_methods.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/context_method.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/context_method.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/context_method.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/context_method.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/context_wording.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/context_wording.rb similarity index 84% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/context_wording.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/context_wording.rb index 9b452f2612..285cf263a0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/context_wording.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/context_wording.rb @@ -5,7 +5,11 @@ module RuboCop module RSpec # Checks that `context` docstring starts with an allowed prefix. # - # @see https://github.com/reachlocal/rspec-style-guide#context-descriptions + # The default list of prefixes is minimal. Users are encouraged to tailor + # the configuration to meet project needs. Other acceptable prefixes may + # include `if`, `unless`, `for`, `before`, `after`, or `during`. + # + # @see https://rspec.rubystyle.guide/#context-descriptions # @see http://www.betterspecs.org/#contexts # # @example `Prefixes` configuration diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/cop.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/cop.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/cop.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/cop.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_class.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_class.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_class.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_class.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_method.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_method.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_method.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_method.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_symbol.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_symbol.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/describe_symbol.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/describe_symbol.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/described_class.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/described_class.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/described_class.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/described_class.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/described_class_module_wrapping.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/described_class_module_wrapping.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/described_class_module_wrapping.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/described_class_module_wrapping.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/dialect.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/dialect.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/dialect.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/dialect.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_example_group.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_example_group.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_example_group.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_example_group.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_example.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_example.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_example.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_example.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_example_group.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_example_group.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_example_group.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_example_group.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_final_let.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_final_let.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_final_let.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_final_let.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_hook.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_hook.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_hook.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_hook.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_subject.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_subject.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/empty_line_after_subject.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/empty_line_after_subject.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_length.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_length.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_length.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_length.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_without_description.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_without_description.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_without_description.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_without_description.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_wording.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_wording.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/example_wording.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/example_wording.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_actual.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_actual.rb similarity index 63% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_actual.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_actual.rb index c945499fd3..3bffe2179e 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_actual.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_actual.rb @@ -41,11 +41,31 @@ module RuboCop regexp ].freeze - def_node_matcher :expect_literal, '(send _ :expect $#literal?)' + SUPPORTED_MATCHERS = %i[eq eql equal be].freeze + + def_node_matcher :expect_literal, <<~PATTERN + (send + (send nil? :expect $#literal?) + #{Runners::ALL.node_pattern_union} + { + (send (send nil? $:be) :== $_) + (send nil? $_ $_ ...) + } + ) + PATTERN def on_send(node) expect_literal(node) do |argument| - add_offense(argument) + add_offense(node, location: argument.source_range) + end + end + + def autocorrect(node) + actual, matcher, expected = expect_literal(node) + lambda do |corrector| + return unless SUPPORTED_MATCHERS.include?(matcher) + + swap(corrector, actual, expected) end end @@ -65,6 +85,11 @@ module RuboCop COMPLEX_LITERALS.include?(node.type) && node.each_child_node.all?(&method(:literal?)) end + + def swap(corrector, actual, expected) + corrector.replace(actual.source_range, expected.source) + corrector.replace(expected.source_range, actual.source) + end end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_change.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_change.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_change.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_change.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_in_hook.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_in_hook.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_in_hook.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_in_hook.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_output.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_output.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/expect_output.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/expect_output.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/attribute_defined_statically.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/create_list.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/create_list.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/create_list.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/create_list.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/factory_bot/factory_class_name.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/file_path.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/file_path.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/file_path.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/file_path.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/focus.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/focus.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/focus.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/focus.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/hook_argument.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/hook_argument.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/hook_argument.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/hook_argument.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/hooks_before_examples.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/hooks_before_examples.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/hooks_before_examples.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/hooks_before_examples.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_block_expectation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_block_expectation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_block_expectation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_block_expectation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_expect.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_expect.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_expect.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_expect.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_subject.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_subject.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/implicit_subject.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/implicit_subject.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/instance_spy.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/instance_spy.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/instance_spy.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/instance_spy.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/instance_variable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/instance_variable.rb similarity index 81% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/instance_variable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/instance_variable.rb index a55d47896d..3dfec98597 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/instance_variable.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/instance_variable.rb @@ -58,6 +58,13 @@ module RuboCop (block (send (const nil? :Class) :new ...) ...) PATTERN + def_node_matcher :custom_matcher?, <<-PATTERN + (block { + (send nil? :matcher sym) + (send (const (const nil? :RSpec) :Matchers) :define sym) + } ...) + PATTERN + def_node_search :ivar_usage, '$(ivar $_)' def_node_search :ivar_assigned?, '(ivasgn % ...)' @@ -66,8 +73,8 @@ module RuboCop return unless spec_group?(node) ivar_usage(node) do |ivar, name| - return if inside_dynamic_class?(ivar) - return if assignment_only? && !ivar_assigned?(node, name) + next if valid_usage?(ivar) + next if assignment_only? && !ivar_assigned?(node, name) add_offense(ivar) end @@ -75,8 +82,10 @@ module RuboCop private - def inside_dynamic_class?(node) - node.each_ancestor(:block).any? { |block| dynamic_class?(block) } + def valid_usage?(node) + node.each_ancestor(:block).any? do |block| + dynamic_class?(block) || custom_matcher?(block) + end end def assignment_only? diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/invalid_predicate_matcher.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/it_behaves_like.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/it_behaves_like.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/it_behaves_like.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/it_behaves_like.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/iterated_expectation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/iterated_expectation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/iterated_expectation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/iterated_expectation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/leading_subject.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/leading_subject.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/leading_subject.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/leading_subject.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/leaky_constant_declaration.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/leaky_constant_declaration.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/leaky_constant_declaration.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/leaky_constant_declaration.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/let_before_examples.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/let_before_examples.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/let_before_examples.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/let_before_examples.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/let_setup.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/let_setup.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/let_setup.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/let_setup.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_chain.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_chain.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_chain.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_chain.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_expectation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_expectation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_expectation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_expectation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_spies.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_spies.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/message_spies.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/message_spies.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/missing_example_group_argument.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/missing_example_group_argument.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/missing_example_group_argument.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/missing_example_group_argument.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_describes.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_describes.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_describes.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_describes.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_expectations.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_expectations.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_expectations.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_expectations.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_subjects.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_subjects.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/multiple_subjects.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/multiple_subjects.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/named_subject.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/named_subject.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/named_subject.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/named_subject.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/nested_groups.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/nested_groups.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/nested_groups.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/nested_groups.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/not_to_not.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/not_to_not.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/not_to_not.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/not_to_not.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/overwriting_setup.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/overwriting_setup.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/overwriting_setup.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/overwriting_setup.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/pending.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/pending.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/pending.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/pending.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/predicate_matcher.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/predicate_matcher.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/predicate_matcher.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/predicate_matcher.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/rails/http_status.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/rails/http_status.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/rails/http_status.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/rails/http_status.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/receive_counts.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/receive_counts.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/receive_counts.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/receive_counts.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/receive_never.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/receive_never.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/receive_never.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/receive_never.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/repeated_description.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_description.rb similarity index 74% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/repeated_description.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_description.rb index 25051c5ba6..36b79973b1 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/repeated_description.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_description.rb @@ -29,6 +29,17 @@ module RuboCop # end # end # + # # good + # RSpec.describe User do + # it 'is valid' do + # # ... + # end + # + # it 'is valid', :flag do + # # ... + # end + # end + # class RepeatedDescription < Cop MSG = "Don't repeat descriptions within an example group." @@ -47,14 +58,18 @@ module RuboCop grouped_examples = RuboCop::RSpec::ExampleGroup.new(node) .examples - .group_by(&:doc_string) + .group_by { |example| example_signature(example) } grouped_examples - .select { |description, group| description && group.size > 1 } + .select { |signatures, group| signatures.any? && group.size > 1 } .values .flatten .map(&:definition) end + + def example_signature(example) + [example.metadata, example.doc_string] + end end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/repeated_example.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/repeated_example.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_body.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_body.rb new file mode 100644 index 0000000000..ab55a509fa --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_body.rb @@ -0,0 +1,87 @@ +# frozen_string_literal: true + +module RuboCop + module Cop + module RSpec + # Check for repeated describe and context block body. + # + # @example + # + # # bad + # describe 'cool feature x' do + # it { cool_predicate } + # end + # + # describe 'cool feature y' do + # it { cool_predicate } + # end + # + # # good + # describe 'cool feature' do + # it { cool_predicate } + # end + # + # describe 'another cool feature' do + # it { another_predicate } + # end + # + # # good + # context 'when case x', :tag do + # it { cool_predicate } + # end + # + # context 'when case y' do + # it { cool_predicate } + # end + # + class RepeatedExampleGroupBody < Cop + MSG = 'Repeated %s block body on line(s) %s' + + def_node_matcher :several_example_groups?, <<-PATTERN + (begin <#example_group_with_body? #example_group_with_body? ...>) + PATTERN + + def_node_matcher :metadata, '(block (send _ _ _ $...) ...)' + def_node_matcher :body, '(block _ args $...)' + + def_node_matcher :skip_or_pending?, <<-PATTERN + (block <(send nil? {:skip :pending}) ...>) + PATTERN + + def on_begin(node) + return unless several_example_groups?(node) + + repeated_group_bodies(node).each do |group, repeats| + add_offense(group, message: message(group, repeats)) + end + end + + private + + def repeated_group_bodies(node) + node + .children + .select { |child| example_group_with_body?(child) } + .reject { |child| skip_or_pending?(child) } + .group_by { |group| signature_keys(group) } + .values + .reject(&:one?) + .flat_map { |groups| add_repeated_lines(groups) } + end + + def add_repeated_lines(groups) + repeated_lines = groups.map(&:first_line) + groups.map { |group| [group, repeated_lines - [group.first_line]] } + end + + def signature_keys(group) + [metadata(group), body(group)] + end + + def message(group, repeats) + format(MSG, group: group.method_name, loc: repeats) + end + end + end + end +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_description.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_description.rb new file mode 100644 index 0000000000..17da2b5cf6 --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/repeated_example_group_description.rb @@ -0,0 +1,96 @@ +# frozen_string_literal: true + +module RuboCop + module Cop + module RSpec + # Check for repeated example group descriptions. + # + # @example + # + # # bad + # describe 'cool feature' do + # # example group + # end + # + # describe 'cool feature' do + # # example group + # end + # + # # bad + # context 'when case x' do + # # example group + # end + # + # describe 'when case x' do + # # example group + # end + # + # # good + # describe 'cool feature' do + # # example group + # end + # + # describe 'another cool feature' do + # # example group + # end + # + # # good + # context 'when case x' do + # # example group + # end + # + # context 'when another case' do + # # example group + # end + # + class RepeatedExampleGroupDescription < Cop + MSG = 'Repeated %s block description on line(s) %s' + + def_node_matcher :several_example_groups?, <<-PATTERN + (begin <#example_group? #example_group? ...>) + PATTERN + + def_node_matcher :doc_string_and_metadata, <<-PATTERN + (block (send _ _ $_ $...) ...) + PATTERN + + def_node_matcher :skip_or_pending?, <<-PATTERN + (block <(send nil? {:skip :pending}) ...>) + PATTERN + + def_node_matcher :empty_description?, '(block (send _ _) ...)' + + def on_begin(node) + return unless several_example_groups?(node) + + repeated_group_descriptions(node).each do |group, repeats| + add_offense(group, message: message(group, repeats)) + end + end + + private + + def repeated_group_descriptions(node) + node + .children + .select { |child| example_group?(child) } + .reject { |child| skip_or_pending?(child) } + .reject { |child| empty_description?(child) } + .group_by { |group| doc_string_and_metadata(group) } + .values + .reject(&:one?) + .flat_map { |groups| add_repeated_lines(groups) } + end + + def add_repeated_lines(groups) + repeated_lines = groups.map(&:first_line) + groups.map { |group| [group, repeated_lines - [group.first_line]] } + end + + def message(group, repeats) + format(MSG, group: group.method_name, loc: repeats) + end + end + end + end +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/return_from_stub.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/return_from_stub.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/return_from_stub.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/return_from_stub.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_let.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_let.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/scattered_let.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_let.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_setup.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_setup.rb new file mode 100644 index 0000000000..f54a0a482e --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/scattered_setup.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +module RuboCop + module Cop + module RSpec + # Checks for setup scattered across multiple hooks in an example group. + # + # Unify `before`, `after`, and `around` hooks when possible. + # + # @example + # # bad + # describe Foo do + # before { setup1 } + # before { setup2 } + # end + # + # # good + # describe Foo do + # before do + # setup1 + # setup2 + # end + # end + # + class ScatteredSetup < Cop + MSG = 'Do not define multiple `%s` hooks in the same '\ + 'example group (also defined on %s).' + + def on_block(node) + return unless example_group?(node) + + repeated_hooks(node).each do |occurrences| + lines = occurrences.map(&:first_line) + + occurrences.each do |occurrence| + lines_except_current = lines - [occurrence.first_line] + message = format(MSG, hook_name: occurrences.first.method_name, + lines: lines_msg(lines_except_current)) + add_offense(occurrence, message: message) + end + end + end + + def repeated_hooks(node) + hooks = RuboCop::RSpec::ExampleGroup.new(node) + .hooks + .select(&:knowable_scope?) + .group_by { |hook| [hook.name, hook.scope, hook.metadata] } + .values + .reject(&:one?) + + hooks.map do |hook| + hook.map(&:to_node) + end + end + + def lines_msg(numbers) + if numbers.size == 1 + "line #{numbers.first}" + else + "lines #{numbers.join(', ')}" + end + end + end + end + end +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/shared_context.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/shared_context.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/shared_context.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/shared_context.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/shared_examples.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/shared_examples.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/shared_examples.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/shared_examples.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/single_argument_message_chain.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/single_argument_message_chain.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/single_argument_message_chain.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/single_argument_message_chain.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/subject_stub.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/subject_stub.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/subject_stub.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/subject_stub.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/unspecified_exception.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/unspecified_exception.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/unspecified_exception.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/unspecified_exception.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/verified_doubles.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/verified_doubles.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/verified_doubles.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/verified_doubles.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/void_expect.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/void_expect.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/void_expect.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/void_expect.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/yield.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/yield.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec/yield.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec/yield.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec_cops.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec_cops.rb similarity index 96% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec_cops.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec_cops.rb index 309dfc6d89..5f2a1719b4 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/cop/rspec_cops.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/cop/rspec_cops.rb @@ -74,6 +74,8 @@ require_relative 'rspec/receive_counts' require_relative 'rspec/receive_never' require_relative 'rspec/repeated_description' require_relative 'rspec/repeated_example' +require_relative 'rspec/repeated_example_group_body' +require_relative 'rspec/repeated_example_group_description' require_relative 'rspec/return_from_stub' require_relative 'rspec/scattered_let' require_relative 'rspec/scattered_setup' diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/align_let_brace.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/align_let_brace.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/align_let_brace.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/align_let_brace.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/blank_line_separation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/blank_line_separation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/blank_line_separation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/blank_line_separation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/concept.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/concept.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/concept.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/concept.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/config_formatter.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/config_formatter.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/config_formatter.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/config_formatter.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/description_extractor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/description_extractor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/description_extractor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/description_extractor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/example.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/example.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/example.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/example.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/example_group.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/example_group.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/example_group.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/example_group.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/factory_bot.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/factory_bot.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/factory_bot.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/factory_bot.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/final_end_location.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/final_end_location.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/final_end_location.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/final_end_location.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/hook.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/hook.rb new file mode 100644 index 0000000000..5dc6d744e2 --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/hook.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +module RuboCop + module RSpec + # Wrapper for RSpec hook + class Hook < Concept + def_node_matcher :extract_metadata, <<~PATTERN + (block + { + (send _ _ #valid_scope? $...) + (send _ _ $...) + } + ... + ) + PATTERN + + def name + node.method_name + end + + def knowable_scope? + scope_argument.nil? || + scope_argument.sym_type? || + scope_argument.hash_type? + end + + def example? + scope.equal?(:each) + end + + def scope + return :each if scope_argument&.hash_type? + + case scope_name + when nil, :each, :example then :each + when :context, :all then :context + when :suite then :suite + end + end + + def metadata + (extract_metadata(node) || []) + .map { |meta| transform_metadata(meta) } + .flatten + .inject(&:merge) + end + + private + + def valid_scope?(node) + node&.sym_type? && Hooks::Scopes::ALL.include?(node.value) + end + + def transform_metadata(meta) + if meta.sym_type? + { meta => true } + else + # This check is to be able to compare those two hooks: + # + # before(:example, :special) { ... } + # before(:example, special: true) { ... } + # + # In the second case it's a node with a pair that has a value + # of a `true_type?`. + meta.pairs.map { |pair| { pair.key => transform_true(pair.value) } } + end + end + + def transform_true(node) + node.true_type? ? true : node + end + + def scope_name + scope_argument.to_a.first + end + + def scope_argument + node.send_node.first_argument + end + end + end +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/inject.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/inject.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/inject.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/inject.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/language.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/language.rb similarity index 93% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/language.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/language.rb index d67a3ea163..60e182a82c 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/language.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/language.rb @@ -94,6 +94,18 @@ module RuboCop append_after ] ) + + module Scopes + ALL = SelectorSet.new( + %i[ + each + example + context + all + suite + ] + ) + end end module Helpers diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/language/node_pattern.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/language/node_pattern.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/language/node_pattern.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/language/node_pattern.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/node.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/node.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/node.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/node.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/top_level_describe.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/top_level_describe.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/top_level_describe.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/top_level_describe.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/util.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/util.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/util.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/util.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/version.rb similarity index 86% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/version.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/version.rb index c1e18eb900..b1e95a6068 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/version.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/version.rb @@ -4,7 +4,7 @@ module RuboCop module RSpec # Version information for the RSpec RuboCop plugin. module Version - STRING = '1.37.1' + STRING = '1.38.0' end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/wording.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/wording.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.37.1/lib/rubocop/rspec/wording.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/rubocop-rspec-1.38.0/lib/rubocop/rspec/wording.rb From 1322d962b89e8b57bc61e04e8465b40c24e84a24 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 11 Feb 2020 12:46:49 +0000 Subject: [PATCH 4/4] rubocop_rspec: disable some new rules. --- Library/.rubocop_rspec.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Library/.rubocop_rspec.yml b/Library/.rubocop_rspec.yml index 4ae309f239..dfaccdacf6 100644 --- a/Library/.rubocop_rspec.yml +++ b/Library/.rubocop_rspec.yml @@ -26,6 +26,10 @@ RSpec/LeakyConstantDeclaration: Enabled: false RSpec/MessageSpies: Enabled: false +RSpec/RepeatedDescription: + Enabled: false +RSpec/RepeatedExampleGroupDescription: + Enabled: false # TODO: try to reduce these (also requires fixing Homebrew/bundle) RSpec/ExampleLength: