Class: RuboCop::Cop::Style::RedundantInterpolationUnfreeze
- Extended by:
- AutoCorrector, TargetRubyVersion
- Includes:
- FrozenStringLiteral
- Defined in:
- lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb
Overview
Before Ruby 3.0, interpolated strings followed the frozen string literal magic comment which sometimes made it necessary to explicitly unfreeze them. Ruby 3.0 changed interpolated strings to always be unfrozen which makes unfreezing them redundant.
Constant Summary collapse
- MSG =
"Don't unfreeze interpolated strings as they are already unfrozen."
Constants included from FrozenStringLiteral
FrozenStringLiteral::FROZEN_STRING_LITERAL_ENABLED
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
Methods included from TargetRubyVersion
maximum_target_ruby_version, minimum_target_ruby_version, required_maximum_ruby_version, required_minimum_ruby_version, support_target_ruby_version?
Methods included from FrozenStringLiteral
frozen_string_literal?, frozen_string_literal_comment_exists?, frozen_string_literal_specified?, frozen_string_literals_disabled?, frozen_string_literals_enabled?, leading_comment_lines, leading_magic_comments, uninterpolated_heredoc?, uninterpolated_string?
Methods inherited from Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
cop_dir_for, #exclude_limit, read_limits
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_dstr(node) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb', line 41 def on_dstr(node) return if uninterpolated_string?(node) || uninterpolated_heredoc?(node) return unless redundant_unfreeze?(node.parent) add_offense(offense_range(node.parent)) do |corrector| corrector.replace(node.parent, node.source) end end |
#redundant_unfreeze?(node) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb', line 34 def_node_matcher :redundant_unfreeze?, <<~PATTERN { (send dstr_type? {:+@ :dup}) (send (const nil? :String) :new dstr_type?) } PATTERN |