# frozen_string_literal: true module RuboCop module Cop module Lint # Checks for interpolation in a single quoted string. # # @safety # This cop's autocorrection is unsafe because although it always replaces single quotes as # if it were miswritten double quotes, it is not always the case. For example, # `'#{foo} bar'` would be replaced by `"#{foo} bar"`, so the replaced code would evaluate # the expression `foo`. # # @example # # # bad # foo = 'something with #{interpolation} inside' # # # good # foo = "something with #{interpolation} inside" class InterpolationCheck < Base extend AutoCorrector MSG = 'Interpolation in single quoted string detected. ' \ 'Use double quoted strings if you need interpolation.' # rubocop:disable Metrics/CyclomaticComplexity def on_str(node) return if node.parent&.regexp_type? return unless /(?