Merge pull request #18367 from Homebrew/skip-sorbet-assignments
Exclude sorbet assignments from Style/MutableConstant cop
This commit is contained in:
		
						commit
						06f60ffaf3
					
				@ -10,14 +10,10 @@ class PATH
 | 
			
		||||
 | 
			
		||||
  delegate each: :@paths
 | 
			
		||||
 | 
			
		||||
  # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
  # rubocop:disable Style/MutableConstant
 | 
			
		||||
  Element = T.type_alias { T.nilable(T.any(Pathname, String, PATH)) }
 | 
			
		||||
  private_constant :Element
 | 
			
		||||
  Elements = T.type_alias { T.any(Element, T::Array[Element]) }
 | 
			
		||||
  private_constant :Elements
 | 
			
		||||
  # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
  sig { params(paths: Elements).void }
 | 
			
		||||
  def initialize(*paths)
 | 
			
		||||
    @paths = parse(paths)
 | 
			
		||||
 | 
			
		||||
@ -10,11 +10,7 @@ module Cask
 | 
			
		||||
 | 
			
		||||
    requires_ancestor { Kernel }
 | 
			
		||||
 | 
			
		||||
    # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
    # rubocop:disable Style/MutableConstant
 | 
			
		||||
    Paths = T.type_alias { T.any(String, Pathname, T::Array[T.any(String, Pathname)]) }
 | 
			
		||||
    # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
    sig { params(paths: Paths, permissions_str: String).void }
 | 
			
		||||
    def set_permissions(paths, permissions_str)
 | 
			
		||||
      full_paths = remove_nonexistent(paths)
 | 
			
		||||
 | 
			
		||||
@ -6,16 +6,12 @@ require "ostruct"
 | 
			
		||||
module Homebrew
 | 
			
		||||
  module CLI
 | 
			
		||||
    class Args < OpenStruct
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      # Represents a processed option. The array elements are:
 | 
			
		||||
      #   0: short option name (e.g. "-d")
 | 
			
		||||
      #   1: long option name (e.g. "--debug")
 | 
			
		||||
      #   2: option description (e.g. "Print debugging information")
 | 
			
		||||
      #   3: whether the option is hidden
 | 
			
		||||
      OptionsType = T.type_alias { T::Array[[String, T.nilable(String), String, T::Boolean]] }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
      sig { returns(T::Array[String]) }
 | 
			
		||||
      attr_reader :options_only, :flags_only
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -13,10 +13,7 @@ require "utils/formatter"
 | 
			
		||||
module Homebrew
 | 
			
		||||
  module CLI
 | 
			
		||||
    class Parser
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      ArgType = T.type_alias { T.any(NilClass, Symbol, T::Array[String], T::Array[Symbol]) }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
      HIDDEN_DESC_PLACEHOLDER = "@@HIDDEN@@"
 | 
			
		||||
      SYMBOL_TO_USAGE_MAPPING = T.let({
 | 
			
		||||
        text_or_regex: "<text>|`/`<regex>`/`",
 | 
			
		||||
 | 
			
		||||
@ -5,8 +5,6 @@ require "test_runner_formula"
 | 
			
		||||
require "github_runner"
 | 
			
		||||
 | 
			
		||||
class GitHubRunnerMatrix
 | 
			
		||||
  # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
  # rubocop:disable Style/MutableConstant
 | 
			
		||||
  RunnerSpec = T.type_alias { T.any(LinuxRunnerSpec, MacOSRunnerSpec) }
 | 
			
		||||
  private_constant :RunnerSpec
 | 
			
		||||
 | 
			
		||||
@ -36,8 +34,6 @@ class GitHubRunnerMatrix
 | 
			
		||||
 | 
			
		||||
  RunnerSpecHash = T.type_alias { T.any(LinuxRunnerSpecHash, MacOSRunnerSpecHash) }
 | 
			
		||||
  private_constant :RunnerSpecHash
 | 
			
		||||
  # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
  sig { returns(T::Array[GitHubRunner]) }
 | 
			
		||||
  attr_reader :runners
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@ require_relative "../extend/array"
 | 
			
		||||
require_relative "../extend/blank"
 | 
			
		||||
require_relative "blank"
 | 
			
		||||
require_relative "compact_blank"
 | 
			
		||||
require_relative "extend/mutable_constant_exclude_unfreezable"
 | 
			
		||||
require_relative "io_read"
 | 
			
		||||
require_relative "move_to_extend_os"
 | 
			
		||||
require_relative "negate_include"
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,45 @@
 | 
			
		||||
# typed: strict
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require "rubocop/cop/style/mutable_constant"
 | 
			
		||||
 | 
			
		||||
module RuboCop
 | 
			
		||||
  module Cop
 | 
			
		||||
    module Sorbet
 | 
			
		||||
      # TODO: delete this file when https://github.com/Shopify/rubocop-sorbet/pull/256 is available
 | 
			
		||||
      module MutableConstantExcludeUnfreezable
 | 
			
		||||
        class << self
 | 
			
		||||
          sig { params(base: RuboCop::AST::NodePattern::Macros).void }
 | 
			
		||||
          def prepended(base)
 | 
			
		||||
            base.def_node_matcher(:t_let, <<~PATTERN)
 | 
			
		||||
              (send (const nil? :T) :let $_constant _type)
 | 
			
		||||
            PATTERN
 | 
			
		||||
 | 
			
		||||
            base.def_node_matcher(:t_type_alias?, <<~PATTERN)
 | 
			
		||||
              (block (send (const {nil? cbase} :T) :type_alias ...) ...)
 | 
			
		||||
            PATTERN
 | 
			
		||||
 | 
			
		||||
            base.def_node_matcher(:type_member?, <<~PATTERN)
 | 
			
		||||
              (block (send nil? :type_member ...) ...)
 | 
			
		||||
            PATTERN
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        sig { params(value: RuboCop::AST::Node).void }
 | 
			
		||||
        def on_assignment(value)
 | 
			
		||||
          T.unsafe(self).t_let(value) do |constant|
 | 
			
		||||
            value = T.let(constant, RuboCop::AST::Node)
 | 
			
		||||
          end
 | 
			
		||||
          return if T.unsafe(self).t_type_alias?(value)
 | 
			
		||||
          return if T.unsafe(self).type_member?(value)
 | 
			
		||||
 | 
			
		||||
          super
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
RuboCop::Cop::Style::MutableConstant.prepend(
 | 
			
		||||
  RuboCop::Cop::Sorbet::MutableConstantExcludeUnfreezable,
 | 
			
		||||
)
 | 
			
		||||
@ -13,12 +13,8 @@ module Tapioca
 | 
			
		||||
        end.flatten.freeze, T::Array[String]
 | 
			
		||||
      )
 | 
			
		||||
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      Parsable = T.type_alias { T.any(T.class_of(Homebrew::CLI::Args), T.class_of(Homebrew::AbstractCommand)) }
 | 
			
		||||
      ConstantType = type_member { { fixed: Parsable } }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
      sig { override.returns(T::Enumerable[Parsable]) }
 | 
			
		||||
      def self.gather_constants
 | 
			
		||||
        # require all the commands to ensure the command subclasses are defined
 | 
			
		||||
 | 
			
		||||
@ -7,10 +7,7 @@ require "env_config"
 | 
			
		||||
module Tapioca
 | 
			
		||||
  module Compilers
 | 
			
		||||
    class EnvConfig < Tapioca::Dsl::Compiler
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      ConstantType = type_member { { fixed: Module } }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
      sig { override.returns(T::Enumerable[Module]) }
 | 
			
		||||
      def self.gather_constants = [Homebrew::EnvConfig]
 | 
			
		||||
 | 
			
		||||
@ -8,13 +8,9 @@ require_relative "../../../rubocops"
 | 
			
		||||
module Tapioca
 | 
			
		||||
  module Compilers
 | 
			
		||||
    class RuboCop < Tapioca::Dsl::Compiler
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      # This should be a module whose singleton class contains RuboCop::AST::NodePattern::Macros,
 | 
			
		||||
      #   but I don't know how to express that in Sorbet.
 | 
			
		||||
      ConstantType = type_member { { fixed: Module } }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
      sig { override.returns(T::Enumerable[Module]) }
 | 
			
		||||
      def self.gather_constants
 | 
			
		||||
        all_modules.select do |klass|
 | 
			
		||||
 | 
			
		||||
@ -7,10 +7,7 @@ require "utils/tty"
 | 
			
		||||
module Tapioca
 | 
			
		||||
  module Compilers
 | 
			
		||||
    class Tty < Tapioca::Dsl::Compiler
 | 
			
		||||
      # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
      # rubocop:disable Style/MutableConstant
 | 
			
		||||
      ConstantType = type_member { { fixed: Module } }
 | 
			
		||||
      # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
      sig { override.returns(T::Enumerable[Module]) }
 | 
			
		||||
      def self.gather_constants = [::Tty]
 | 
			
		||||
 | 
			
		||||
@ -11,10 +11,7 @@ module UnpackStrategy
 | 
			
		||||
 | 
			
		||||
  requires_ancestor { Kernel }
 | 
			
		||||
 | 
			
		||||
  # FIXME: Enable cop again when https://github.com/sorbet/sorbet/issues/3532 is fixed.
 | 
			
		||||
  # rubocop:disable Style/MutableConstant
 | 
			
		||||
  UnpackStrategyType = T.type_alias { T.all(T::Class[UnpackStrategy], UnpackStrategy::ClassMethods) }
 | 
			
		||||
  # rubocop:enable Style/MutableConstant
 | 
			
		||||
 | 
			
		||||
  module ClassMethods
 | 
			
		||||
    extend T::Helpers
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user