Redundant visibility modifier: do not report for 'internal' inside 'private'

#KT-35639 Fixed
This commit is contained in:
Toshiaki Kameyama
2019-12-24 12:25:31 +09:00
committed by Dmitry Gridin
parent 49e5f170d1
commit 03ec76b570
4 changed files with 15 additions and 1 deletions
@@ -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
@@ -0,0 +1,3 @@
private class Foo {
<caret>internal fun bar() {}
}
@@ -0,0 +1,3 @@
private class Foo {
fun bar() {}
}
@@ -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");