diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt index 12825ac795b..a033a95477e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantVisibilityModifierInspection.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.KtPropertyAccessor import org.jetbrains.kotlin.psi.declarationVisitor import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject +import org.jetbrains.kotlin.psi.psiUtil.isPrivate import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi @@ -42,7 +43,9 @@ class RedundantVisibilityModifierInspection : AbstractKotlinInspection(), Cleanu val redundantVisibility = when { visibilityModifier.node.elementType == implicitVisibility -> implicitVisibility - declaration.hasModifier(KtTokens.INTERNAL_KEYWORD) && declaration.containingClassOrObject?.isLocal == true -> + declaration.hasModifier(KtTokens.INTERNAL_KEYWORD) && declaration.containingClassOrObject?.let { + it.isLocal || it.isPrivate() + } == true -> KtTokens.INTERNAL_KEYWORD else -> null diff --git a/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt b/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt new file mode 100644 index 00000000000..9cea07d7af6 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt @@ -0,0 +1,3 @@ +private class Foo { + internal fun bar() {} +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt.after b/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt.after new file mode 100644 index 00000000000..b5f07278a94 --- /dev/null +++ b/idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt.after @@ -0,0 +1,3 @@ +private class Foo { + fun bar() {} +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 2dbfaf32f28..dc475210388 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -8046,6 +8046,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/inspectionsLocal/redundantVisibilityModifier"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true); } + @TestMetadata("internalInPrivateClass.kt") + public void testInternalInPrivateClass() throws Exception { + runTest("idea/testData/inspectionsLocal/redundantVisibilityModifier/internalInPrivateClass.kt"); + } + @TestMetadata("overridePropertySetter.kt") public void testOverridePropertySetter() throws Exception { runTest("idea/testData/inspectionsLocal/redundantVisibilityModifier/overridePropertySetter.kt");