diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanPrivateInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanPrivateInspection.kt index c5544a59e06..7f3e77dbab8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanPrivateInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/MemberVisibilityCanPrivateInspection.kt @@ -77,6 +77,8 @@ class MemberVisibilityCanPrivateInspection : AbstractKotlinInspection() { } val classOrObject = declaration.containingClassOrObject ?: return false + if (classOrObject.isAnnotation()) return false + val inheritable = classOrObject is KtClass && classOrObject.isInheritable() if (!inheritable && declaration.hasModifier(KtTokens.PROTECTED_KEYWORD)) return false //reported by ProtectedInFinalInspection if (declaration.isOverridable()) return false diff --git a/idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/annotation.kt b/idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/annotation.kt new file mode 100644 index 00000000000..99ddbfdc0df --- /dev/null +++ b/idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/annotation.kt @@ -0,0 +1,9 @@ +// WITH_RUNTIME +// ERROR: Body is not allowed for annotation class +// PROBLEM: none + +annotation class Ann(val x: String) { + fun foo() { + println(x) + } +} \ 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 ffe41c59c79..bb1999735de 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -1022,6 +1022,12 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/annotation.kt"); + doTest(fileName); + } + @TestMetadata("JvmFieldOnParameter.kt") public void testJvmFieldOnParameter() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/JvmFieldOnParameter.kt");