From 29dba9edb32c8db62917d6d30340aea8d6444ff4 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Mon, 31 Jul 2017 23:01:35 +0900 Subject: [PATCH] Do not report "property can be private" in annotations #KT-19273 Fixed --- .../inspections/MemberVisibilityCanPrivateInspection.kt | 2 ++ .../memberVisibilityCanBePrivate/annotation.kt | 9 +++++++++ .../idea/inspections/LocalInspectionTestGenerated.java | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 idea/testData/inspectionsLocal/memberVisibilityCanBePrivate/annotation.kt 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");