From 8cb0b2d30f5e80fdd7daf4f8515b96bd1283d0a9 Mon Sep 17 00:00:00 2001 From: Koichi ITO Date: Tue, 3 Sep 2019 19:10:14 +0900 Subject: [PATCH] [Fix #7326] Fix a false positive for `Style/AccessModifierDeclarations` Fixes #7326. This PR fixes a false positive for `Style/AccessModifierDeclarations` when access modifier name is used for hash literal value. --- CHANGELOG.md | 1 + .../cop/style/access_modifier_declarations.rb | 1 + .../style/access_modifier_declarations_spec.rb | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index de70466714e..dd9b935319f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ * [#5788](https://github.com/rubocop-hq/rubocop/issues/5788): Allow block arguments on separate lines if line would be too long in `Layout/MultilineBlockLayout`. ([@jonas054][]) * [#7305](https://github.com/rubocop-hq/rubocop/issues/7305): Register `Style/BlockDelimiters` offense when block result is assigned to an attribute. ([@mvz][]) * [#4802](https://github.com/rubocop-hq/rubocop/issues/4802): Don't leave any `Lint/UnneededCopEnableDirective` offenses undetected/uncorrected. ([@jonas054][]) +* [#7326](https://github.com/rubocop-hq/rubocop/issues/7326): Fix a false positive for `Style/AccessModifierDeclarations` when access modifier name is used for hash literal value. ([@koic][]) ### Changes diff --git a/lib/rubocop/cop/style/access_modifier_declarations.rb b/lib/rubocop/cop/style/access_modifier_declarations.rb index 5152b2d6d4b..8c82c47b6c4 100644 --- a/lib/rubocop/cop/style/access_modifier_declarations.rb +++ b/lib/rubocop/cop/style/access_modifier_declarations.rb @@ -63,6 +63,7 @@ class AccessModifierDeclarations < Cop def on_send(node) return unless node.access_modifier? + return if node.parent.pair_type? if offense?(node) add_offense(node, location: :selector) do diff --git a/spec/rubocop/cop/style/access_modifier_declarations_spec.rb b/spec/rubocop/cop/style/access_modifier_declarations_spec.rb index 0433cc2511a..2c5adac5ef7 100644 --- a/spec/rubocop/cop/style/access_modifier_declarations_spec.rb +++ b/spec/rubocop/cop/style/access_modifier_declarations_spec.rb @@ -3,6 +3,17 @@ RSpec.describe RuboCop::Cop::Style::AccessModifierDeclarations, :config do subject(:cop) { described_class.new(config) } + shared_examples 'always accepted' do |access_modifier| + it 'accepts when #{access_modifier} is a hash literal value' do + expect_no_offenses(<<~RUBY) + class Foo + foo + bar(key: #{access_modifier}) + end + RUBY + end + end + context 'when `group` is configured' do let(:cop_config) do { @@ -47,6 +58,8 @@ class Test end RUBY end + + include_examples 'always accepted', access_modifier end end @@ -93,6 +106,8 @@ def foo; end end RUBY end + + include_examples 'always accepted', access_modifier end end end