diff --git a/changelog/fix_an_incorrect_autocorrect_for_lint_literal_in_interpolation.md b/changelog/fix_an_incorrect_autocorrect_for_lint_literal_in_interpolation.md new file mode 100644 index 00000000000..24c03f7c5ce --- /dev/null +++ b/changelog/fix_an_incorrect_autocorrect_for_lint_literal_in_interpolation.md @@ -0,0 +1 @@ +* [#10944](https://github.com/rubocop/rubocop/issues/10944): Fix an incorrect autocorrect for `Lint/LiteralInInterpolation` when using `"#{nil}"`. ([@koic][]) diff --git a/lib/rubocop/cop/lint/literal_in_interpolation.rb b/lib/rubocop/cop/lint/literal_in_interpolation.rb index f5d65666cf4..638258c2612 100644 --- a/lib/rubocop/cop/lint/literal_in_interpolation.rb +++ b/lib/rubocop/cop/lint/literal_in_interpolation.rb @@ -58,6 +58,7 @@ def special_keyword?(node) (node.str_type? && !node.loc.respond_to?(:begin)) || node.source_range.is?('__LINE__') end + # rubocop:disable Metrics/MethodLength def autocorrected_value(node) case node.type when :int @@ -70,10 +71,13 @@ def autocorrected_value(node) autocorrected_value_for_symbol(node) when :array autocorrected_value_for_array(node) + when :nil + '' else node.source.gsub('"', '\"') end end + # rubocop:enable Metrics/MethodLength def autocorrected_value_for_string(node) if node.source.start_with?("'", '%q') diff --git a/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb b/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb index a400f7b1cff..dab28f49ce0 100644 --- a/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb +++ b/spec/rubocop/cop/lint/literal_in_interpolation_spec.rb @@ -102,7 +102,7 @@ it_behaves_like('literal interpolation', '{"a" => "b"}', '{\"a\" => \"b\"}') it_behaves_like('literal interpolation', true) it_behaves_like('literal interpolation', false) - it_behaves_like('literal interpolation', 'nil') + it_behaves_like('literal interpolation', 'nil', '') it_behaves_like('literal interpolation', ':symbol', 'symbol') it_behaves_like('literal interpolation', ':"symbol"', 'symbol') it_behaves_like('literal interpolation', 1..2)