class RuboCop::Cop::Style::MutableConstant

CONST = [1, 2, 3].freeze
# good
CONST = [1, 2, 3]
# bad
@example
mutable literal (e.g. array or hash).
This cop checks whether some constant value isn’t a

def autocorrect(node)

def autocorrect(node)
  expr = node.source_range
  lambda do |corrector|
    if node.array_type? && !node.bracketed?
      corrector.insert_before(expr, '[')
      corrector.insert_after(expr, '].freeze')
    else
      corrector.insert_after(expr, '.freeze')
    end
  end
end

def on_assignment(value)

def on_assignment(value)
  value = splat_value(value) if splat_value(value)
  return unless value && value.mutable_literal?
  return if FROZEN_STRING_LITERAL_TYPES.include?(value.type) &&
            frozen_string_literals_enabled?
  add_offense(value)
end

def on_casgn(node)

def on_casgn(node)
  _scope, _const_name, value = *node
  on_assignment(value)
end

def on_or_asgn(node)

def on_or_asgn(node)
  lhs, value = *node
  return unless lhs && lhs.casgn_type?
  on_assignment(value)
end