From b266e4b966827aece48b7b4f16da6c0233593ab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Aug 2026 21:45:47 +0000 Subject: [PATCH 1/4] Bump rubocop-shopify from 2.18.0 to 3.0.1 Bumps [rubocop-shopify](https://github.com/Shopify/ruby-style-guide) from 2.18.0 to 3.0.1. - [Release notes](https://github.com/Shopify/ruby-style-guide/releases) - [Commits](https://github.com/Shopify/ruby-style-guide/compare/v2.18.0...v3.0.1) --- updated-dependencies: - dependency-name: rubocop-shopify dependency-version: 3.0.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7a450edbc..96f4dbefe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -195,7 +195,7 @@ GEM prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json (2.21.1) + json (2.21.2) kramdown (2.5.2) rexml (>= 3.4.4) kredis (1.8.0) @@ -345,8 +345,9 @@ GEM lint_roller (~> 1.1) regexp_parser (>= 2.0) rubocop (~> 1.86, >= 1.86.2) - rubocop-shopify (2.18.0) - rubocop (~> 1.62) + rubocop-shopify (3.0.1) + lint_roller + rubocop (~> 1.72, >= 1.72.1) rubocop-sorbet (0.13.2) lint_roller rubocop (>= 1.75.2) @@ -534,7 +535,7 @@ CHECKSUMS identity_cache (1.6.4) sha256=3f043ff06577765ef532656b1af1058f9a983edcf525ba4f5fa79f0bd6324f26 io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 - json (2.21.1) sha256=13a43df75d95641443f5702dff350f237164a9d811ff0f2c2800d4d980220583 + json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a json_api_client (1.23.0) kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa kredis (1.8.0) sha256=34b72a0bc242d7aaea98e82b6a5a8c293a27e1b26f2c729a8d4e1e1409886150 @@ -594,7 +595,7 @@ CHECKSUMS rubocop (1.88.2) sha256=8def251c90cd955feb4daa3edc0ab56893250c4ce90ef81e6c80c03f9a939bbf rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db rubocop-rspec (3.10.2) sha256=0b3e2ecc592cd10ecbf0095bb58d1e357905276e069643523cc19eb7495f65e2 - rubocop-shopify (2.18.0) sha256=dafa25e5617ce4600ff86b1de3d5b78e43ab3d58cc5729df38e492b8e10294eb + rubocop-shopify (3.0.1) sha256=4adffa6313294bd9da2b0896ae44c5eb8e419336b2413de20c38b7691a7e6774 rubocop-sorbet (0.13.2) sha256=7901e57b6b8e9e9b970d941dbdbb89f2c9de0183bfd2551460468f8aa9548655 ruby-lsp (0.26.10) sha256=e67284af94423531f6b9a583350596421b5a6a4dd93083f1c2ba03da7c23bbed ruby-lsp-rails (0.4.8) sha256=f09d1f926d4063deeb2f3049311925c20dfe6c912371e3bcd04a265a865c44ae From cfeddb0d9a7b4a3292570075e85f0cfa50550d10 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Tue, 4 Aug 2026 11:06:32 +0900 Subject: [PATCH 2/4] Autocorrect for rubocop-shopify 3 --- lib/ruby_lsp/tapioca/run_gem_rbi_check.rb | 2 +- lib/tapioca.rb | 20 +++++++++---------- lib/tapioca/dsl/compilers.rb | 2 +- lib/tapioca/dsl/compilers/active_job.rb | 2 +- .../dsl/compilers/active_model_attributes.rb | 2 +- .../dsl/compilers/active_record_relations.rb | 4 ++-- lib/tapioca/dsl/compilers/config.rb | 2 +- .../dsl/compilers/json_api_client_resource.rb | 2 +- lib/tapioca/dsl/compilers/sidekiq_worker.rb | 2 +- lib/tapioca/dsl/compilers/url_helpers.rb | 2 +- .../dsl/helpers/graphql_type_helper.rb | 2 +- lib/tapioca/gem/events.rb | 2 +- lib/tapioca/gem/listeners/documentation.rb | 4 ++-- lib/tapioca/gem/listeners/sorbet_enums.rb | 2 +- lib/tapioca/gem/pipeline.rb | 6 +++--- lib/tapioca/helpers/env_helper.rb | 2 +- lib/tapioca/helpers/rbi_files_helper.rb | 2 +- lib/tapioca/runtime/dynamic_mixin_compiler.rb | 3 +-- spec/spec_helper.rb | 1 - spec/tapioca/gemfile_spec.rb | 2 +- 20 files changed, 32 insertions(+), 34 deletions(-) diff --git a/lib/ruby_lsp/tapioca/run_gem_rbi_check.rb b/lib/ruby_lsp/tapioca/run_gem_rbi_check.rb index fbb14d5cb..293000bd4 100644 --- a/lib/ruby_lsp/tapioca/run_gem_rbi_check.rb +++ b/lib/ruby_lsp/tapioca/run_gem_rbi_check.rb @@ -116,7 +116,7 @@ def cleanup_orphaned_rbis #: (*untyped flags) -> Array[String] def git_ls_gem_rbis(*flags) - self #: as untyped # rubocop:disable Style/RedundantSelf + self #: as untyped .execute_in_project_path("git", "ls-files", *flags, "sorbet/rbi/gems/") .lines .map(&:strip) diff --git a/lib/tapioca.rb b/lib/tapioca.rb index 5eafd9ce6..b15f4d66f 100644 --- a/lib/tapioca.rb +++ b/lib/tapioca.rb @@ -11,18 +11,18 @@ class Error < StandardError; end LIB_ROOT_DIR = T.must(__dir__) #: String SORBET_DIR = "sorbet" #: String - SORBET_CONFIG_FILE = "#{SORBET_DIR}/config" #: String - TAPIOCA_DIR = "#{SORBET_DIR}/tapioca" #: String - TAPIOCA_CONFIG_FILE = "#{TAPIOCA_DIR}/config.yml" #: String + SORBET_CONFIG_FILE = "#{SORBET_DIR}/config".freeze #: String + TAPIOCA_DIR = "#{SORBET_DIR}/tapioca".freeze #: String + TAPIOCA_CONFIG_FILE = "#{TAPIOCA_DIR}/config.yml".freeze #: String BINARY_FILE = "bin/tapioca" #: String - DEFAULT_POSTREQUIRE_FILE = "#{TAPIOCA_DIR}/require.rb" #: String - DEFAULT_RBI_DIR = "#{SORBET_DIR}/rbi" #: String - DEFAULT_DSL_DIR = "#{DEFAULT_RBI_DIR}/dsl" #: String - DEFAULT_GEM_DIR = "#{DEFAULT_RBI_DIR}/gems" #: String - DEFAULT_SHIM_DIR = "#{DEFAULT_RBI_DIR}/shims" #: String - DEFAULT_TODO_FILE = "#{DEFAULT_RBI_DIR}/todo.rbi" #: String - DEFAULT_ANNOTATIONS_DIR = "#{DEFAULT_RBI_DIR}/annotations" #: String + DEFAULT_POSTREQUIRE_FILE = "#{TAPIOCA_DIR}/require.rb".freeze #: String + DEFAULT_RBI_DIR = "#{SORBET_DIR}/rbi".freeze #: String + DEFAULT_DSL_DIR = "#{DEFAULT_RBI_DIR}/dsl".freeze #: String + DEFAULT_GEM_DIR = "#{DEFAULT_RBI_DIR}/gems".freeze #: String + DEFAULT_SHIM_DIR = "#{DEFAULT_RBI_DIR}/shims".freeze #: String + DEFAULT_TODO_FILE = "#{DEFAULT_RBI_DIR}/todo.rbi".freeze #: String + DEFAULT_ANNOTATIONS_DIR = "#{DEFAULT_RBI_DIR}/annotations".freeze #: String DEFAULT_OVERRIDES = { # ActiveSupport overrides some core methods with different signatures diff --git a/lib/tapioca/dsl/compilers.rb b/lib/tapioca/dsl/compilers.rb index 9ceeee296..61297cc88 100644 --- a/lib/tapioca/dsl/compilers.rb +++ b/lib/tapioca/dsl/compilers.rb @@ -13,7 +13,7 @@ module Compilers NAMESPACES = [ "#{name}::", # compilers in this namespace "::", # compilers that need to be fully namespaced - ] #: Array[String] + ].freeze #: Array[String] end end end diff --git a/lib/tapioca/dsl/compilers/active_job.rb b/lib/tapioca/dsl/compilers/active_job.rb index 0fb1db708..6698f1f21 100644 --- a/lib/tapioca/dsl/compilers/active_job.rb +++ b/lib/tapioca/dsl/compilers/active_job.rb @@ -43,7 +43,7 @@ class ActiveJob < Compiler # @override #: -> void def decorate - return unless constant.instance_methods(false).include?(:perform) + return unless constant.method_defined?(:perform, false) root.create_path(constant) do |job| method = constant.instance_method(:perform) diff --git a/lib/tapioca/dsl/compilers/active_model_attributes.rb b/lib/tapioca/dsl/compilers/active_model_attributes.rb index b4fdf7548..da622f91e 100644 --- a/lib/tapioca/dsl/compilers/active_model_attributes.rb +++ b/lib/tapioca/dsl/compilers/active_model_attributes.rb @@ -67,7 +67,7 @@ def gather_constants private - HANDLED_METHOD_TARGETS = ["attribute", "attribute="] #: Array[String] + HANDLED_METHOD_TARGETS = ["attribute", "attribute="].freeze #: Array[String] #: -> Array[[::String, ::String]] def attribute_methods_for_constant diff --git a/lib/tapioca/dsl/compilers/active_record_relations.rb b/lib/tapioca/dsl/compilers/active_record_relations.rb index eca1d0a65..1dea3adb7 100644 --- a/lib/tapioca/dsl/compilers/active_record_relations.rb +++ b/lib/tapioca/dsl/compilers/active_record_relations.rb @@ -224,10 +224,10 @@ def gather_constants order: ["T.any(Symbol, T::Array[Symbol])", ":asc"], cursor: ["T.untyped", "primary_key"], use_ranges: ["T.untyped", "nil"], - } #: Hash[Symbol, [String, String]] + }.freeze #: Hash[Symbol, [String, String]] CALCULATION_METHODS = ActiveRecord::Calculations.instance_methods(false) #: Array[Symbol] RELATION_METHODS = ActiveRecord::Relation.instance_methods(false) #: Array[Symbol] - TO_ARRAY_METHODS = [:to_ary, :to_a] #: Array[Symbol] + TO_ARRAY_METHODS = [:to_ary, :to_a].freeze #: Array[Symbol] private diff --git a/lib/tapioca/dsl/compilers/config.rb b/lib/tapioca/dsl/compilers/config.rb index 752086ec9..89536c105 100644 --- a/lib/tapioca/dsl/compilers/config.rb +++ b/lib/tapioca/dsl/compilers/config.rb @@ -1,7 +1,7 @@ # typed: strict # frozen_string_literal: true -return unless defined?(Config) && defined?(Config::VERSION) && defined?(Config.const_name) +return unless defined?(Config::VERSION) && defined?(Config.const_name) module Tapioca module Dsl diff --git a/lib/tapioca/dsl/compilers/json_api_client_resource.rb b/lib/tapioca/dsl/compilers/json_api_client_resource.rb index 41796be90..6331c2566 100644 --- a/lib/tapioca/dsl/compilers/json_api_client_resource.rb +++ b/lib/tapioca/dsl/compilers/json_api_client_resource.rb @@ -120,7 +120,7 @@ def resource_schema schema = constant.schema # empty? does not exist on JsonApiClient::Schema - schema if schema.size > 0 # rubocop:disable Style/ZeroLengthPredicate + schema if schema.size > 0 end #: (RBI::Scope mod, ::JsonApiClient::Schema::Property property) -> void diff --git a/lib/tapioca/dsl/compilers/sidekiq_worker.rb b/lib/tapioca/dsl/compilers/sidekiq_worker.rb index f2e41c2d8..3ca9325b6 100644 --- a/lib/tapioca/dsl/compilers/sidekiq_worker.rb +++ b/lib/tapioca/dsl/compilers/sidekiq_worker.rb @@ -46,7 +46,7 @@ class SidekiqWorker < Compiler # @override #: -> void def decorate - return unless constant.instance_methods.include?(:perform) + return unless constant.method_defined?(:perform) root.create_path(constant) do |worker| method_def = constant.instance_method(:perform) diff --git a/lib/tapioca/dsl/compilers/url_helpers.rb b/lib/tapioca/dsl/compilers/url_helpers.rb index 84943e562..f5c91d906 100644 --- a/lib/tapioca/dsl/compilers/url_helpers.rb +++ b/lib/tapioca/dsl/compilers/url_helpers.rb @@ -114,7 +114,7 @@ def gather_constants next unless name_of(mod) # Fast-path to quickly disqualify most cases - next false unless url_helpers_module > mod || # rubocop:disable Style/InvertibleUnlessCondition + next false unless url_helpers_module > mod || path_helpers_module > mod || url_helpers_module > mod.singleton_class || path_helpers_module > mod.singleton_class diff --git a/lib/tapioca/dsl/helpers/graphql_type_helper.rb b/lib/tapioca/dsl/helpers/graphql_type_helper.rb index 63ea2304a..5b901b001 100644 --- a/lib/tapioca/dsl/helpers/graphql_type_helper.rb +++ b/lib/tapioca/dsl/helpers/graphql_type_helper.rb @@ -119,7 +119,7 @@ def type_for(type, ignore_nilable_wrapper: false, prepare_method: nil) #: (Module[top] constant) -> String def type_for_constant(constant) - if constant.instance_methods.include?(:prepare) + if constant.method_defined?(:prepare) prepare_method = constant.instance_method(:prepare) prepare_signature = Runtime::Reflection.signature_of(prepare_method) diff --git a/lib/tapioca/gem/events.rb b/lib/tapioca/gem/events.rb index 030ad638a..a3ff4520c 100644 --- a/lib/tapioca/gem/events.rb +++ b/lib/tapioca/gem/events.rb @@ -109,7 +109,7 @@ class MethodNodeAdded < NodeAdded #| untyped signature, #| Array[[Symbol, String]] parameters #| ) -> void - def initialize(symbol, constant, method, node, signature, parameters) # rubocop:disable Metrics/ParameterLists + def initialize(symbol, constant, method, node, signature, parameters) super(symbol, constant) @node = node @method = method diff --git a/lib/tapioca/gem/listeners/documentation.rb b/lib/tapioca/gem/listeners/documentation.rb index e1d49e5ce..0527189ff 100644 --- a/lib/tapioca/gem/listeners/documentation.rb +++ b/lib/tapioca/gem/listeners/documentation.rb @@ -15,7 +15,7 @@ class Documentation < Base "shareable_constant_value:", "rubocop:", "@requires_ancestor:", - ] #: Array[String] + ].freeze #: Array[String] #: (Pipeline pipeline, Rubydex::Graph gem_graph) -> void def initialize(pipeline, gem_graph) @@ -75,7 +75,7 @@ def documentation_comments(name, sigs: []) lines = comments .map { |comment| comment.string.gsub(/^#+ ?/, "") } - .reject { |line| IGNORED_COMMENTS.any? { |comment| line.include?(comment) } || rbs_comment?(line) } # rubocop:disable Style/ArrayIntersect + .reject { |line| IGNORED_COMMENTS.any? { |comment| line.include?(comment) } || rbs_comment?(line) } # Strip leading and trailing blank lines, matching YARD's behavior lines = lines.reverse_each.drop_while(&:empty?).reverse_each.drop_while(&:empty?) diff --git a/lib/tapioca/gem/listeners/sorbet_enums.rb b/lib/tapioca/gem/listeners/sorbet_enums.rb index bd3b60218..2687119ce 100644 --- a/lib/tapioca/gem/listeners/sorbet_enums.rb +++ b/lib/tapioca/gem/listeners/sorbet_enums.rb @@ -11,7 +11,7 @@ class SorbetEnums < Base #: (ScopeNodeAdded event) -> void def on_scope(event) constant = event.constant - return unless T::Enum > event.constant # rubocop:disable Style/InvertibleUnlessCondition + return unless T::Enum > event.constant enum_block = RBI::TEnumBlock.new diff --git a/lib/tapioca/gem/pipeline.rb b/lib/tapioca/gem/pipeline.rb index ccf22fe5c..ebb35faee 100644 --- a/lib/tapioca/gem/pipeline.rb +++ b/lib/tapioca/gem/pipeline.rb @@ -7,7 +7,7 @@ class Pipeline include Runtime::Reflection include RBIHelper - IGNORED_SYMBOLS = ["YAML", "MiniTest", "Mutex"] #: Array[String] + IGNORED_SYMBOLS = ["YAML", "MiniTest", "Mutex"].freeze #: Array[String] #: Gemfile::GemSpec attr_reader :gem @@ -100,7 +100,7 @@ def push_foreign_scope(symbol, constant, node) #| untyped signature, #| Array[[Symbol, String]] parameters #| ) -> void - def push_method(symbol, constant, method, node, signature, parameters) # rubocop:disable Metrics/ParameterLists + def push_method(symbol, constant, method, node, signature, parameters) @events << Gem::MethodNodeAdded.new(symbol, constant, method, node, signature, parameters) end @@ -356,7 +356,7 @@ def compile_scope(name, constant) #: (Class[top] constant) -> String? def compile_superclass(constant) - superclass = nil #: Class[top]? # rubocop:disable Lint/UselessAssignment + superclass = nil #: Class[top]? while (superclass = superclass_of(constant)) constant_name = name_of(constant) diff --git a/lib/tapioca/helpers/env_helper.rb b/lib/tapioca/helpers/env_helper.rb index 9bb45023a..fdbb1dc13 100644 --- a/lib/tapioca/helpers/env_helper.rb +++ b/lib/tapioca/helpers/env_helper.rb @@ -5,7 +5,7 @@ module Tapioca # @requires_ancestor: Thor module EnvHelper #: (Hash[Symbol, untyped] options) -> void - def set_environment(options) # rubocop:disable Naming/AccessorMethodName + def set_environment(options) ENV["RAILS_ENV"] = ENV["RACK_ENV"] = options[:environment] ENV["RUBY_DEBUG_LAZY"] = "1" end diff --git a/lib/tapioca/helpers/rbi_files_helper.rb b/lib/tapioca/helpers/rbi_files_helper.rb index 2f06eaa72..fabe82cb2 100644 --- a/lib/tapioca/helpers/rbi_files_helper.rb +++ b/lib/tapioca/helpers/rbi_files_helper.rb @@ -237,7 +237,7 @@ def has_duplicated_methods_and_attrs?(nodes, shims_or_todos) # We compare the shim or todo prop with all the other props of the same name other_nodes.each do |node| # Another prop has the same sig, we have a duplicate - return true if shim_or_todo_prop.sigs.any? { |sig| node.sigs.include?(sig) } # rubocop:disable Style/ArrayIntersect + return true if shim_or_todo_prop.sigs.any? { |sig| node.sigs.include?(sig) } end end end diff --git a/lib/tapioca/runtime/dynamic_mixin_compiler.rb b/lib/tapioca/runtime/dynamic_mixin_compiler.rb index 2ae83ad3c..7da6d299d 100644 --- a/lib/tapioca/runtime/dynamic_mixin_compiler.rb +++ b/lib/tapioca/runtime/dynamic_mixin_compiler.rb @@ -53,7 +53,7 @@ def initialize(constant) mixins_from_modules[mod] = (after - before).reverse! end end - rescue Exception # rubocop:disable Lint/RescueException + rescue Exception # this is a best effort, bail if we can't perform this end @@ -85,7 +85,6 @@ def initialize(constant) super(*attrs, **kwargs) if defined?(super) end - # rubocop:disable Style/MissingRespondToMissing T::Sig::WithoutRuntime.sig { params(symbol: Symbol, args: T.untyped).returns(T.untyped) } def method_missing(symbol, *args) # We need this here so that we can handle any random instance diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6efeaf7ee..00dec1d54 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -16,7 +16,6 @@ require "spec_with_project" require "rails_spec_helper" -require "minitest/reporters" require "spec_reporter" backtrace_filter = Minitest::ExtensibleBacktraceFilter.default_filter diff --git a/spec/tapioca/gemfile_spec.rb b/spec/tapioca/gemfile_spec.rb index 11efd6939..b76f881b0 100644 --- a/spec/tapioca/gemfile_spec.rb +++ b/spec/tapioca/gemfile_spec.rb @@ -151,7 +151,7 @@ class MockGemSpecification < ::Gem::Specification class << self; end #: (String rel_path) -> void - def initialize(rel_path) # rubocop:disable Lint/MissingSuper + def initialize(rel_path) @rel_path = rel_path end From 97d6fc1318408a4dcf4d83c1e8c4e8f7afdd9133 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Tue, 4 Aug 2026 11:10:52 +0900 Subject: [PATCH 3/4] Allow RBS inline annotations for self assignments --- .rubocop.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.rubocop.yml b/.rubocop.yml index 08708c564..ac3c164c6 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -23,6 +23,9 @@ Layout/LineLength: Max: 120 AllowedPatterns: ['\A\s*#:'] +Lint/SelfAssignment: + AllowRBSInlineAnnotation: true + Naming/InclusiveLanguage: Exclude: - "lib/tapioca/dsl/compilers/protobuf.rb" From 4c35103e9d3873e0c7de60867f4c7842b9121420 Mon Sep 17 00:00:00 2001 From: Soutaro Matsumoto Date: Tue, 4 Aug 2026 11:24:14 +0900 Subject: [PATCH 4/4] Regenerate gem RBIs --- .../gems/{json@2.21.1.rbi => json@2.21.2.rbi} | 15 ++- sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi | 9 -- sorbet/rbi/gems/rubocop-shopify@3.0.1.rbi | 120 ++++++++++++++++++ 3 files changed, 133 insertions(+), 11 deletions(-) rename sorbet/rbi/gems/{json@2.21.1.rbi => json@2.21.2.rbi} (99%) delete mode 100644 sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi create mode 100644 sorbet/rbi/gems/rubocop-shopify@3.0.1.rbi diff --git a/sorbet/rbi/gems/json@2.21.1.rbi b/sorbet/rbi/gems/json@2.21.2.rbi similarity index 99% rename from sorbet/rbi/gems/json@2.21.1.rbi rename to sorbet/rbi/gems/json@2.21.2.rbi index 1eadf46f9..85e9c19e9 100644 --- a/sorbet/rbi/gems/json@2.21.1.rbi +++ b/sorbet/rbi/gems/json@2.21.2.rbi @@ -124,9 +124,11 @@ # ====== Input Options # # Option +max_nesting+ (\Integer) specifies the maximum nesting depth allowed; -# defaults to +100+; specify +false+ to disable depth checking. +# defaults to +100+; +# You can set it to +false+ to disable depth checking entirely, but that is dangerous +# when parsing untrusted input. # -# With the default, +false+: +# With the default, +100+: # source = '[0, [1, [2, [3]]]]' # ruby = JSON.parse(source) # ruby # => [0, [1, [2, [3]]]] @@ -387,6 +389,15 @@ # # Raises JSON::NestingError (nesting of 2 is too deep): # JSON.generate(obj, max_nesting: 2) # +# With +false+: +# obj = [] +# obj[0] = obj +# # Raises SystemStackError: stack level too deep +# JSON.generate(obj, max_nesting: false) +# +# Setting +max_nesting+ to +false+ can lead to a stackoverflow and may leave the program +# in an unrecoverable state. It is discouraged. +# # ====== Escaping Options # # Options +script_safe+ (boolean) specifies wether '\u2028', '\u2029' diff --git a/sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi b/sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi deleted file mode 100644 index 85953819d..000000000 --- a/sorbet/rbi/gems/rubocop-shopify@2.18.0.rbi +++ /dev/null @@ -1,9 +0,0 @@ -# typed: true - -# DO NOT EDIT MANUALLY -# This is an autogenerated file for types exported from the `rubocop-shopify` gem. -# Please instead update this file by running `bin/tapioca gem rubocop-shopify`. - - -# THIS IS AN EMPTY RBI FILE. -# see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem diff --git a/sorbet/rbi/gems/rubocop-shopify@3.0.1.rbi b/sorbet/rbi/gems/rubocop-shopify@3.0.1.rbi new file mode 100644 index 000000000..f742e7aee --- /dev/null +++ b/sorbet/rbi/gems/rubocop-shopify@3.0.1.rbi @@ -0,0 +1,120 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `rubocop-shopify` gem. +# Please instead update this file by running `bin/tapioca gem rubocop-shopify`. + + +# pkg:gem/rubocop-shopify#lib/rubocop/shopify/version.rb:3 +module RuboCop; end + +# pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:6 +module RuboCop::Cop; end + +# pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:7 +module RuboCop::Cop::Lint; end + +# Checks for the use of a `return` with a value in `begin..end` blocks +# in the context of instance variable assignment such as memoization. +# Using `return` with a value in these blocks can lead to unexpected behavior +# as the `return` will exit the method that contains and not set the values +# of the instance variable. +# +# @example +# +# # bad +# def foo +# @foo ||= begin +# return 1 if bar +# 2 +# end +# end +# +# # bad +# def foo +# @foo = begin +# return 1 if bar +# 2 +# end +# end +# +# # bad +# def foo +# @foo += begin +# return 1 if bar +# 2 +# end +# end +# +# # bad - using return in rescue blocks still exits the method +# def foo +# @foo ||= begin +# bar +# rescue +# return 2 if baz +# end +# end +# +# # good +# def foo +# @foo ||= begin +# if bar +# 1 +# else +# 2 +# end +# end +# end +# +# # good - not an assignment to an instance variable +# def foo +# foo = begin +# return 1 if bar +# 2 +# end +# end +# +# # good - proper exception handling without return +# def foo +# @foo ||= begin +# bar +# rescue +# baz ? 2 : 3 +# end +# end +# +# pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:76 +class RuboCop::Cop::Lint::NoReturnInMemoization < ::RuboCop::Cop::Base + # pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:94 + def on_and_asgn(node); end + + # pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:93 + def on_ivasgn(node); end + + # pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:87 + def on_op_asgn(node); end + + # pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:79 + def on_or_asgn(node); end +end + +# pkg:gem/rubocop-shopify#lib/rubocop/cop/lint/no_return_in_memoization.rb:77 +RuboCop::Cop::Lint::NoReturnInMemoization::MSG = T.let(T.unsafe(nil), String) + +# pkg:gem/rubocop-shopify#lib/rubocop/shopify/version.rb:4 +module RuboCop::Shopify; end + +# pkg:gem/rubocop-shopify#lib/rubocop/shopify/plugin.rb:7 +class RuboCop::Shopify::Plugin < ::LintRoller::Plugin + # pkg:gem/rubocop-shopify#lib/rubocop/shopify/plugin.rb:8 + def about; end + + # pkg:gem/rubocop-shopify#lib/rubocop/shopify/plugin.rb:21 + def rules(context); end + + # pkg:gem/rubocop-shopify#lib/rubocop/shopify/plugin.rb:17 + def supported?(context); end +end + +# pkg:gem/rubocop-shopify#lib/rubocop/shopify/version.rb:5 +RuboCop::Shopify::VERSION = T.let(T.unsafe(nil), String)